mirror of
https://github.com/nix-community/home-manager
synced 2024-08-24 21:16:31 +02:00
Using this function it is possible to make `home.file` create a symlink to a path outside the Nix store. For example, a Home Manager configuration containing home.file."foo".source = config.lib.file.mkOutOfStoreSymlink ./bar; would upon activation create a symlink `~/foo` that points to the absolute path of the `bar` file relative the configuration file. PR #1211
30 lines
675 B
Nix
30 lines
675 B
Nix
{ config, lib, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
|
|
filePath = ./. + "/source with spaces!";
|
|
|
|
in {
|
|
config = {
|
|
home.file."oos".source = config.lib.file.mkOutOfStoreSymlink filePath;
|
|
|
|
nmt.script = ''
|
|
assertLinkExists "home-files/oos"
|
|
|
|
storePath="$(readlink $TESTED/home-files/oos)"
|
|
|
|
if [[ ! -L $storePath ]]; then
|
|
fail "Expected $storePath to be a symbolic link, but it was not."
|
|
fi
|
|
|
|
actual="$(readlink "$storePath")"
|
|
expected="${toString filePath}"
|
|
if [[ $actual != $expected ]]; then
|
|
fail "Symlink home-files/oos should point to $expected via the Nix store, but it actually points to $actual."
|
|
fi
|
|
'';
|
|
};
|
|
}
|