Skip to content

Update package configurations and fix Zsh settings - #345

Merged
shunkakinoki merged 13 commits into
mainfrom
chore-update-btop
Nov 15, 2025
Merged

Update package configurations and fix Zsh settings#345
shunkakinoki merged 13 commits into
mainfrom
chore-update-btop

Conversation

@shunkakinoki

@shunkakinoki shunkakinoki commented Nov 14, 2025

Copy link
Copy Markdown
Owner

Enhance package configurations by adding btop and adjusting default and optional packages. Fix Zsh settings to enable the program and update initialization content. Comment out unnecessary integration settings in direnv.


Summary by cubic

Add btop as a managed Home Manager program, enable Zsh and direnv integrations, and streamline packages by moving desktop utilities to Linux-only optional packages and excluding them in CI. This reduces default bloat and improves shell and CI reliability.

  • New Features

    • Manage btop via home-manager/programs/btop with a tuned configuration.
    • Enable Zsh and direnv, including Bash/Zsh integration and nix-direnv.
  • Refactors

    • Restructure packages: add clipse and gnumake; move ffmpeg, powertop, blueberry, chromium, github-desktop, signal-desktop, vlc to Linux-only optional; remove btop from default packages; gate select GUI apps behind !CI.
    • Tidy Zsh config: switch to initContent and comment out Fish integration.
    • Add free-disk-space step in Nix workflow and simplify the action usage in Docker and E2E workflows.

Written for commit d962580. Summary will update automatically on new commits.

Copilot AI review requested due to automatic review settings November 14, 2025 01:30
@shunkakinoki
shunkakinoki enabled auto-merge (squash) November 14, 2025 01:30
@shunkakinoki shunkakinoki self-assigned this Nov 14, 2025
@coderabbitai

coderabbitai Bot commented Nov 14, 2025

Copy link
Copy Markdown

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 clipboard manager, GNU Make, FFmpeg, and desktop applications to the package collection
    • Enabled Zsh shell by default with restructured configuration
    • Enhanced direnv with Bash and Zsh shell integrations
  • Chores

    • Optimized GitHub Actions workflows with improved disk space management

Walkthrough

Adds a dedicated home-manager module for btop, removes btop from the package list, adds/adjusts several packages with Linux- and CI-guards, enables Zsh and extends direnv integrations, and simplifies Free Disk Space inputs in multiple GitHub Actions workflows.

Changes

Cohort / File(s) Summary
Packages list
home-manager/packages/default.nix
Removed btop; added clipse, gnumake; added Linux-conditional packages: ffmpeg, powertop, and (when not CI) blueberry, chromium, claude-code, codex, github-desktop, signal-desktop, vlc. Introduced isCI guard.
New btop module
home-manager/programs/btop/default.nix
Added new programs.btop home-manager module with comprehensive default settings for UI, theming, metrics, disks, network, temps, battery, and logging.
Programs registry
home-manager/programs/default.nix
Imported and exported btop (btop = import ./btop; and added to exported programs list).
Direnv module
home-manager/programs/direnv/default.nix
Added public attributes: enableBashIntegration, enableZshIntegration, and nix-direnv.enable (set true).
Zsh module
home-manager/programs/zsh/default.nix
Set programs.zsh.enable = true; renamed initExtrainitContent (content preserved).
CI workflows
.github/workflows/nix.yml, .github/workflows/docker.yml, .github/workflows/e2e.yml
Inserted/updated "Free Disk Space (Ubuntu)" step (jlumbroso/free-disk-space@v1.3.1) and removed several feature flags (android, dotnet, haskell, large-packages, docker-images, swap-storage), leaving tool-cache: false.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant Repo
  participant HM as Home-Manager
  participant CI as GitHub Actions
  participant User

  rect rgba(102,153,204,0.06)
    Repo->>Repo: add programs/btop/default.nix\nmodify packages/default.nix (remove btop, add packages, add isCI)
    Repo->>Repo: update programs/default.nix and direnv/zsh modules
    Repo->>Repo: adjust Free Disk Space steps in workflows
  end

  rect rgba(102,204,153,0.06)
    User->>HM: home-manager build/apply
    HM->>HM: load programs registry (includes new btop module)
    HM-->>User: apply btop configuration and program settings
  end

  rect rgba(204,153,102,0.06)
    CI->>Repo: checkout
    CI->>CI: run Free Disk Space step (tool-cache: false)
    CI->>CI: install Nix and continue jobs
  end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20–30 minutes

  • Areas needing attention:
    • home-manager/programs/btop/default.nix: validate keys against upstream home-manager btop schema.
    • home-manager/packages/default.nix: ensure package removal/addition and new isCI guard don’t break other references.
    • home-manager/programs/zsh/default.nix: confirm rename initExtrainitContent matches used home-manager version.
    • CI workflow edits: verify removal of Free Disk Space flags doesn't regress job behavior.

