home-manager icon indicating copy to clipboard operation
home-manager copied to clipboard

home-manger: fix runtime closure

Open NobbZ opened this issue 11 months ago • 1 comments

Description

Without this fix a nix-buid . -A home-manager would successfully create a home-manager. And one could use the included binary until the next garbage collection, after that it would fail with an error that it can not find the home-manager sources.

Similarily a nix-copy-closured home-manager would fail with the same error on the copies target machine.

This problem existed on both, the flake as well as the non-flake build of home-manager.

Checklist

  • [x] Change is backwards compatible.

  • [ ] Code formatted with ./format.

  • [x] Code tested through nix-shell --pure tests -A run.all or nix develop --ignore-environment .#all using Flakes.

  • [ ] Test cases updated/added. See example.

  • [x] Commit messages are formatted like

    {component}: {description}
    
    {long description}
    

    See CONTRIBUTING for more information and recent commit messages for examples.

  • If this PR adds a new module

    • [ ] Added myself as module maintainer. See example.

Maintainer CC

@rycee

NobbZ avatar Mar 24 '24 09:03 NobbZ

Thanks for submitting this fix! I have been using this workaround to get the source dependency properly registered:

  home-manager-src = pkgs.fetchFromGitHub {
    owner = "nix-community";
    repo = "home-manager";
    # 23.11 release
    rev = "652fda4ca6dafeb090943422c34ae9145787af37";
    hash = "sha256-cLbLPTL1CDmETVh4p0nQtvoF+FSEjsnJTFpTxhXywhQ=";
  };

  src-ref-pkg = pkgs.stdenv.mkDerivation {
    name = "source-ref-pkg";
    dontUnpack = true;
    buildPhase = ''
      mkdir $out
      ln -s "${home-manager-src}" $out/src
    '';
  };

  home-manager = pkgs.buildEnv {
    name = "home-manager";
    paths = [
      (import home-manager-src {inherit pkgs;}).home-manager
      src-ref-pkg
    ];
  };

I verified that nix-build https://github.com/nix-community/home-manager/archive/996a74808639cc4084c42e224ae5fcc58c3f0823.zip -A home-manager builds a home-manager with the correct dependencies that can run successfully after a garbage collection.

pdg137 avatar Mar 24 '24 14:03 pdg137

Thank you for your contribution! I marked this pull request as stale due to inactivity. Please read the relevant sections below before commenting.

If you are the original author of the PR

  • GitHub sometimes doesn't notify people who commented / reviewed a PR previously when you (force) push commits. If you have addressed the reviews you can officially ask for a review from those who commented to you or anyone else.
  • If it is unfinished but you plan to finish it, please mark it as a draft.
  • If you don't expect to work on it any time soon, please consider closing it with a short comment encouraging someone else to pick up your work.
  • To get things rolling again, rebase the PR against the target branch and address valid comments.
If you are not the original author of the PR

  • If you want to pick up the work on this PR, please create a new PR and indicate that it supercedes and closes this PR.

stale[bot] avatar Jul 26 '24 00:07 stale[bot]