broot: fix config file location (#3273)

At commit [5666e6b9](5666e6b9fb),
broot refactored the content of the file `/resources/default-conf.hjson`
into multiple files under the directory `/resources/default-conf`, using
[`imports`](5666e6b9fb/resources/default-conf/conf.hjson (L152-L165))
to refer to other configurations.

This refactoring is effective since version 1.14.0 of broot.

After this refactoring, in `xdg.configFile.broot` (which defaults to
`~/.config/broot`):
- we need to copy all potentially referenced files (all files under
  `resources/default-conf`),
- except we need to leave out `conf.hjson` which conflicts with the
  `conf.toml` generated by home-manager (because broot [accepts both conf.toml and conf.hjson](https://dystroy.org/broot/conf_file/))

To implement this, we use `symlinkJoin` to create the content of
`xdg.configFile.broot` by merging multiple sources.
This commit is contained in:
Chan Siu Man 2022-09-27 03:19:02 -07:00 committed by GitHub
parent 65b65ce5ef
commit 1f5ef2bb41
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 36 deletions

View File

@ -206,16 +206,33 @@ in {
config = mkIf cfg.enable {
home.packages = [ cfg.package ];
xdg.configFile."broot/conf.toml".source =
tomlFormat.generate "broot-config" cfg.settings;
xdg.configFile."broot" = {
recursive = true;
source = pkgs.symlinkJoin {
name = "xdg.configFile.broot";
paths = [
(pkgs.writeTextDir "conf.toml" (builtins.readFile
(tomlFormat.generate "broot-config" cfg.settings)))
# Dummy file to prevent broot from trying to reinstall itself
xdg.configFile."broot/launcher/installed-v1".text = "";
# Copy all files under /resources/default-conf
"${cfg.package.src}/resources/default-conf"
# Dummy file to prevent broot from trying to reinstall itself
(pkgs.writeTextDir "launcher/installed-v1" "")
];
# Remove conf.hjson, whose content has been merged into programs.broot.settings
postBuild = ''
rm $out/conf.hjson
'';
};
};
programs.broot.settings = builtins.fromJSON (builtins.readFile
(pkgs.runCommand "default-conf.json" {
nativeBuildInputs = [ pkgs.hjson ];
} "hjson -c ${cfg.package.src}/resources/default-conf.hjson > $out"));
}
"hjson -c ${cfg.package.src}/resources/default-conf/conf.hjson > $out"));
programs.bash.initExtra = mkIf cfg.enableBashIntegration (shellInit "bash");

View File

@ -13,39 +13,10 @@ with lib;
assertFileExists home-files/.config/broot/conf.toml
assertFileContent home-files/.config/broot/conf.toml ${
pkgs.writeText "broot.expected" ''
imports = ["verbs.hjson", {file = "dark-blue-skin.hjson", luma = ["dark", "unknown"]}, {file = "white-skin.hjson", luma = "light"}]
modal = true
show_selection_mark = true
[[verbs]]
execution = "$EDITOR +{line} {file}"
invocation = "edit"
leave_broot = false
shortcut = "e"
[[verbs]]
execution = "$EDITOR {directory}/{subpath}"
invocation = "create {subpath}"
leave_broot = false
[[verbs]]
execution = "git difftool -y {file}"
invocation = "git_diff"
leave_broot = false
shortcut = "gd"
[[verbs]]
auto_exec = false
execution = "cp -r {file} {parent}/{file-stem}-{version}{file-dot-extension}"
invocation = "backup {version}"
key = "ctrl-b"
leave_broot = false
[[verbs]]
execution = "$SHELL"
invocation = "terminal"
key = "ctrl-t"
leave_broot = false
set_working_dir = true
verbs = []
[skin]
''