Possibly related PRs

Suggested labels

codex

Poem

🐰 I hopped from package pile to my btop lair,
Crafted little widgets, graphs, and themed flair.
Zsh wakes with spring, direnv joins the tune,
CI cleared some space — config hums in the moon. 🥕

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main changes: updating package configurations and fixing Zsh settings, which matches the primary objectives of the PR.
Description check ✅ Passed The description is related to the changeset and details the primary refactors and new features being introduced, including package restructuring, Zsh/direnv updates, and workflow improvements.
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 chore-update-btop

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.

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @shunkakinoki, I'm Gemini Code Assist1! 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 refines the system's package management and shell configurations. It updates the list of installed packages, introduces a detailed configuration for the "btop" system monitor, and corrects Zsh settings to ensure proper functionality. Additionally, "direnv" integration with various shells has been explicitly defined.

Highlights

  • Package Management Updates: Modified "home-manager/packages/default.nix" to remove "btop" from default packages, add "clipse" and "gnumake", and introduce several new Linux-specific applications like "blueberry", "chromium", "ffmpeg", "github-desktop", "powertop", "signal-desktop", and "vlc".
  • btop Configuration: Introduced a dedicated "home-manager" configuration for "btop" in "home-manager/programs/btop/default.nix", enabling the program and setting various detailed display and behavior options.
  • Zsh Configuration Fixes: Enabled Zsh by setting "programs.zsh.enable" to "true" and updated the initialization method from "initExtra" to "initContent" in "home-manager/programs/zsh/default.nix".
  • direnv Integration Adjustments: Configured "direnv" to explicitly enable Bash and Zsh integration, and also enabled "nix-direnv" in "home-manager/programs/direnv/default.nix". A commented line for Fish integration was also added.
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 👍 and 👎 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.

Footnotes

  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.

@mesa-dot-dev

mesa-dot-dev Bot commented Nov 14, 2025

Copy link
Copy Markdown

Mesa Description

TL;DR

This PR updates Home Manager configurations by adding btop as a managed program, refining package lists, and improving Zsh and direnv shell integrations.

What changed?

  • home-manager/packages/default.nix: Removed btop from general packages; added clipse and gnumake generally; moved blueberry, chromium, ffmpeg, github-desktop, powertop, signal-desktop, and vlc to Linux-specific optional packages.
  • home-manager/programs/btop/default.nix: Introduced a new Home Manager module to enable and configure btop with settings for vim_keys, truecolor, rounded_corners, graph_symbol, shown_boxes, update_ms, process sorting, and display options.
  • home-manager/programs/default.nix: Integrated the new btop module into the overall Home Manager programs configuration.
  • home-manager/programs/direnv/default.nix: Updated direnv to enable Bash and Zsh shell integration and activate the nix-direnv plugin.
  • home-manager/programs/zsh/default.nix: Enabled Zsh and migrated its Starship initialization content from initExtra to the initContent option.

Description generated by Mesa. Update settings

@gemini-code-assist gemini-code-assist Bot left a comment

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.

Code Review

This pull request updates package configurations, adds btop as a home-manager program, and enables zsh. The changes are generally good, but I've found a few issues. There are critical syntax errors in the new btop configuration that will prevent the configuration from building. I've also noticed a minor package sorting issue and a redundancy in the shell integration for direnv. My review includes suggestions to fix these issues.

Comment on lines +43 to +63
custom_cpu_name = ";
disks_filter = ";
mem_graphs = true;
mem_below_net = false;
zfs_arc_cached = true;
show_swap = true;
swap_disk = true;
show_disks = true;
only_physical = true;
use_fstab = true;
zfs_hide_datasets = false;
disk_free_priv = false;
show_io_stat = true;
io_mode = false;
io_graph_combined = false;
io_graph_speeds = ";
net_download = 100;
net_upload = 100;
net_auto = true;
net_sync = true;
net_iface = ";

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.

critical

