Skip to content

refactor(envfs): remove envfs 1.2.0 overlay once nixpkgs#500707 lands #122

@Bad3r

Description

@Bad3r

Type

refactor

Scope

envfs

Summary

This repo pins envfs to 1.2.0 through a local overlay in modules/base/envfs.nix because nixpkgs still carries envfs 1.1.0. The overlay silences a spurious usr-bin.mount: Failed with result protocol boot log caused by envfs 1.1.0 exiting its mount helper before the FUSE mount is visible in /proc/self/mountinfo.

Mic92/envfs#216 fixed the upstream bug and envfs 1.2.0 has been released. The local follow-up is blocked until NixOS/nixpkgs#500707 lands and this flake updates to a nixpkgs revision that contains the envfs 1.2.0 package.

Unblock condition

Unblocked when NixOS/nixpkgs#500707 is merged and this flake is updated to a nixpkgs revision where pkgs.envfs.version is 1.2.0 without the local overlay.

Upstream pull requests

blocker NixOS/nixpkgs#500707 - r-ryantm envfs 1.1.0 to 1.2.0 bump
fix Mic92/envfs#216 - wait until filesystem is ready before the foreground process exits

Upstream issues

related Mic92/envfs#206 - usr-bin.mount failed with result protocol

Upstream releases and channels

fix https://github.com/Mic92/envfs/releases/tag/1.2.0 - envfs >= 1.2.0

Local workaround / affected code

# Pin envfs to 1.2.0 until nixpkgs PR #500707 lands. 1.1.0 exits its mount
# helper before the FUSE mount is visible in /proc/self/mountinfo, so systemd
# logs usr-bin.mount as `result=protocol` even though the mount succeeds.
# Fixed upstream in Mic92/envfs#216 (released as 1.2.0).
nixpkgs.overlays = [
(_final: prev: {
envfs = prev.envfs.overrideAttrs (_oldAttrs: {
version = "1.2.0";
src = prev.fetchFromGitHub {
owner = "Mic92";
repo = "envfs";
rev = "1.2.0";
hash = "sha256-hj/6zS9ebF0IDqgc1Dne59nWx80nk6jn2gj8BzQUFIQ=";
};
cargoDeps = prev.rustPlatform.fetchCargoVendor {
src = prev.fetchFromGitHub {
owner = "Mic92";
repo = "envfs";
rev = "1.2.0";
hash = "sha256-hj/6zS9ebF0IDqgc1Dne59nWx80nk6jn2gj8BzQUFIQ=";
};
hash = "sha256-dz3gpE464jnmSDsAsmJHcxUsEKeUURNoUjgGU2214Xg=";
};
});
})
];

Exit criteria

  • envfs: 1.1.0 -> 1.2.0 NixOS/nixpkgs#500707 is merged
  • ./build.sh --update pulls in a lockfile revision containing envfs 1.2.0
  • pkgs.envfs.version resolves to 1.2.0 from upstream with no local overlay applied
  • The nixpkgs.overlays block and explanatory pin comment are removed from modules/base/envfs.nix
  • All affected hosts rebuild cleanly
  • No usr-bin.mount: Failed with result protocol appears in journalctl -b after rebuild

Validation

nix eval .#nixosConfigurations.system76.pkgs.envfs.version
nix eval .#nixosConfigurations.tpnix.pkgs.envfs.version
./build.sh --host system76 --skip-fmt --skip-hooks
./build.sh --host tpnix --skip-fmt --skip-hooks
journalctl -b -u usr-bin.mount --no-pager

Notes

The workaround was added in cd63f31. As of the 2026-04-20 template migration, NixOS/nixpkgs#500707 is open and labeled merge-bot eligible.

Confirmations

  • I searched existing status(blocked-upstream) issues and this is not a duplicate.
  • Upstream references are canonical for their role: blocker/fix entries point at the repo that ships the fix.
  • Every non-none reference line starts with a reserved role keyword (blocker, fix, related, superseded).
  • Every entry in Local workaround / affected code reflects the current state on main.
  • The type and scope in the issue title match the Type and Scope body fields.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area(packages)Package definitions, overrides, overlays, or package-source selection.priority(p3)Normal priority.status(blocked-upstream)Blocked until an upstream fix or release lands.type(refactor)Structural cleanup without intended behavior change.

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions