Skip to content

Conversation

@Frost-Phoenix
Copy link
Contributor

@Frost-Phoenix Frost-Phoenix commented Sep 12, 2025

This pr resolves two build failures when using the nix flake.

flake inputs

Some pkgs where outdated, thus causing a build failure.
Fixed by updating the flake.lock file.

Check phase

After building the pkg, the tests are ran in the check phase. This phase failed because it required some pkgs that the flake was not providing: zoxide and exiftool.
Fixed by adding those pkgs to the nativeCheckInputs.

Summary by CodeRabbit

  • Chores

    • Updated build/check dependencies for the superfile package, adding additional tools to the validation environment. This affects development and CI only and does not alter runtime behavior or the user experience.
  • Tests

    • Expanded the check environment with supplementary tools used during package checks. No user-facing changes.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Sep 12, 2025

Walkthrough

Expands packages.superfile.nativeCheckInputs in flake.nix from a single hook to include zoxide and exiftool alongside writableTmpDirAsHomeHook, using a with pkgs; scope.

Changes

Cohort / File(s) Summary of modifications
Nix flake configuration
flake.nix
Broadened packages.superfile.nativeCheckInputs from [ pkgs.writableTmpDirAsHomeHook ] to with pkgs; [ zoxide exiftool writableTmpDirAsHomeHook ]

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor Dev as Developer
  participant Nix as Nix Evaluator
  participant Build as superfile Build
  participant Ck as nativeCheckInputs

  Dev->>Nix: nix build .#packages.superfile
  Nix->>Build: Evaluate derivation
  Build->>Ck: Resolve nativeCheckInputs
  Note right of Ck: zoxide<br/>exiftool<br/>writableTmpDirAsHomeHook
  Ck-->>Build: Provide check-time tools/hooks
  Build-->>Dev: Build/check completes
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested labels

awaiting pr review

Suggested reviewers

  • yorukot

Pre-merge checks (3 passed)

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The PR title "fix(nix): resolve build failures in the nix flake" is concise, directly describes the primary intent (fixing build failures in the Nix flake) and matches the changes in the PR (updating flake.lock and adding nativeCheckInputs such as zoxide and exiftool), so it clearly communicates the main change to reviewers.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.

Poem

I hop through flakes with nimble might,
Adding tools to checks at night—
Zoxide, exif’s careful sight,
A writable home to make it right.
Thump-thump! The build now gleams so bright. 🐇✨

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
  pre_merge_checks:
    custom_checks:
      - name: "Undocumented Breaking Changes"
        mode: "warning"
        instructions: |
          Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.

✨ Finishing touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a 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.

❤️ Share

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

Copy link
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)
flake.nix (1)

52-66: Add test-only tools to the devShell for parity

Include zoxide and exiftool in the devShell so contributors can run tests locally without missing binaries.

   packages = with pkgs; [
     ## golang
     delve
     go-outline
     go
     golangci-lint
     gopkgs
     gopls
     gotools
     nix
     gomod2nix
     nixpkgs-fmt
+    zoxide
+    exiftool
   ];
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8b31697 and 3b764c1.

⛔ Files ignored due to path filters (1)
  • flake.lock is excluded by !**/*.lock
📒 Files selected for processing (1)
  • flake.nix (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). (1)
  • GitHub Check: Build and Test (windows-latest)
🔇 Additional comments (1)
flake.nix (1)

34-38: LGTM: correct use of nativeCheckInputs for test-only tools

Adding zoxide and exiftool here is the right fix for the checkPhase; scoping with with pkgs; is fine and consistent.

Copy link
Collaborator

@lazysegtree lazysegtree left a comment

Choose a reason for hiding this comment

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

image

@lazysegtree
Copy link
Collaborator

@Frost-Phoenix I dont know much about nix.

Could you please provide an successful output of running the commands to build and spf via nix.

Just to keep as a reference befor merging this PR.

@Frost-Phoenix
Copy link
Contributor Author

$ nix --version
nix (Nix) 2.28.5

First build failure

This one is caused by outdated packages.
fixed in f15f4e6

small output
$ nix build .
error: builder for '/nix/store/h7v6lq5079smvg8fhzqhdsdjn1bp2fch-superfile-1.3.3.drv' failed with exit code 1;
       last 10 log lines:
       > Running phase: unpackPhase
       > unpacking source archive /nix/store/7m040rv22mgk09bgk0y5nkrxnyj38ds3-bpi1s269raw1f6bwyk3h6a2drs7aqxw6-source
       > source root is bpi1s269raw1f6bwyk3h6a2drs7aqxw6-source
       > Running phase: patchPhase
       > Running phase: updateAutotoolsGnuConfigScriptsPhase
       > Running phase: configurePhase
       > Running phase: buildPhase
       > Building subPackage .
       > go: downloading go1.25.0 (linux/amd64)
       > go: download go1.25.0 for linux/amd64: toolchain not available
       For full logs, run:
         nix log /nix/store/h7v6lq5079smvg8fhzqhdsdjn1bp2fch-superfile-1.3.3.drv

Second build failure

This one is caused by missing pkgs (zoxide and exiftool) in the check phase.
fixed in 3b764c1

small output
$ nix build .
error: builder for '/nix/store/0mxaj9hbspg5dwx3pn1xyrzgh2yg1hpc-superfile-1.3.3.drv' failed with exit code 1;
       last 25 log lines:
       > time=2025-09-13T08:39:07.659Z level=ERROR msg="Error while read superfile data" error="open /build/.home/.local/share/superfile/pinned.json: no such file or directory"
       > === RUN   TestChooserFile/Open_with_file_editor_with_Invalid_chooser_file
       > time=2025-09-13T08:39:07.660Z level=ERROR msg="Error while read superfile data" error="open /build/.home/.local/share/superfile/pinned.json: no such file or directory"
       > time=2025-09-13T08:39:07.661Z level=INFO msg="Using default terminal cell size" os=linux
       > time=2025-09-13T08:39:07.661Z level=INFO msg="Terminal cell size detection" pixels_per_column=10 pixels_per_row=20
       > time=2025-09-13T08:39:07.661Z level=DEBUG msg="model.Update() called" msgType=tea.WindowSizeMsg
       > time=2025-09-13T08:39:07.661Z level=ERROR msg="Error while read superfile data" error="open /build/.home/.local/share/superfile/pinned.json: no such file or directory"
       > time=2025-09-13T08:39:07.662Z level=DEBUG msg="Submitting file preview render request" id=0 path=/build/spf_testdir/TestChooserFile/dir1/file1.txt
       > time=2025-09-13T08:39:07.662Z level=DEBUG msg="model.Update() called" msgType=tea.KeyMsg
       > time=2025-09-13T08:39:07.662Z level=DEBUG msg=model.handleKeyInput msg=e typestr=runes runes=[101] type=-1 paste=false alt=false
       > time=2025-09-13T08:39:07.662Z level=DEBUG msg="model.handleKeyInput. model info. " filePanelFocusIndex=0 filePanel.isFocused=true filePanel.panelMode=browserMode typingModal.open=false notifyModel.open=false promptModal.open=false fileModel.renaming=false searchBar.focussed=false helpMenu.open=false firstTextInput=false focusPanel=nonePanelFocus
       > time=2025-09-13T08:39:07.662Z level=ERROR msg="Error while writing to chooser file, continuing with open via file editor" error="open /build/spf_testdir/TestChooserFile/non_existent_dir/file.txt: no such file or directory"
       > time=2025-09-13T08:39:07.662Z level=ERROR msg="Error while read superfile data" error="open /build/.home/.local/share/superfile/pinned.json: no such file or directory"
       > --- PASS: TestChooserFile (0.02s)
       >     --- PASS: TestChooserFile/Open_with_default_app_with_valid_chooser_file (0.00s)
       >     --- PASS: TestChooserFile/Open_with_file_editor_with_valid_chooser_file (0.00s)
       >     --- PASS: TestChooserFile/Open_with_directory_editor_valid_chooser_file (0.00s)
       >     --- PASS: TestChooserFile/Open_with_file_editor_with_Blank_chooser_file (0.00s)
       >     --- PASS: TestChooserFile/Open_with_file_editor_with_Invalid_chooser_file (0.00s)
       > === RUN   TestZoxide
       >     model_test.go:258: zoxide initialization failed
       > --- FAIL: TestZoxide (0.00s)
       > FAIL
       > FAIL    github.com/yorukot/superfile/src/internal       0.846s
       > FAIL
       For full logs, run:
         nix log /nix/store/0mxaj9hbspg5dwx3pn1xyrzgh2yg1hpc-superfile-1.3.3.drv

New output

After the two fixes, the build is succesful.

output
$ nix build .
# no output, superfile builds successfully 

@lazysegtree

@lazysegtree lazysegtree merged commit a07eac0 into yorukot:main Sep 13, 2025
9 checks passed
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Oct 15, 2025
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [yorukot/superfile](https://github.com/yorukot/superfile) | minor | `v1.3.3` -> `v1.4.0` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>yorukot/superfile (yorukot/superfile)</summary>

### [`v1.4.0`](https://github.com/yorukot/superfile/releases/tag/v1.4.0)

[Compare Source](yorukot/superfile@v1.3.3...v1.4.0)

Hey folks. Releasing v1.4.0 with many new features, improvements, and bug fixes.

We have an async file preview now, a zoxide panel, and various new features improving UX.

#### Install:

[**Click me to know how to install**](https://github.com/yorukot/superfile?tab=readme-ov-file#installation)

#### Highlights

- We have the Zoxide Panel now. Ensure zoxide is installed on your system, set `zoxide_support` to `true` in the config, and press `z` to use zoxide. <img width="645" height="295" alt="Image" src="https://github.com/user-attachments/assets/238f6549-5318-49d1-a3a0-14cf8a686955" />

- File previewing is now async, meaning reduced lag while scrolling through images, or on slow systems.

- Many bug fixes. See 'Detailed Change Summary'

##### Internal Updates

- Most file operations are now truly async with the usage of the recommended `tea.Cmd` pattern.
- Enabled many new linters to improve code quality.
- Moved golangci-lint to v2. Now developers don't need to keep the old v1 in their systems.
- Refactored file preview in its own package for better maintainability and readability.
- Fixed flaky unit tests.

#### Detailed Change Summary

<details><summary>Details</summary>
<p>

##### Update
- feat: File operation via tea cmd [#&#8203;963](yorukot/superfile#963) by @&#8203;lazysegtree
- feat: processbar improvements, package separation, better channel management [#&#8203;973](yorukot/superfile#973) by @&#8203;lazysegtree
- feat: enable lll and recvcheck linter, fix tests, more refactors [#&#8203;977](yorukot/superfile#977) by @&#8203;lazysegtree
- feat: Remove channel for notification models [#&#8203;979](yorukot/superfile#979) by @&#8203;lazysegtree
- feat: enable cyclop, funlen, gocognit, gocyclo linters, and refactor large functions [#&#8203;984](yorukot/superfile#984) by @&#8203;lazysegtree
- feat: Add a new hotkey to handle cd-on-quit whenever needed [#&#8203;924](yorukot/superfile#924) by @&#8203;ahmed-habbachi
- feat: added option to permanently delete files [#&#8203;987](yorukot/superfile#987) by @&#8203;hupender
- feat: Preview panel separation [#&#8203;1021](yorukot/superfile#1021) by @&#8203;lazysegtree
- feat: Add search functionality to help menu [#&#8203;1011](yorukot/superfile#1011) by @&#8203;iZarrios
- feat: Use zoxide lib [#&#8203;1036](yorukot/superfile#1036) by @&#8203;lazysegtree
- feat: Add zoxide directory tracking on navigation [#&#8203;1041](yorukot/superfile#1041) by @&#8203;lazysegtree
- feat: Zoxide integration [#&#8203;1039](yorukot/superfile#1039) by @&#8203;lazysegtree
- feat: Select mode with better feedback [#&#8203;1074](yorukot/superfile#1074) by @&#8203;lazysegtree
- feat: owner/group in the metadata [#&#8203;1093](yorukot/superfile#1093) by @&#8203;xelavopelk
- feat: Async zoxide [#&#8203;1104](yorukot/superfile#1104) by @&#8203;lazysegtree

##### Bug Fix
- fix: sorting in searchbar [#&#8203;985](yorukot/superfile#985) by @&#8203;hupender
- fix: Async rendering, Include clipboard check in paste items, and update linter configs [#&#8203;997](yorukot/superfile#997) by @&#8203;lazysegtree
- fix: Move utility functions to utils package [#&#8203;1012](yorukot/superfile#1012) by @&#8203;lazysegtree
- fix: Refactoring and separation of preview panel and searchbar in help menu [#&#8203;1013](yorukot/superfile#1013) by @&#8203;lazysegtree
- fix(filePanel): allow focusType to be set correctly [#&#8203;1033](yorukot/superfile#1033) by @&#8203;faisal-990
- fix(ci): Update gomod2nix.toml, allow pre release in version output, release 1.4.0-rc1, bug fixes, and improvements [#&#8203;1054](yorukot/superfile#1054) by @&#8203;lazysegtree
- fix(nix): resolve build failures in the nix flake [#&#8203;1068](yorukot/superfile#1068) by @&#8203;Frost-Phoenix
- fix: Retry the file deletion to prevent flakies (#&#8203;938) [#&#8203;1076](yorukot/superfile#1076) by @&#8203;lazysegtree
- fix(issue-1066): Fixed issue where enter was not searchable [#&#8203;1078](yorukot/superfile#1078) by @&#8203;Simpaqt
- fix(#&#8203;1073): Tech debt fix [#&#8203;1077](yorukot/superfile#1077) by @&#8203;Simpaqt
- fix: fix deleted directory not able to remove from pins (#&#8203;1067) [#&#8203;1081](yorukot/superfile#1081) by @&#8203;yorukot
- fix: fix child process spawning attached [#&#8203;1084](yorukot/superfile#1084) by @&#8203;guemidiborhane
- fix: always clear images when showing a FullScreenStyle [#&#8203;1094](yorukot/superfile#1094) by @&#8203;snikoletopoulos
- fix: Allow j and k keys in zoxide [#&#8203;1102](yorukot/superfile#1102) by @&#8203;lazysegtree
- fix: Zoxide improvements and 1.4.0-rc2 [#&#8203;1105](yorukot/superfile#1105) by @&#8203;lazysegtree
- fix: rename cursor beginning on wrong character because of multiple dots in name (#&#8203;813) [#&#8203;1112](yorukot/superfile#1112) by @&#8203;SyedAsadK
- fix: check and fix file panel scroll position on height changes [#&#8203;1095](yorukot/superfile#1095) by @&#8203;snikoletopoulos

##### Optimization
- perf(website): optimize font loading and asset organization [#&#8203;1089](yorukot/superfile#1089) by @&#8203;yorukot

##### Documentation
- docs: fix incorrect zoxide plugin config name [#&#8203;1049](yorukot/superfile#1049) by @&#8203;shree-xvi
- docs(hotkeys): Fix typo in vimHotkeys.toml comments [#&#8203;1080](yorukot/superfile#1080) by @&#8203;wleoncio
- docs: add section for core maintainers in README.md [#&#8203;1088](yorukot/superfile#1088) by @&#8203;yorukot
- chore: add winget install instruction to readme and website [#&#8203;943](yorukot/superfile#943) by @&#8203;claykom

##### Dependencies
- chore(deps): update dependency go to v1.25.0, golangci-lint to v2, golangci-lint actions to v8 [#&#8203;750](yorukot/superfile#750) by @&#8203;renovate[bot]
- chore(deps): update amannn/action-semantic-pull-request action to v6 [#&#8203;1006](yorukot/superfile#1006) by @&#8203;renovate[bot]
- chore(deps): update actions/first-interaction action to v3 [#&#8203;1005](yorukot/superfile#1005) by @&#8203;renovate[bot]
- chore(deps): update actions/checkout action to v5 [#&#8203;1004](yorukot/superfile#1004) by @&#8203;renovate[bot]
- chore(deps): bump astro from 5.10.1 to 5.12.8 [#&#8203;982](yorukot/superfile#982) by @&#8203;dependabot[bot]
- fix(deps): update module golang.org/x/mod to v0.27.0 [#&#8203;989](yorukot/superfile#989) by @&#8203;renovate[bot]
- fix(deps): update dependency @&#8203;expressive-code/plugin-collapsible-sections to v0.41.3 [#&#8203;990](yorukot/superfile#990) by @&#8203;renovate[bot]
- fix(deps): update dependency sharp to v0.34.3 [#&#8203;992](yorukot/superfile#992) by @&#8203;renovate[bot]
- fix(deps): update dependency @&#8203;expressive-code/plugin-line-numbers to v0.41.3 [#&#8203;991](yorukot/superfile#991) by @&#8203;renovate[bot]
- chore(deps): update dependency go to v1.25.0 [#&#8203;994](yorukot/superfile#994) by @&#8203;renovate[bot]
- fix(deps): update astro monorepo [#&#8203;995](yorukot/superfile#995) by @&#8203;renovate[bot]
- fix(deps): update dependency @&#8203;astrojs/starlight to ^0.35.0 [#&#8203;1000](yorukot/superfile#1000) by @&#8203;renovate[bot]
- fix(deps): update module github.com/urfave/cli/v3 to v3.4.1 [#&#8203;1001](yorukot/superfile#1001) by @&#8203;renovate[bot]
- fix(deps): update module golang.org/x/text to v0.28.0 [#&#8203;1003](yorukot/superfile#1003) by @&#8203;renovate[bot]

##### Misc
- chore: migrate from superfile.netlify.app to superfile.dev [#&#8203;1087](yorukot/superfile#1087) by @&#8203;yorukot
- refactor(filepanel): replace filePanelFocusType with isFocused boolean [#&#8203;1040](yorukot/superfile#1040) by @&#8203;faisal-990
- refactor(ansi): Migrate from github.com/charmbracelet/x/exp/term/ansi to github.com/charmbracelet/x/ansi [#&#8203;1044](yorukot/superfile#1044) by @&#8203;faisal-990
- refactor: common operation on pinned directory file using PinnedManager [#&#8203;1085](yorukot/superfile#1085) by @&#8203;Manaswa-S
- test: unit tests for pinned manager [#&#8203;1090](yorukot/superfile#1090) by @&#8203;Manaswa-S

</p>
</details> 

#### New Contributors
* @&#8203;hupender made their first contribution in yorukot/superfile#985
* @&#8203;ahmed-habbachi made their first contribution in yorukot/superfile#924
* @&#8203;iZarrios made their first contribution in yorukot/superfile#1011
* @&#8203;faisal-990 made their first contribution in yorukot/superfile#1033
* @&#8203;shree-xvi made their first contribution in yorukot/superfile#1049
* @&#8203;Simpaqt made their first contribution in yorukot/superfile#1078
* @&#8203;wleoncio made their first contribution in yorukot/superfile#1080
* @&#8203;guemidiborhane made their first contribution in yorukot/superfile#1084
* @&#8203;Manaswa-S made their first contribution in yorukot/superfile#1085
* @&#8203;xelavopelk made their first contribution in yorukot/superfile#1093
* @&#8203;snikoletopoulos made their first contribution in yorukot/superfile#1094
* @&#8203;SyedAsadK made their first contribution in yorukot/superfile#1112

**Full Changelog**: <yorukot/superfile@v1.3.3...v1.4.0>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNDYuMCIsInVwZGF0ZWRJblZlciI6IjQxLjE0Ni4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
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