There are several syntax errors in this block. The string values for custom_cpu_name, disks_filter, io_graph_speeds, and net_iface are incorrectly terminated with a semicolon (;) instead of a double quote ("). This will cause the Nix evaluation to fail.

      custom_cpu_name = "";
      disks_filter = "";
      mem_graphs = true;
      mem_below_net = false;
      zfs_arc_cached = true;
      show_swap = true;
      swap_disk = true;
      show_disks = true;
      only_physical = true;
      use_fstab = true;
      zfs_hide_datasets = false;
      disk_free_priv = false;
      show_io_stat = true;
      io_mode = false;
      io_graph_combined = false;
      io_graph_speeds = "";
      net_download = 100;
      net_upload = 100;
      net_auto = true;
      net_sync = true;
      net_iface = "";

Comment on lines +84 to 85
powertop
opencode

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.

medium

To improve maintainability, the packages in this list should be kept in alphabetical order. opencode should come before powertop.

  opencode
  powertop

Comment on lines +4 to +7
enableBashIntegration = true;
# enableFishIntegration = true;
enableZshIntegration = true;
nix-direnv.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.

medium

Enabling enableBashIntegration and enableZshIntegration makes the manual direnv hooks in your bash and zsh configurations redundant. To keep the configuration clean and avoid potential issues, you should remove eval \"$(direnv hook bash)\" from home-manager/programs/bash/default.nix and eval \"$(direnv hook zsh)\" from home-manager/programs/zsh/default.nix.

};

initExtra = ''
initContent = ''

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.

medium

The initExtra option is deprecated in home-manager. You have correctly changed it to initContent. This is a good improvement for maintaining compatibility with future home-manager versions.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +43 to +44
custom_cpu_name = ";
disks_filter = ";

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P0 Badge Fix unterminated string literals in btop settings

The new btop module sets several options to "; (custom_cpu_name, disks_filter, io_graph_speeds, net_iface). Each is missing the closing quote for an empty string, so the file will not parse and Home Manager evaluation fails before any configuration can be applied. Replace them with valid string values such as ""; or remove the lines.

Useful? React with 👍 / 👎.

Copilot AI left a comment

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.

Pull Request Overview

This PR updates package configurations and fixes Zsh settings. The main changes include enabling Zsh, adding btop as a configured program instead of just a package, and adding several new Linux-specific packages. However, there are critical syntax errors that need to be fixed before this PR can be merged.

  • Enable Zsh and update its initialization configuration
  • Add btop as a configured program with comprehensive settings
  • Add new packages (clipse, gnumake) and Linux-specific packages (blueberry, chromium, ffmpeg, github-desktop, powertop, signal-desktop, vlc)

Reviewed Changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
home-manager/programs/zsh/default.nix Enables Zsh and updates initialization attribute (contains bug)
home-manager/programs/direnv/default.nix Adds shell integration settings for direnv
home-manager/programs/default.nix Imports and exports btop program configuration
home-manager/programs/btop/default.nix Adds comprehensive btop configuration (contains syntax errors)
home-manager/packages/default.nix Moves btop to programs, adds new default and Linux-specific packages

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

};

initExtra = ''
initContent = ''

Copilot AI Nov 14, 2025

Copy link

Choose a reason for hiding this comment

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

The attribute name initContent is incorrect for home-manager's zsh module. The correct attribute is initExtra. This change will cause a configuration error as initContent is not a recognized option for programs.zsh in home-manager.

Change this back to:

initExtra = ''
Suggested change
initContent = ''
initExtra = ''

Copilot uses AI. Check for mistakes.
show_cpu_freq = true;
clock_format = "%X";
background_update = true;
custom_cpu_name = ";

Copilot AI Nov 14, 2025

Copy link

Choose a reason for hiding this comment

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

Syntax error: The string value is not properly closed. This line should be:

custom_cpu_name = "";
Suggested change
custom_cpu_name = ";
custom_cpu_name = "";

Copilot uses AI. Check for mistakes.
clock_format = "%X";
background_update = true;
custom_cpu_name = ";
disks_filter = ";

Copilot AI Nov 14, 2025

Copy link

Choose a reason for hiding this comment

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

Syntax error: The string value is not properly closed. This line should be:

disks_filter = "";
Suggested change
disks_filter = ";
disks_filter = "";

Copilot uses AI. Check for mistakes.
show_io_stat = true;
io_mode = false;
io_graph_combined = false;
io_graph_speeds = ";

