modules.system.fileSystems: fix

This commit is contained in:
2025-01-14 18:48:17 +08:00
parent 59e19e8350
commit fead09d535
2 changed files with 20 additions and 23 deletions

View File

@@ -11,6 +11,9 @@ inputs:
nixos.system.fileSystems.mount.nfs = builtins.listToAttrs (builtins.map
(user: { name = "192.168.178.1:/nix/persistent/home/${user}"; value = "/home/${user}"; })
inputs.config.nixos.user.users);
})
# 将一部分由 home-manager 生成软链接的文件改为直接挂载,以兼容集群的设置
{
home-manager.users = builtins.listToAttrs (builtins.map
(user:
{
@@ -20,6 +23,21 @@ inputs:
[ ".zshrc" ".zshenv" ".profile" ".bashrc" ".bash_profile" ".zlogin" ]);
})
inputs.config.nixos.user.users);
})
systemd.mounts = builtins.filter (mount: mount != null) (builtins.concatLists (builtins.map
(user: builtins.map
(file:
let f = inputs.config.home-manager.users.${user}.config.home.file.${file}.source or null;
in if f == null then null else
{
what = "${f}";
where = "/home/${user}/${file}";
options = [ "bind" ];
wantedBy = [ "local-fs.target" ];
}
)
[ ".zshrc" ".zshenv" ".profile" ".bashrc" ".bash_profile" ".zlogin" ]
)
inputs.config.nixos.user.users));
}
];
}

View File

@@ -62,6 +62,7 @@ inputs:
];
})
# 对于集群的工作节点,挂载一些本来由 home-manager 生成的文件,以及一些用来存放 home-manager 生成文件的目录
# impermanence 挂载来自 nix store 的文件会导致家目录的权限错误,在 cluster.nix 中直接使用 systemd.mounts 来挂载
(inputs.lib.mkIf (inputs.config.nixos.model.cluster.nodeType or null == "worker")
{
"/nix/persistent".users = builtins.listToAttrs (builtins.map
@@ -70,28 +71,6 @@ inputs:
"/nix/rootfs/current".users = builtins.listToAttrs (builtins.map
(user: { name = user; value.directories = [ ".zsh" ".yubico" ]; })
inputs.config.nixos.user.users);
"/" =
{
hideMounts = true;
users =
let userFiles = inputs.pkgs.runCommand "user-files" {}
(builtins.concatStringsSep "\n" (builtins.concatLists (builtins.map
(user: [ "mkdir -p $out/home/${user}" ] ++ (builtins.map
(file:
let f = inputs.config.home-manager.users.${user}.config.home.file.${file}.source or null;
in if f != null then "ln -s ${f} $out/home/${user}/${file}" else "touch $out/home/${user}/${file}")
[ ".zshrc" ".zshenv" ".profile" ".bashrc" ".bash_profile" ".zlogin" ]))
inputs.config.nixos.user.users)));
in builtins.listToAttrs (builtins.map
(user:
{
name = user;
value.files = builtins.map
(file: { inherit file; persistentStoragePath = "${userFiles}"; })
[ ".zshrc" ".zshenv" ".profile" ".bashrc" ".bash_profile" ".zlogin" ];
})
inputs.config.nixos.user.users);
};
})
];
}