有没有办法从 fetchFromGitHub 中删除配置文件?我想用我自己的配置替换默认配置。到目前为止,repo 中的所有文件都已构建并符号链接到“.config/yazelix”中,但没有运行任何 postFetch 命令。一切构建都没有任何错误。
我已将以下内容添加到“home.nix”文件的
home.file
部分:
".config/yazelix".source = pkgs.fetchFromGitHub {
owner = "luccahuguet";
repo = "yazelix";
rev = "1093c18c22d9d9858f4cf5813bd9aa7578660af8";
hash = "sha256-+6Mq8mR/tF1Z+GyooMz9fWGV57bFhbHXBVBDkHpUMDA="; # build and get the hash from the error
postFetch = ''
rm $out/zellij/config.kdl
cp ./apps/yazelix/config.kdl $out/zellij/config.kdl
'';
};
有人有任何建议让它发挥作用吗?非常感谢任何帮助。
您提供的
postFetch
片段应该可以正常工作。
我认为问题在于
source = pkgs.fetchFromGithub
寻找 hash
来更新商店条目。如果您构建了第一代没有postFetch
,则在您添加或编辑postFetch
阶段后,Home Manager不会自动重建商店条目。
要强制更新,您应该按照以下步骤删除商店条目并重建您的主配置:
".config/yazelix".source
并构建新的家庭配置一代。这是删除对 Nix 存储的依赖所必需的,否则您将无法删除该条目。home-manager remove-generation <id>
删除之前的家庭配置生成。您可以使用 id
找到 home-manager generations
。nix-store --delete <path>
删除商店条目。您可以使用 path
找到 ls -dl ~/.config/yazelix
。".config/yazelix".source
并构建新的家庭配置一代手动方法不能适应未来,因为您每次编辑时都需要再次应用它
config.kdl
。另一种方法是创建一个推导:
file = let
myConfig = pkgs.stdenv.mkDerivation {
name = "custom-yazelix-config";
src = pkgs.fetchFromGitHub {
owner = "luccahuguet";
repo = "yazelix";
rev = "1093c18c22d9d9858f4cf5813bd9aa7578660af8";
hash = "sha256-+6Mq8mR/tF1Z+GyooMz9fWGV57bFhbHXBVBDkHpUMDA=";
};
installPhase = ''
mkdir -p $out/zellij
cp ${self}/apps/yazelix/config.kdl $out/zellij/config.kdl
'';
};
in {
".config/yazelix".source = myConfig;
};
这里
${self}
是提供home配置的flake的路径。