Copilot AI Nov 14, 2025

Copy link

Choose a reason for hiding this comment

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

Syntax error: The string value is not properly closed. This line should be:

io_graph_speeds = "";
Suggested change
io_graph_speeds = ";
io_graph_speeds = "";

Copilot uses AI. Check for mistakes.
net_upload = 100;
net_auto = true;
net_sync = true;
net_iface = ";

Copilot AI Nov 14, 2025

Copy link

Choose a reason for hiding this comment

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

Syntax error: The string value is not properly closed. This line should be:

net_iface = "";
Suggested change
net_iface = ";
net_iface = "";

Copilot uses AI. Check for mistakes.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
home-manager/programs/zsh/default.nix (1)

25-25: Remove redundant direnv hook - already handled by enableZshIntegration.

With enableZshIntegration = true set in home-manager/programs/direnv/default.nix (line 6), home-manager automatically injects the direnv hook. The manual eval "$(direnv hook zsh)" here creates a duplicate initialization.

Apply this diff to remove the redundant hook:

       eval "$(sheldon source)"
-      eval "$(direnv hook zsh)"
       eval "$(/opt/homebrew/bin/brew shellenv)"
📜 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 7aa6db8 and ae56d67.

📒 Files selected for processing (5)
  • home-manager/packages/default.nix (3 hunks)
  • home-manager/programs/btop/default.nix (1 hunks)
  • home-manager/programs/default.nix (2 hunks)
  • home-manager/programs/direnv/default.nix (1 hunks)
  • home-manager/programs/zsh/default.nix (2 hunks)
⏰ 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). (11)
  • GitHub Check: cubic · AI code reviewer
  • GitHub Check: Agent
  • GitHub Check: Mesa Review
  • GitHub Check: e2e-run (NixOS, ubuntu-latest)
  • GitHub Check: e2e-run (MacOS, macos-latest)
  • GitHub Check: e2e-run (Ubuntu, ubuntu-latest)
  • GitHub Check: docker-build-push (linux/arm64, arm64, ubuntu-24.04-arm)
  • GitHub Check: docker-build-push (linux/amd64, amd64, ubuntu-latest)
  • GitHub Check: nix-nixos
  • GitHub Check: nix-linux
  • GitHub Check: nix-darwin
🔇 Additional comments (5)
home-manager/programs/zsh/default.nix (1)

5-5: Enabling Zsh looks good.

The change to enable Zsh by default aligns with the PR objectives.

home-manager/programs/direnv/default.nix (1)

4-7: LGTM! Direnv integrations configured properly.

The Bash and Zsh integrations along with nix-direnv support are correctly configured using standard home-manager attributes.

home-manager/programs/default.nix (1)

10-10: LGTM! Module import follows the established pattern.

The btop module is properly imported and exported, maintaining alphabetical order and consistency with other program modules.

Also applies to: 39-39

home-manager/packages/default.nix (2)

17-17: Static package additions look good.

The additions of clipse and gnumake to the static package list are properly placed.

Also applies to: 34-34


73-87: I need to gather more information about the repository context and verify nixpkgs package availability. Let me examine the file and search for package information.

Let me examine the repository structure to see the actual file context:

Based on my web search findings, I can now provide the final response:

Review comment is addressed and no further action needed.

The blueberry package is available in nixpkgs, and the opencode package is also declared in nixpkgs. Additionally, the claude-code package is provided by upstream nixpkgs with a standard update cycle.

The other packages in the code snippet—including chromium, signal-desktop, docker, docker-compose, ffmpeg, and others—are all established, widely-used packages that are actively maintained in nixpkgs. While package availability can vary across different nixpkgs versions and channels (which is a normal characteristic of how nixpkgs versioning works), all the packages referenced in the snippet are documented as available in current nixpkgs releases.

The Linux-conditional placement using lib.optionals stdenv.isLinux is the correct approach for platform-specific packages.

