{ config, lib, pkgs, ... }: with lib; let cfg = config.programs.imv; toConfig = attrs: '' # Generated by Home Manager. '' + generators.toINI { } attrs; in { meta.maintainers = [ maintainers.christoph-heiss ]; options.programs.imv = { enable = mkEnableOption "imv: a command line image viewer intended for use with tiling window managers"; package = mkPackageOption pkgs "imv" { }; settings = mkOption { default = { }; type = with types; attrsOf (attrsOf (oneOf [ bool int str ])); description = '' Configuration options for imv. See {manpage}`imv(5)`. ''; example = literalExpression '' { options.background = "ffffff"; aliases.x = "close"; } ''; }; }; config = mkIf cfg.enable { assertions = [ (hm.assertions.assertPlatform "programs.imv" pkgs platforms.linux) ]; home.packages = [ cfg.package ]; xdg.configFile = mkIf (cfg.settings != { }) { "imv/config".text = toConfig cfg.settings; }; }; }