diff --git a/modules/programs/sioyek.nix b/modules/programs/sioyek.nix index 0d16f41d..566a1520 100644 --- a/modules/programs/sioyek.nix +++ b/modules/programs/sioyek.nix @@ -18,7 +18,6 @@ let mkKeyValue = key: value: "${key} ${value}"; listsAsDuplicateKeys = true; }; - in { meta.maintainers = [ lib.maintainers.podocarp ]; @@ -58,24 +57,58 @@ in {file}`$XDG_CONFIG_HOME/sioyek/prefs_user.config`. See . ''; - type = types.attrsOf types.str; default = { }; example = literalExpression '' { "background_color" = "1.0 1.0 1.0"; "text_highlight_color" = "1.0 0.0 0.0"; + startup_commands = [ + "toggle_visual_scroll" + "toggle_dark_mode" + ]; } ''; - }; + type = types.submodule { + freeformType = types.attrsOf types.str; + options.startup_commands = mkOption { + description = '' + Commands to be run upon startup. Will be written to {file}`$XDG_CONFIG_HOME/sioyek/prefs_user.config`. + See . + ''; + type = types.either types.str (types.listOf types.str); + apply = + x: + lib.warnIf (lib.isString x) + "`programs.sioyek.config.startup_commands` should now be a list of strings instead of a string." + x; + default = [ ]; + example = [ + "toggle_visual_scroll" + "toggle_dark_mode" + ]; + }; + }; + }; }; }; config = mkIf cfg.enable ( + let + prefsCfg = + cfg.config + // + lib.optionalAttrs (cfg.config.startup_commands != [ ] && !lib.isString cfg.config.startup_commands) + { + startup_commands = lib.concatStringsSep ";" cfg.config.startup_commands; + }; + in lib.mkMerge [ - { home.packages = [ cfg.package ]; } - (mkIf (cfg.config != { }) { - xdg.configFile."sioyek/prefs_user.config".text = renderConfig cfg.config; + { + home.packages = [ cfg.package ]; + } + (mkIf (prefsCfg != { }) { + xdg.configFile."sioyek/prefs_user.config".text = renderConfig prefsCfg; }) (mkIf (cfg.bindings != { }) { xdg.configFile."sioyek/keys_user.config".text = renderConfig cfg.bindings; diff --git a/tests/modules/programs/sioyek/sioyek-basic-configuration.nix b/tests/modules/programs/sioyek/sioyek-basic-configuration.nix index 8e884d5c..2e2d0619 100644 --- a/tests/modules/programs/sioyek/sioyek-basic-configuration.nix +++ b/tests/modules/programs/sioyek/sioyek-basic-configuration.nix @@ -18,6 +18,11 @@ config = { "dark_mode_background_color" = "0.0 0.0 0.0"; "dark_mode_contrast" = "0.8"; + + startup_commands = [ + "toggle_visual_scroll" + "toggle_dark_mode" + ]; }; }; diff --git a/tests/modules/programs/sioyek/test_prefs_user.config b/tests/modules/programs/sioyek/test_prefs_user.config index 730dd51b..02a30419 100644 --- a/tests/modules/programs/sioyek/test_prefs_user.config +++ b/tests/modules/programs/sioyek/test_prefs_user.config @@ -1,2 +1,3 @@ dark_mode_background_color 0.0 0.0 0.0 dark_mode_contrast 0.8 +startup_commands toggle_visual_scroll;toggle_dark_mode