Comment on lines +1 to +68
{
# From: https://github.com/henrysipp/omarchy-nix/blob/308e0f85a0deb820c01cfbe1b4faee1daab4da12/modules/home-manager/btop.nix
programs.btop = {
enable = true;
settings = {
theme_background = false;
truecolor = true;
force_tty = false;
vim_keys = true;
rounded_corners = true;
graph_symbol = "braille";
graph_symbol_cpu = "default";
graph_symbol_mem = "default";
graph_symbol_net = "default";
graph_symbol_proc = "default";
shown_boxes = "cpu mem net proc";
update_ms = 2000;
proc_sorting = "cpu lazy";
proc_reversed = false;
proc_tree = false;
proc_colors = true;
proc_gradient = false;
proc_per_core = false;
proc_mem_bytes = true;
proc_cpu_graphs = true;
proc_info_smaps = false;
proc_left = false;
cpu_graph_upper = "total";
cpu_graph_lower = "total";
cpu_invert_lower = true;
cpu_single_graph = false;
cpu_bottom = false;
show_uptime = true;
check_temp = true;
cpu_sensor = "Auto";
show_coretemp = true;
cpu_core_map = "";
temp_scale = "celsius";
base_10_sizes = false;
show_cpu_freq = true;
clock_format = "%X";
background_update = true;
custom_cpu_name = ";
disks_filter = ";
mem_graphs = true;
mem_below_net = false;
zfs_arc_cached = true;
show_swap = true;
swap_disk = true;
show_disks = true;
only_physical = true;
use_fstab = true;
zfs_hide_datasets = false;
disk_free_priv = false;
show_io_stat = true;
io_mode = false;
io_graph_combined = false;
io_graph_speeds = ";
net_download = 100;
net_upload = 100;
net_auto = true;
net_sync = true;
net_iface = ";
show_battery = true;
selected_battery = "Auto";
log_level = "WARNING";
};
};

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

❓ Verification inconclusive

Consider verifying btop configuration options.

The btop configuration contains extensive settings copied from a reference repository. While the structure looks correct (aside from the string literal issues), you may want to verify these settings match your preferred btop behavior.

Run this script to check the btop package and review available configuration options:


🏁 Script executed:

#!/bin/bash
# Description: Verify btop is available in nixpkgs and check for documentation

# Check if btop exists in nixpkgs
nix-env -qaP -A nixpkgs.btop

# Look for btop home-manager module documentation
fd -e nix btop | head -20

Length of output: 45


I'll search for documentation on Nix syntax to verify the string literal issues are indeed errors:

Fix critical syntax errors in btop configuration.

The btop settings contain unclosed string literals that will cause Nix evaluation to fail. In Nix, strings are enclosed between double quotes, and each of the following assignments is missing the opening quote:

  • custom_cpu_name = "; (should be custom_cpu_name = "";)
  • disks_filter = "; (should be disks_filter = "";)
  • io_graph_speeds = "; (should be io_graph_speeds = "";)
  • net_iface = "; (should be net_iface = "";)

These errors will prevent the module from loading. If these settings should have specific values, provide them; otherwise, use empty strings as shown above.

🤖 Prompt for AI Agents
In home-manager/programs/btop/default.nix around lines 1 to 68, several btop
string assignments have unclosed/missing quotes (custom_cpu_name, disks_filter,
io_graph_speeds, net_iface) which will break Nix evaluation; fix by closing the
string literals—either set them to proper values or to empty strings (e.g., ""),
ensuring each assignment uses a valid quoted string.

Comment on lines +43 to +44
custom_cpu_name = ";
disks_filter = ";

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Fix malformed string literals - missing opening quotes.

Several string settings have syntax errors with only a closing quote and semicolon. These will cause Nix evaluation to fail.

Apply this diff to fix the malformed strings:

       clock_format = "%X";
       background_update = true;
-      custom_cpu_name = ";
-      disks_filter = ";
+      custom_cpu_name = "";
+      disks_filter = "";
       mem_graphs = true;
       io_mode = false;
       io_graph_combined = false;
-      io_graph_speeds = ";
+      io_graph_speeds = "";
       net_download = 100;
       net_auto = true;
       net_sync = true;
-      net_iface = ";
+      net_iface = "";
       show_battery = true;

Also applies to: 58-58, 63-63

🤖 Prompt for AI Agents
In home-manager/programs/btop/default.nix around lines 43-44 (and also lines 58
and 63), several string assignments are malformed: they only have a closing
quote and semicolon (e.g. custom_cpu_name = ";). Fix each by providing the
missing opening quote and a valid string value (or an empty string ""), ensuring
the assignment uses proper Nix string syntax: key = "value";; update
custom_cpu_name, disks_filter, and the settings at lines 58 and 63 to use
complete quotes and valid values.

};

initExtra = ''
initContent = ''

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Incorrect attribute name - should be initExtra, not initContent.

The standard home-manager Zsh module attribute for shell initialization is initExtra, not initContent. This will cause the configuration to fail.

Apply this diff to fix the attribute name:

-    initContent = ''
+    initExtra = ''
📝 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
initContent = ''
initExtra = ''
🤖 Prompt for AI Agents
In home-manager/programs/zsh/default.nix around line 20, the attribute is
incorrectly named initContent; change this attribute to initExtra so it uses the
standard home-manager Zsh module option. Update the attribute key from
initContent to initExtra and ensure any surrounding quoting/indenting remains
consistent with the file.

@mesa-dot-dev mesa-dot-dev Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Performed full review of 7aa6db8...ae56d67

Analysis

  1. CRITICAL: Breaking Zsh Configuration - The change from initExtra to initContent uses a non-existent option in Home Manager's Zsh module that will cause build failures.

  2. Inconsistent Multi-Shell Strategy - The codebase enables Bash, Fish, and Zsh simultaneously without clear documentation or rationale, creating potential conflicts in login environments and shell integration priorities.

  3. Direnv Integration Inconsistency - Direnv integration is enabled for Bash and Zsh but commented out for Fish, despite Fish appearing to be the primary shell based on its extensive configuration.

  4. Package Management Redundancy - Programs like btop, bat, and delta exist in both the packages list and as dedicated program modules, creating confusion about where packages are officially managed and potential maintenance issues.

Tip

Help

Slash Commands:

  • /review - Request a full code review
  • /review latest - Review only changes since the last review
  • /describe - Generate PR description. This will update the PR body or issue comment depending on your configuration
  • /help - Get help with Mesa commands and configuration options

5 files reviewed | 2 comments | Edit Agent SettingsRead Docs

};

initExtra = ''
initContent = ''

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

High

The initContent option does not exist in Home Manager's programs.zsh module. This should be initExtra. Home Manager's zsh module only supports initExtra for custom initialization code, not initContent. This change will cause a configuration build error.

Reference: https://github.com/nix-community/home-manager/blob/master/modules/programs/zsh.nix

Agent: 🏛 Architecture • Fix in Cursor

{
programs.zsh = {
enable = false;
enable = true;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Medium

Enabling Zsh alongside Fish (which is already extensively configured with functions, completions, and shell integrations) creates potential conflicts. Multiple enabled shells can cause login shell priority issues, conflicting shell integrations, and environment variable initialization order problems. Consider clarifying which shell is primary or documenting if this is a migration path from Fish to Zsh.

Agent: 🏛 Architecture • Fix in Cursor

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

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)
.github/workflows/nix.yml (2)

83-92: Consider consolidating disk-space freeing logic to avoid duplication.

The identical Free Disk Space (Ubuntu) step appears in both nix-linux and nix-nixos jobs. If this pattern needs to be replicated across other Ubuntu jobs or becomes standard, consider extracting it as a reusable workflow or composite action to reduce duplication and maintenance burden.


59-68: The action exists and is correctly configured; consider disk-space optimization for other Ubuntu build jobs.

The jlumbroso/free-disk-space@v1.3.1 action is valid, and the configuration matches the action's input schema. However, nix-flake and nix-format are resource-intensive jobs (300-minute timeout, Nix operations) running on ubuntu-latest that lack the disk-freeing step present in nix-linux and nix-nixos. For consistency and robustness, these jobs could benefit from the same disk-space optimization—though this is optional if disk space constraints are specific to the build jobs.

📜 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 ae56d67 and f606a83.

📒 Files selected for processing (1)
  • .github/workflows/nix.yml (1 hunks)
⏰ 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). (8)
  • GitHub Check: docker-build-push (linux/amd64, amd64, ubuntu-latest)
  • GitHub Check: docker-build-push (linux/arm64, arm64, ubuntu-24.04-arm)
  • GitHub Check: nix-nixos
  • GitHub Check: nix-linux
  • GitHub Check: nix-darwin
  • GitHub Check: e2e-run (MacOS, macos-latest)
  • GitHub Check: e2e-run (NixOS, ubuntu-latest)
  • GitHub Check: e2e-run (Ubuntu, ubuntu-latest)

@cubic-dev-ai cubic-dev-ai Bot left a comment

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.

5 issues found across 5 files

Prompt for AI agents (all 5 issues)

Understand the root cause of the following 5 issues and fix them.


<file name="home-manager/programs/zsh/default.nix">

