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:
parent
65b65ce5ef
commit
1f5ef2bb41
|
@ -206,16 +206,33 @@ in {
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
home.packages = [ cfg.package ];
|
home.packages = [ cfg.package ];
|
||||||
|
|
||||||
xdg.configFile."broot/conf.toml".source =
|
xdg.configFile."broot" = {
|
||||||
tomlFormat.generate "broot-config" cfg.settings;
|
recursive = true;
|
||||||
|
source = pkgs.symlinkJoin {
|
||||||
|
name = "xdg.configFile.broot";
|
||||||
|
paths = [
|
||||||
|
(pkgs.writeTextDir "conf.toml" (builtins.readFile
|
||||||
|
(tomlFormat.generate "broot-config" cfg.settings)))
|
||||||
|
|
||||||
|
# Copy all files under /resources/default-conf
|
||||||
|
"${cfg.package.src}/resources/default-conf"
|
||||||
|
|
||||||
# Dummy file to prevent broot from trying to reinstall itself
|
# Dummy file to prevent broot from trying to reinstall itself
|
||||||
xdg.configFile."broot/launcher/installed-v1".text = "";
|
(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
|
programs.broot.settings = builtins.fromJSON (builtins.readFile
|
||||||
(pkgs.runCommand "default-conf.json" {
|
(pkgs.runCommand "default-conf.json" {
|
||||||
nativeBuildInputs = [ pkgs.hjson ];
|
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");
|
programs.bash.initExtra = mkIf cfg.enableBashIntegration (shellInit "bash");
|
||||||
|
|
||||||
|
|
|
@ -13,39 +13,10 @@ with lib;
|
||||||
assertFileExists home-files/.config/broot/conf.toml
|
assertFileExists home-files/.config/broot/conf.toml
|
||||||
assertFileContent home-files/.config/broot/conf.toml ${
|
assertFileContent home-files/.config/broot/conf.toml ${
|
||||||
pkgs.writeText "broot.expected" ''
|
pkgs.writeText "broot.expected" ''
|
||||||
|
imports = ["verbs.hjson", {file = "dark-blue-skin.hjson", luma = ["dark", "unknown"]}, {file = "white-skin.hjson", luma = "light"}]
|
||||||
modal = true
|
modal = true
|
||||||
show_selection_mark = true
|
show_selection_mark = true
|
||||||
|
verbs = []
|
||||||
[[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
|
|
||||||
|
|
||||||
[skin]
|
[skin]
|
||||||
''
|
''
|
||||||
|
|
Loading…
Reference in a new issue