Skip to content

refactor(base): use final for dep lookups in envfs overlay override#167

Merged
Bad3r merged 4 commits intomainfrom
refactor/envfs-final-deps
May 5, 2026
Merged

refactor(base): use final for dep lookups in envfs overlay override#167
Bad3r merged 4 commits intomainfrom
refactor/envfs-final-deps

Conversation

@Bad3r
Copy link
Copy Markdown
Owner

@Bad3r Bad3r commented May 4, 2026

Summary

  • Pulls the same `final`-for-deps idiom into `modules/base/envfs.nix` that is being applied to `librepods` / `marktext` in PR refactor(modules): extract shared customPackages overlay into flake.lib #166's shared `flake.lib.overlays.customPackages` overlay.
  • Within the `envfs` overlay's `prev.envfs.overrideAttrs` body, `fetchFromGitHub` and `rustPlatform.fetchCargoVendor` lookups now resolve through `final` instead of `prev`, so any other overlay that rebinds those builders is picked up via the fixpoint. The `prev.envfs.overrideAttrs` entry point stays on `prev` -- only the dep lookups inside the override body change.
  • Adds a comment recording the rationale (matches the comment style applied in PR refactor(modules): extract shared customPackages overlay into flake.lib #166 to the `librepods` and `marktext` overrides).

This was suggested as an out-of-scope follow-up by claude-review on PR #166 (run 25344427322).

Branch / merge order

This branch is based on `fix/tpnix-merge-conflict-markers` (PR #165) so that `nix flake check` evaluates -- without #165, the tree carries unresolved conflict markers in `modules/tpnix/custom-packages-overlay.nix` from the squash merge of #160. Land order: #165 -> #166 -> #167. Each PR rebases cleanly onto `main` once its predecessor lands.

The librepods / marktext `final`-for-deps adoption is intentionally not duplicated in this PR -- it is owned by #166, where the dedup refactor lifts those overrides into the shared `flake.lib.overlays.customPackages` definition with `final.*` already in place. Folding it in here would create a redundant churn that #166's dedup undoes.

Test plan

  • `nix flake check --accept-flake-config --no-build` reports `all checks passed!`
  • `envfs.drvPath` byte-identical pre vs. post: `/nix/store/f6npid91mdh5dpyxxbrn5wyzcn9dxf11-envfs-1.2.0.drv` -- the change is purely defensive (no overlay in either host closure currently rebinds `fetchFromGitHub` or `rustPlatform.fetchCargoVendor`).
  • Pre-commit hook chain (deadnix, statix, nix-parse, treefmt, gitleaks, managed-files-drift) all green.

Bad3r added 2 commits May 4, 2026 23:18
PR #160 squash-merged a state where `Merge branch 'main' into
feat/csec-tools` (22973ff) left literal conflict markers in
`modules/tpnix/custom-packages-overlay.nix:28,37,57`. The result is not
valid Nix syntax: `nix-instantiate --parse` rejects the file, the
`tpnix` host build is broken, and both the `wfuzz` (feat/csec-tools)
and `librepods` (main) overrides are mutually exclusive in that state.

Resolution mirrors the system76 sibling at
`modules/system76/custom-packages-overlay.nix`, which was resolved
correctly during the same merge: keep both blocks, since the wfuzz and
librepods overrides are independent. Verified with
`nix-instantiate --parse` and
`nix flake check --accept-flake-config --no-build`.

Reported by claude-code review on PR #160 (run 25340703466).
`modules/base/envfs.nix:13-34` pinned `envfs` to 1.2.0 with
dependency lookups (`prev.fetchFromGitHub`,
`prev.rustPlatform.fetchCargoVendor`) sourced from `prev`. Switch
those to `final.*` so any later overlay -- e.g. a future
`rustPlatform`/`fetchurl` patch overlay -- propagates into the
override instead of silently linking against the un-modified
upstream copy.

The `prev.envfs.overrideAttrs` entry point itself stays on `prev`
(it must extend the unmodified upstream attrs, not recurse through
the fixpoint). This is the same shape applied to `librepods` and
`marktext` in #166.

Comment updated above the overlay to record the rationale.

`envfs.drvPath` is byte-identical pre/post:
`/nix/store/f6npid91mdh5dpyxxbrn5wyzcn9dxf11-envfs-1.2.0.drv` -- no
overlay in either host closure currently rebinds `fetchFromGitHub`
or `rustPlatform.fetchCargoVendor`, so the change is purely
defensive against future overlay composition.

Validated with `nix flake check --accept-flake-config --no-build`
(all checks passed).

Suggested as an out-of-scope follow-up by claude-review on PR #166
(run 25344427322).
@claude
Copy link
Copy Markdown
Contributor

claude Bot commented May 4, 2026

Claude finished @Bad3r's task in 1m 53s —— View job


Code review


Verdict

The substantive envfs.nix change is correct, idiomatic, and well-motivated. The drvPath-equivalence claim is plausible (no host-loaded overlay currently rebinds fetchFromGitHub / rustPlatform.fetchCargoVendor). I have no blockers on the code, but the PR description contains factual issues worth fixing before merge, and there is a consistency gap with the stated motivation.


1. PR description references a file that does not exist

Adopts the same final-for-deps idiom in modules/base/envfs.nix that PR #166 applied to modules/base/custom-packages-overlay.nix (librepods, marktext).

modules/base/custom-packages-overlay.nix does not exist in this tree. The two custom-packages-overlay.nix files are:

  • modules/system76/custom-packages-overlay.nix
  • modules/tpnix/custom-packages-overlay.nix

Please correct the path in the description so reviewers can audit the precedent.

2. Stated precedent (librepods / marktext) does not match current code

PR description says #166 already applied the final-for-deps idiom to librepods and marktext. The current code on this branch contradicts that — both blocks still use prev.* for every dep lookup:

modules/tpnix/custom-packages-overlay.nix:39-55 (librepods, identical shape in system76):

librepods = prev.librepods.overrideAttrs (_old: rec {
  version = "0.2.5";
  src = prev.fetchFromGitHub { ... };          # still prev
  buildInputs = [
    prev.libpulseaudio                          # still prev
    prev.openssl
    prev.qt6.qtbase
    prev.qt6.qtconnectivity
    prev.qt6.qtdeclarative
    prev.qt6.qttools
  ];
});

modules/tpnix/custom-packages-overlay.nix:59-65 (marktext, identical in system76):

marktext = prev.marktext.overrideAttrs (old: {
  nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [
    prev."node-gyp"                             # still prev
  ];
  npm_config_node_gyp = "${prev."node-gyp"}/bin/node-gyp";
  NODE_GYP            = "${prev."node-gyp"}/bin/node-gyp";
});

Either the description's reference to #166 is wrong, or #166's idiom was reverted/never landed. Worth resolving before claiming consistency. If the intent is uniformity across all overlay overrides, the librepods and marktext blocks in both tpnix and system76 should be updated to read deps from final in the same way (currently final isn't even captured by their overlay heads — it is, since both files already start with (final: prev: ...), so this is a one-liner each per file).

Fix this →

3. envfs.nix change itself — looks correct

modules/base/envfs.nix:18-37:

  • _finalfinal and prev.fetchFromGitHub / prev.rustPlatform.fetchCargoVendorfinal.* are the standard nixpkgs overlay idiom for fixed-point dep resolution.
  • Keeping the entry point on prev.envfs.overrideAttrs is correct — using final.envfs.overrideAttrs here would create infinite recursion.
  • cargoDeps.src correctly uses final.fetchFromGitHub (matching the outer src).
  • The new comment block (lines 13-16) is helpful and correctly explains the divided role of final vs prev.

4. Comment wording — minor nit (non-blocking)

"any later overlay that rebinds them feeds into this build instead of being silently bypassed"

Strictly speaking, fixed-point evaluation in overlays does not depend on registration order — any overlay (earlier or later in the list) that rebinds fetchFromGitHub / rustPlatform.fetchCargoVendor will be observed via final. Consider rephrasing to "any other overlay" or "any overlay in the chain" to avoid implying ordering semantics. Not blocking — the surrounding context makes the intent clear.

5. Branch hygiene observation

git log origin/main..HEAD shows two commits on this branch:

  • d0bca28 fix(tpnix): resolve unresolved merge conflict markers in overlay
  • 10b0b23 refactor(base): use final for dep lookups in envfs overlay override

The first commit is presumably what #165 contains. The PR description states this branch is "stacked on #165's hotfix" and rebases cleanly once #165 lands — that matches what I see. Worth ensuring #165 lands first to keep the merged history clean (otherwise this PR will produce a redundant merge-resolution commit on main).


Summary

Area Status
envfs.nix code change OK — correct idiom, clear rationale comment
drvPath equivalence claim Plausible (no host-loaded overlay currently rebinds the touched builders)
PR description path reference Incorrect — path doesn't exist
Consistency with stated precedent Gap — librepods/marktext still use prev.*
Comment wording Minor nit (overlay order)
Branch / merge plan OK; depends on #165 landing first
• Branch: refactor/envfs-final-deps

Copy link
Copy Markdown

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

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 refactors the envfs overlay to use final for dependency lookups, ensuring that later overlays are correctly applied, and removes git merge conflict markers from the custom-packages-overlay.nix file. Feedback suggests deduplicating the source definition in the envfs overlay using a let binding to improve maintainability and updating other package overrides to use final for consistency across the configuration.

Comment thread modules/base/envfs.nix
Comment thread modules/tpnix/custom-packages-overlay.nix
The comment above the `envfs` overlay said "any later overlay that
rebinds them feeds into this build". That implied registration order
mattered. Nixpkgs overlays are evaluated as a single fixed point,
so any overlay (regardless of registration order) that rebinds the
referenced deps is observed via `final`. Reword to "any other overlay"
and add a parenthetical noting that ordering is irrelevant here.

Suggested by claude-review on PR #167 (run 25344637086).
@claude
Copy link
Copy Markdown
Contributor

claude Bot commented May 4, 2026

Claude finished @Bad3r's task in 2m 17s —— View job


Code review (follow-up after latest push)

  • Read changed files (modules/base/envfs.nix, modules/tpnix/custom-packages-overlay.nix)
  • Compare current state vs prior review (run 25344637086)
  • Verify PR description claims (drvPath equivalence, comment style, scoping)
  • Check for new issues introduced in latest push
  • Cross-check gemini-code-assist suggestions
  • Post final review

Verdict

Approving in spirit. The latest push (commit a61da18) and the rewritten PR description resolve the substantive concerns from my prior review. The remaining gaps (librepods/marktext still on prev.*; src duplication inside cargoDeps) are explicitly out of scope per the updated description and are correctly deferred to PR #166 / a future cleanup. Code is correct, comment is now accurate, and the change remains a pure no-op against the current overlay set.

I cannot run nix flake check or compute drvPath from this environment (no nix binary in the action runner), so the drvPath-equivalence claim is verified only by inspection — see §3 below.


1. Resolution of prior review items

Prior issue Status
(#1) PR description referenced a nonexistent modules/base/custom-packages-overlay.nix Fixed. New description references PR #166 and the librepods / marktext overrides without claiming an in-tree precedent file.
(#2) librepods / marktext still use prev.* despite stated precedent Resolved by scoping. PR description now explicitly states this is intentional and owned by #166 to avoid churn that #166's dedup refactor would undo. Reasonable.
(#3) envfs.nix change correctness Confirmed correct. See §3.
(#4) Comment wording implied overlay registration order matters Fixed in a61da18. Now reads "any other overlay" plus the explicit parenthetical: "overlay registration order is irrelevant here — the fixpoint observes all overlays". Accurate.
(#5) Branch hygiene — depends on #165 Still applies; merge order #165#166#167 is documented in the description.

2. Latest push (a61da18) — focused review

modules/base/envfs.nix:13-18 (new lines):

# Dep lookups (`fetchFromGitHub`, `rustPlatform.fetchCargoVendor`) go
# through `final` so any other overlay that rebinds them feeds into this
# build via the fixpoint instead of being silently bypassed (overlay
# registration order is irrelevant here — the fixpoint observes all
# overlays). The `prev.envfs.overrideAttrs` entry point stays on `prev`
# so we extend the unmodified upstream attrs.

This is a strict improvement over the prior wording. It correctly distinguishes the two roles of final vs prev and explicitly disclaims any ordering semantics. No further nits.

3. envfs.nix substantive change — re-verified

modules/base/envfs.nix:20-39:

  • _final: prev:final: prev: — required so final is in scope inside the override body. Correct.
  • prev.fetchFromGitHubfinal.fetchFromGitHub (line 23 and line 30) — standard fixpoint idiom. Correct.
  • prev.rustPlatform.fetchCargoVendorfinal.rustPlatform.fetchCargoVendor (line 29) — correct.
  • Entry point remains prev.envfs.overrideAttrs — correct (using final.envfs.overrideAttrs would recurse infinitely through the fixpoint).
  • The cargoDeps-inner src mirrors the outer src and resolves through final consistently — correct.

drvPath equivalence (by inspection): Neither modules/base/ nor either host overlay (modules/tpnix/custom-packages-overlay.nix, modules/system76/custom-packages-overlay.nix) currently rebinds fetchFromGitHub or rustPlatform.fetchCargoVendor. Under the current overlay set the fixpoint resolves final.fetchFromGitHub == prev.fetchFromGitHub here, so the two formulations produce identical derivations. The PR description's hash (/nix/store/f6npid91mdh5dpyxxbrn5wyzcn9dxf11-envfs-1.2.0.drv) is consistent with this. The change is a defensive no-op today and a correctness fix the moment any overlay rebinds either builder.

4. modules/tpnix/custom-packages-overlay.nix — conflict-marker cleanup

modules/tpnix/custom-packages-overlay.nix:25-55 (after change): The <<<<<<<, =======, >>>>>>> markers are gone; both the wfuzz and librepods blocks coexist correctly inside the same overlay. Comment block on lines 28-32 (wfuzz) and lines 37-38 (librepods) survives intact. This part of the PR is a clean, mechanical conflict resolution — nothing to flag. Note this is the same fix as #165, which is the documented dependency.

5. gemini-code-assist suggestions

  • Dedupe cargoDeps.src via let binding ([gemini comment on envfs.nix:30]): Valid observation — the inner src literally repeats the four owner/repo/rev/hash lines from the outer src. However this duplication pre-dates this PR and is structural, not part of the final-for-deps idiom. Folding it in here would expand the diff's scope. Acceptable to leave for a follow-up; if you do want to address it, the minimal form is:

    envfs = prev.envfs.overrideAttrs (_oldAttrs: let
      src = final.fetchFromGitHub {
        owner = "Mic92";
        repo = "envfs";
        rev = "1.2.0";
        hash = "sha256-hj/6zS9ebF0IDqgc1Dne59nWx80nk6jn2gj8BzQUFIQ=";
      };
    in {
      version = "1.2.0";
      inherit src;
      cargoDeps = final.rustPlatform.fetchCargoVendor {
        inherit src;
        hash = "sha256-dz3gpE464jnmSDsAsmJHcxUsEKeUURNoUjgGU2214Xg=";
      };
    });

    Optional follow-up: dedupe src

  • Apply final-for-deps to librepods/marktext ([gemini comment on tpnix/custom-packages-overlay.nix:36]): This is the same gap I flagged in §1.2. Already addressed by the PR's scoping decision; the change belongs in refactor(modules): extract shared customPackages overlay into flake.lib #166's shared flake.lib.overlays.customPackages.

6. Verification I could not perform here

  • nix flake check --accept-flake-config --no-build — no nix binary available in the action runner.
  • envfs.drvPath byte-equivalence pre/post — same reason.

The PR description states both pass; the static analysis above is consistent with that claim.


Summary

Area Status
envfs.nix code change OK — correct idiom
envfs.nix comment wording (post-a61da18) OK — no longer implies overlay order
Conflict-marker cleanup in tpnix/custom-packages-overlay.nix OK — clean mechanical resolution
PR description accuracy OK — corrected since prior review
Scoping (defer librepods/marktext to #166) OK — well-justified
cargoDeps.src duplication Pre-existing; optional follow-up
Local nix flake check / drvPath verification Not possible from this runner

No blockers from me. Once #165 lands and this rebases cleanly onto main, this is good to merge.

• Branch: refactor/envfs-final-deps

@Bad3r
Copy link
Copy Markdown
Owner Author

Bad3r commented May 4, 2026

Reply to first-round review (run 25344637086)

Thanks for the careful audit. Three findings; two adopted, one explained.

Adopted

# Finding Action
1 PR description references `modules/base/custom-packages-overlay.nix`, which doesn't exist in this branch's base Description rewritten. Now correctly explains that the precedent (`librepods` / `marktext` final-for-deps) lives in PR #166's shared `flake.lib.overlays.customPackages` definition, not on `main`/this branch.
4 Comment "any later overlay" implies overlay registration order matters Reworded in `a61da18a` to "any other overlay" with a parenthetical noting that the fixpoint is order-agnostic.

Acknowledged but deliberately not addressed in this PR

# Finding Why
2 `librepods` / `marktext` in the host overlay files still use `prev.*`; consistency gap with the stated motivation Those blocks are owned by PR #166 (the dedup refactor), where they are deleted from both host files and re-added with `final.`* in the new shared overlay. Mirroring the change in host files here would be undone by #166's dedup, producing pure churn. The merge order is #165 -> #166 -> #167; once all three land, every dep lookup in the overlay overrides flowing through both host closures uses `final`.
5 Branch carries the #165 hotfix commit Intentional -- without it, `nix flake check` won't evaluate (conflict markers in `modules/tpnix/custom-packages-overlay.nix`). The #165 commit drops cleanly when its parent PR lands first; the only net commit on `main` from this branch will be the envfs change.

Verified, no action

# Finding Status
3 `envfs.nix` change itself is idiomatic Confirmed: dep lookups via `final`, override entry on `prev` (so we don't recurse through the fixpoint), `cargoDeps.src` matches outer `src`.

Verification

  • `nix flake check --accept-flake-config --no-build`: `all checks passed!`
  • `envfs.drvPath` byte-identical pre vs. post: `/nix/store/f6npid91mdh5dpyxxbrn5wyzcn9dxf11-envfs-1.2.0.drv`
  • Pre-commit hook chain green

The `cargoDeps.src` argument inside the `envfs` override was an
exact duplicate of the outer `src` (same `owner` / `repo` / `rev` /
`hash`). Bind once via a `let` block inside the `overrideAttrs`
body and reuse via `inherit src;` at both call sites.

The four-line drift risk -- a future bump touching only one of the
two `src` literals -- is now structurally impossible.

`envfs.drvPath` is byte-identical pre/post:
`/nix/store/f6npid91mdh5dpyxxbrn5wyzcn9dxf11-envfs-1.2.0.drv`.

Suggested by gemini-code-assist on PR #167 (line 30 of `envfs.nix`)
and seconded by claude-review (run 25344831509).
@Bad3r
Copy link
Copy Markdown
Owner Author

Bad3r commented May 4, 2026

Reply to second-round review (run 25344831509)

Both gemini-code-assist threads resolved.

Adopted

# Suggestion Action
envfs.nix:30 `cargoDeps.src` duplication Bind `src` once in a `let` block inside `overrideAttrs`, reuse at outer `src` and `cargoDeps.src` via `inherit src;` `852332c2`. `envfs.drvPath` byte-identical: `/nix/store/f6npid91mdh5dpyxxbrn5wyzcn9dxf11-envfs-1.2.0.drv`. The four-line drift risk on a future version bump is structurally eliminated.

Acknowledged but covered elsewhere

# Suggestion Why deferred
`tpnix/custom-packages-overlay.nix:36` librepods/marktext on `prev.*` Owned by PR #166: those override blocks are deleted from both host files and re-added with `final.*` in the new `flake.lib.overlays.customPackages` shared definition. Mirroring here would create churn that #166's dedup undoes. Merge order #165 -> #166 -> #167 ensures the host-file gap closes.

Verification

Check Result
`nix flake check --accept-flake-config --no-build` `all checks passed!`
`envfs.drvPath` byte-identical pre/post both commits ✓ `/nix/store/f6npid91mdh5dpyxxbrn5wyzcn9dxf11-envfs-1.2.0.drv`
Pre-commit hook chain Green

Both gemini review threads resolved via the API.

@claude
Copy link
Copy Markdown
Contributor

claude Bot commented May 4, 2026

Claude finished @Bad3r's task in 1m 29s —— View job


Code review (third round, post-852332c)

  • Read latest changed files (modules/base/envfs.nix, modules/tpnix/custom-packages-overlay.nix)
  • Verify cargoDeps.src dedup applied correctly via let/inherit
  • Cross-check drvPath equivalence claim by static analysis
  • Confirm prior review threads are resolved
  • Post final verdict

Verdict

LGTM. The cargoDeps.src dedup landed cleanly in 852332c, the comment from a61da18 is accurate, and the conflict-marker cleanup in tpnix/custom-packages-overlay.nix is a clean mechanical resolution. No new issues introduced. The deferred items (librepods/marktext final-for-deps) are correctly scoped to PR #166. No blockers.

I cannot run nix flake check or compute drvPath from this Actions runner (no nix binary), so the equivalence claim is verified by inspection only — see §2.


1. cargoDeps.src dedup — 852332c

modules/base/envfs.nix:21-39:

envfs = prev.envfs.overrideAttrs (
  _oldAttrs:
  let
    src = final.fetchFromGitHub {
      owner = "Mic92";
      repo = "envfs";
      rev = "1.2.0";
      hash = "sha256-hj/6zS9ebF0IDqgc1Dne59nWx80nk6jn2gj8BzQUFIQ=";
    };
  in
  {
    version = "1.2.0";
    inherit src;
    cargoDeps = final.rustPlatform.fetchCargoVendor {
      inherit src;
      hash = "sha256-dz3gpE464jnmSDsAsmJHcxUsEKeUURNoUjgGU2214Xg=";
    };
  }
);
  • let src = final.fetchFromGitHub { … } — single source of truth for the four owner/repo/rev/hash lines. Future version bumps now touch one place.
  • inherit src; at both the outer attrs and inside cargoDeps — semantically identical to the prior duplicated literal, since fetchFromGitHub is a fixed-output derivation keyed entirely on its args. Same store path in both call sites.
  • The cargoDeps hash (the vendored cargo lockfile hash) correctly stays separate from the src hash — those are fundamentally different inputs and should not share a binding. No issue here.
  • _oldAttrs ignored and full attrs replaced — matches the prior shape; this is an upstream pin-style override, not an extension.

Structural drift risk on a future bump (touching rev/hash in only one of two literals) is now eliminated. Strict improvement.

2. drvPath equivalence — verified by inspection

PR description claims envfs.drvPath is byte-identical pre/post:
/nix/store/f6npid91mdh5dpyxxbrn5wyzcn9dxf11-envfs-1.2.0.drv

For final.fetchFromGitHub to resolve to a different builder than prev.fetchFromGitHub (which is what would change the drvPath), some overlay later in the fixpoint would need to rebind fetchFromGitHub (or rustPlatform.fetchCargoVendor). Static check across all overlays in the closure:

$ grep -rn -E '(fetchFromGitHub|fetchCargoVendor|rustPlatform)\s*=' modules/ packages/ \
    | grep -v '= final\.\|= prev\.\|= pkgs\.\|= super\.\|callPackage'
(no matches)

Every overlay in modules/{base,tpnix,system76,apps,meta} either uses these builders for lookups or doesn't touch them at all. No overlay rebinds them. Therefore under the current overlay set:

  • final.fetchFromGitHub == prev.fetchFromGitHub
  • final.rustPlatform.fetchCargoVendor == prev.rustPlatform.fetchCargoVendor

The two formulations produce identical derivations today. The change is a defensive no-op now and a correctness fix the moment any overlay rebinds either builder. The hash in the description is consistent with this analysis.

3. Comment accuracy (post-a61da18)

modules/base/envfs.nix:13-18 — wording correctly distinguishes the two roles of final vs prev and explicitly disclaims overlay registration order. No further nits.

4. modules/tpnix/custom-packages-overlay.nix conflict-marker cleanup

modules/tpnix/custom-packages-overlay.nix:25-55<<<<<<<, =======, >>>>>>> removed; wfuzz and librepods blocks coexist correctly. Pre-existing comments preserved. Mechanical. Same fix as PR #165 (the documented dependency).

5. Branch / merge plan

git log origin/main..HEAD:

852332c refactor(base): dedupe cargoDeps src in envfs overlay override
a61da18 docs(base): correct envfs overlay comment to not imply overlay order
10b0b23 refactor(base): use final for dep lookups in envfs overlay override
d0bca28 fix(tpnix): resolve unresolved merge conflict markers in overlay

Stack matches the description: d0bca28 is the #165 dependency, the remaining three are the actual scope of this PR. Once #165 lands, rebase will drop d0bca28 and leave a clean three-commit history (or one squashed commit) on main.

6. Verification I could not perform

  • nix flake check --accept-flake-config --no-build — no nix binary in this Actions runner.
  • envfs.drvPath byte-equivalence — same reason; verified by inspection in §2 instead.

The PR description states both pass; the static analysis is consistent with that claim.


Summary

Area Status
envfs.nix final-for-deps refactor OK — correct idiom
cargoDeps.src dedup via let + inherit OK — clean, structurally eliminates drift risk
Comment wording OK — accurate, no ordering implication
Conflict-marker cleanup in tpnix overlay OK — clean mechanical resolution
drvPath equivalence claim Plausible; no overlay rebinds the touched builders (verified by grep)
Scoping (defer librepods/marktext to #166) OK — well-justified
Local nix flake check / drvPath verification Not possible from runner; inferred from static analysis

No blockers. Once #165 lands and this rebases cleanly onto main, ready to merge.
• Branch: refactor/envfs-final-deps

@Bad3r Bad3r merged commit f6bc417 into main May 5, 2026
1 check passed
@github-project-automation github-project-automation Bot moved this from Backlog to Done in ❄️ NixOS May 5, 2026
@Bad3r Bad3r deleted the refactor/envfs-final-deps branch May 5, 2026 03:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant