{ lib , bash , coreutils , fetchFromGitHub , findutils , gettext , gnused , installShellFiles , less , ncurses , nixos-option , stdenvNoCC , unixtools , unstableGitUpdater }: stdenvNoCC.mkDerivation (finalAttrs: { pname = "home-manager"; version = "0-unstable-2024-09-09"; src = fetchFromGitHub { name = "home-manager-source"; owner = "nix-community"; repo = "home-manager"; rev = "10541f19c584fe9633c921903d8c095d5411e041"; hash = "sha256-fj2LxTZAncL/s5NrtXe1nLfO0XDvRixtCu3kmV9jDPw="; }; nativeBuildInputs = [ gettext installShellFiles ]; dontConfigure = true; dontBuild = true; installPhase = '' runHook preInstall install -D -m755 home-manager/home-manager $out/bin/home-manager install -D -m755 lib/bash/home-manager.sh $out/share/bash/home-manager.sh installShellCompletion --bash --name home-manager.bash home-manager/completion.bash installShellCompletion --fish --name home-manager.fish home-manager/completion.fish installShellCompletion --zsh --name _home-manager home-manager/completion.zsh for pofile in home-manager/po/*.po; do lang="''${pofile##*/}" lang="''${lang%%.*}" mkdir -p "$out/share/locale/$lang/LC_MESSAGES" msgfmt -o "$out/share/locale/$lang/LC_MESSAGES/home-manager.mo" "$pofile" done runHook postInstall ''; postFixup = '' substituteInPlace $out/bin/home-manager \ --subst-var-by bash "${bash}" \ --subst-var-by DEP_PATH "${ lib.makeBinPath [ coreutils findutils gettext gnused less ncurses nixos-option unixtools.hostname ] }" \ --subst-var-by HOME_MANAGER_LIB '${placeholder "out"}/share/bash/home-manager.sh' \ --subst-var-by HOME_MANAGER_PATH "${finalAttrs.src}" \ --subst-var-by OUT '${placeholder "out"}' ''; passthru.updateScript = unstableGitUpdater { url = "https://github.com/nix-community/home-manager/"; }; meta = { homepage = "https://nix-community.github.io/home-manager/"; description = "Nix-based user environment configurator"; longDescription = '' The Home-Manager project provides a basic system for managing a user environment using the Nix package manager together with the Nix libraries found in Nixpkgs. It allows declarative configuration of user specific (non global) packages and dotfiles. ''; license = lib.licenses.mit; mainProgram = "home-manager"; maintainers = with lib.maintainers; [ AndersonTorres ]; platforms = lib.platforms.unix; }; })