<violation number="1" location="home-manager/programs/zsh/default.nix:20">
Using `initContent` overwrites the default Zsh setup provided by Home Manager, which breaks the automatic integration for other programs. The integrations for `direnv`, `atuin`, and `lsd` will stop working. You should use `initExtra` to append to the configuration instead of replacing it.</violation>
</file>

<file name="home-manager/programs/btop/default.nix">

<violation number="1" location="home-manager/programs/btop/default.nix:43">
The string literal here is missing its closing quote, so the Nix module will fail to parse. Please close the string.</violation>

<violation number="2" location="home-manager/programs/btop/default.nix:44">
This assignment is missing the closing quote, leaving the string unterminated and breaking the configuration. Close the string literal.</violation>

<violation number="3" location="home-manager/programs/btop/default.nix:58">
The new `io_graph_speeds` value is missing the terminating quote, so the configuration will not parse. Close the string literal.</violation>

<violation number="4" location="home-manager/programs/btop/default.nix:63">
The `net_iface` assignment is missing the closing quote; as written it will break the module. Close the string literal.</violation>
</file>

React with 👍 or 👎 to teach cubic. Mention @cubic-dev-ai to give feedback, ask questions, or re-run the review.

};

initExtra = ''
initContent = ''

@cubic-dev-ai cubic-dev-ai Bot Nov 14, 2025

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.

Using initContent overwrites the default Zsh setup provided by Home Manager, which breaks the automatic integration for other programs. The integrations for direnv, atuin, and lsd will stop working. You should use initExtra to append to the configuration instead of replacing it.

Prompt for AI agents
Address the following comment on home-manager/programs/zsh/default.nix at line 20:

<comment>Using `initContent` overwrites the default Zsh setup provided by Home Manager, which breaks the automatic integration for other programs. The integrations for `direnv`, `atuin`, and `lsd` will stop working. You should use `initExtra` to append to the configuration instead of replacing it.</comment>

<file context>
@@ -17,7 +17,7 @@
     };
 
-    initExtra = &#39;&#39;
+    initContent = &#39;&#39;
       # Initialize Starship
       eval &quot;$(starship init zsh)&quot;
</file context>
Fix with Cubic

show_cpu_freq = true;
clock_format = "%X";
background_update = true;
custom_cpu_name = ";

@cubic-dev-ai cubic-dev-ai Bot Nov 14, 2025

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.

The string literal here is missing its closing quote, so the Nix module will fail to parse. Please close the string.

Prompt for AI agents
Address the following comment on home-manager/programs/btop/default.nix at line 43:

<comment>The string literal here is missing its closing quote, so the Nix module will fail to parse. Please close the string.</comment>

<file context>
@@ -0,0 +1,69 @@
+      show_cpu_freq = true;
+      clock_format = &quot;%X&quot;;
+      background_update = true;
+      custom_cpu_name = &quot;;
+      disks_filter = &quot;;
+      mem_graphs = true;
</file context>
Suggested change
custom_cpu_name = ";
custom_cpu_name = "";
Fix with Cubic

net_upload = 100;
net_auto = true;
net_sync = true;
net_iface = ";

@cubic-dev-ai cubic-dev-ai Bot Nov 14, 2025

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.

The net_iface assignment is missing the closing quote; as written it will break the module. Close the string literal.

Prompt for AI agents
Address the following comment on home-manager/programs/btop/default.nix at line 63:

<comment>The `net_iface` assignment is missing the closing quote; as written it will break the module. Close the string literal.</comment>

<file context>
@@ -0,0 +1,69 @@
+      net_upload = 100;
+      net_auto = true;
+      net_sync = true;
+      net_iface = &quot;;
+      show_battery = true;
+      selected_battery = &quot;Auto&quot;;
</file context>
Suggested change
net_iface = ";
net_iface = "";
Fix with Cubic

show_io_stat = true;
io_mode = false;
io_graph_combined = false;
io_graph_speeds = ";

@cubic-dev-ai cubic-dev-ai Bot Nov 14, 2025

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.

The new io_graph_speeds value is missing the terminating quote, so the configuration will not parse. Close the string literal.

Prompt for AI agents
Address the following comment on home-manager/programs/btop/default.nix at line 58:

<comment>The new `io_graph_speeds` value is missing the terminating quote, so the configuration will not parse. Close the string literal.</comment>

