Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,6 @@ jobs:
uses: jlumbroso/free-disk-space@v1.3.1
with:
tool-cache: false
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GHCR
Expand Down
6 changes: 0 additions & 6 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,6 @@ jobs:
uses: jlumbroso/free-disk-space@v1.3.1
with:
tool-cache: false
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true
- name: KVM Linux Virtualization
if: runner.os == 'Linux'
run: |
Expand Down
10 changes: 4 additions & 6 deletions .github/workflows/nix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,10 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@v1.3.1
with:
tool-cache: false
- name: Install Nix
uses: cachix/install-nix-action@v31
with:
Expand All @@ -74,12 +78,6 @@ jobs:
uses: jlumbroso/free-disk-space@v1.3.1
with:
tool-cache: false
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true
- name: Install Nix
uses: cachix/install-nix-action@v31
with:
Expand Down
19 changes: 16 additions & 3 deletions home-manager/packages/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
pkgs,
inputs,
}:
let
isCI = builtins.getEnv "CI" != "";
in
Comment on lines +5 to +7

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.

with pkgs;
[
inputs.agenix.packages.${stdenv.hostPlatform.system}.default
Expand All @@ -13,8 +16,8 @@ with pkgs;
argocd
ast-grep
bat
btop
bun
clipse
cloudflared
curl
curlie
Expand All @@ -31,6 +34,7 @@ with pkgs;
fzf-make
gh
git
gnumake
goose-cli
grc
htop
Expand Down Expand Up @@ -69,12 +73,21 @@ with pkgs;
++ lib.optionals stdenv.isLinux [
atop
below
claude-code
codex
collectd
docker
docker-compose
ffmpeg
gemini-cli
kubernetes-helm
powertop
]
++ lib.optionals (stdenv.isLinux && !isCI) [
blueberry
chromium
claude-code
codex
github-desktop
opencode
Comment on lines +82 to 90

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

signal-desktop
vlc
]
69 changes: 69 additions & 0 deletions home-manager/programs/btop/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
{
# 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 = ";

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.

@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

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

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 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.
Comment on lines +43 to +44

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.

@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

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 = ";

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.

@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

net_download = 100;
net_upload = 100;
net_auto = true;
net_sync = true;
net_iface = ";
Comment on lines +43 to +63

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 = "";

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.

@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_battery = true;
selected_battery = "Auto";
log_level = "WARNING";
};
};
Comment on lines +1 to +68

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.

}
2 changes: 2 additions & 0 deletions home-manager/programs/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ let
atuin = import ./atuin;
bash = import ./bash { inherit lib pkgs; };
bat = import ./bat;
btop = import ./btop;
delta = import ./delta;
direnv = import ./direnv;
fd = import ./fd;
Expand Down Expand Up @@ -35,6 +36,7 @@ in
atuin
bash
bat
btop
delta
direnv
fd
Expand Down
4 changes: 4 additions & 0 deletions home-manager/programs/direnv/default.nix
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
{
programs.direnv = {
enable = true;
enableBashIntegration = true;
# enableFishIntegration = true;
enableZshIntegration = true;
nix-direnv.enable = true;
Comment on lines +4 to +7

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.

};
}
4 changes: 2 additions & 2 deletions home-manager/programs/zsh/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
{ lib, pkgs, ... }:
{
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

enableCompletion = true;
autosuggestion.enable = true;
syntaxHighlighting.enable = true;
Expand All @@ -17,7 +17,7 @@
extended = true;
};

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.

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.

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.

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

@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

# Initialize Starship
eval "$(starship init zsh)"

Expand Down
Loading