<file context>
@@ -0,0 +1,69 @@
+      show_io_stat = true;
+      io_mode = false;
+      io_graph_combined = false;
+      io_graph_speeds = &quot;;
+      net_download = 100;
+      net_upload = 100;
</file context>
Suggested change
io_graph_speeds = ";
io_graph_speeds = "";
Fix with Cubic

clock_format = "%X";
background_update = true;
custom_cpu_name = ";
disks_filter = ";

@cubic-dev-ai cubic-dev-ai Bot Nov 14, 2025

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.

This assignment is missing the closing quote, leaving the string unterminated and breaking the configuration. Close the string literal.

Prompt for AI agents
Address the following comment on home-manager/programs/btop/default.nix at line 44:

<comment>This assignment is missing the closing quote, leaving the string unterminated and breaking the configuration. Close the string literal.</comment>

<file context>
@@ -0,0 +1,69 @@
+      clock_format = &quot;%X&quot;;
+      background_update = true;
+      custom_cpu_name = &quot;;
+      disks_filter = &quot;;
+      mem_graphs = true;
+      mem_below_net = false;
</file context>
Suggested change
disks_filter = ";
disks_filter = "";
Fix with Cubic

Copilot AI review requested due to automatic review settings November 15, 2025 22:59

Copilot AI left a comment

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.

Pull Request Overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated no new comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 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 f606a83 and d962580.

📒 Files selected for processing (4)
  • .github/workflows/docker.yml (0 hunks)
  • .github/workflows/e2e.yml (0 hunks)
  • .github/workflows/nix.yml (1 hunks)
  • home-manager/packages/default.nix (4 hunks)
💤 Files with no reviewable changes (2)
  • .github/workflows/docker.yml
  • .github/workflows/e2e.yml
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/nix.yml
⏰ 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). (9)
  • GitHub Check: Agent
  • GitHub Check: e2e-run (MacOS, macos-latest)
  • GitHub Check: e2e-run (Ubuntu, ubuntu-latest)
  • GitHub Check: e2e-run (NixOS, ubuntu-latest)
  • GitHub Check: docker-build-push (linux/arm64, arm64, ubuntu-24.04-arm)
  • GitHub Check: docker-build-push (linux/amd64, amd64, ubuntu-latest)
  • GitHub Check: nix-linux
  • GitHub Check: nix-nixos
  • GitHub Check: nix-darwin
🔇 Additional comments (4)
home-manager/packages/default.nix (4)

20-20: LGTM!

The clipse package is correctly positioned in alphabetical order.


37-37: LGTM!

The gnumake package is correctly positioned in alphabetical order.


73-83: LGTM!

The Linux-conditional package block is well-organized:

  • ffmpeg and other packages are correctly positioned alphabetically
  • The previous review concern about opencode and powertop ordering is resolved since they're now in separate conditional blocks

84-93: Good separation of CI-unnecessary packages.

The logic to exclude desktop applications and GUI tools from CI builds is sensible and will improve CI performance. The package list is correctly maintained in alphabetical order.

Note: This depends on the isCI implementation being fixed (see earlier comment about impurity).

Comment on lines +5 to +7
let
isCI = builtins.getEnv "CI" != "";
in

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Avoid impure builtins.getEnv for environment-dependent logic.

Using builtins.getEnv breaks Nix's reproducibility guarantees because it reads from the environment at evaluation time. This can cause:

  • Different evaluation results in different environments
  • Issues with Nix's binary cache and substitutes
  • Unpredictable behavior when the same expression is evaluated in different contexts

Consider passing isCI as a function parameter instead:

-let
-  isCI = builtins.getEnv "CI" != "";
-in
+{ pkgs, inputs, isCI ? false }:

Then pass the value from the calling module based on your build context. This maintains purity while achieving the same goal.

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In home-manager/packages/default.nix around lines 5 to 7, remove the impure
builtins.getEnv usage and instead make isCI a function argument (or attribute)
to the file/module; replace the let-bound isCI with an input parameter (e.g.
isCI ? false) and use that parameter throughout, then update any callers/imports
of this file to pass the CI value from their environment or configuration (so
evaluation stays pure) and remove any direct calls to builtins.getEnv in this
file.

@shunkakinoki
shunkakinoki merged commit 430d935 into main Nov 15, 2025
28 checks passed
@shunkakinoki
shunkakinoki deleted the chore-update-btop branch November 15, 2025 23:42
This was referenced Nov 28, 2025
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.

2 participants