From 1af888794d210b965b77208c6c2e14443ae3abb7 Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Tue, 4 Jun 2024 19:39:10 +0300 Subject: [PATCH] nix: get rid of `with lib;` and inherit explicitly --- nix/hm-module.nix | 128 ++++++++++++++++++++++++---------------------- 1 file changed, 68 insertions(+), 60 deletions(-) diff --git a/nix/hm-module.nix b/nix/hm-module.nix index b8d1583..5a92f81 100644 --- a/nix/hm-module.nix +++ b/nix/hm-module.nix @@ -8,19 +8,28 @@ self: { cfg = config.programs.anyrun; defaultPackage = self.packages.${pkgs.stdenv.hostPlatform.system}.default; + + inherit (builtins) map toJSON toString substring stringLength; + inherit (lib.modules) mkIf mkMerge; + inherit (lib.options) mkOption mkEnableOption literalExpression; + inherit (lib.lists) optional; + inherit (lib.attrsets) mapAttrs' nameValuePair; + inherit (lib.strings) toLower toUpper replaceStrings; + inherit (lib.trivial) boolToString; + inherit (lib.types) nullOr package submodule int float listOf either str enum lines bool attrs; in { meta.maintainers = with lib.maintainers; [n3oney NotAShelf]; - options.programs.anyrun = with lib; { + options.programs.anyrun = { enable = mkEnableOption "anyrun"; package = mkOption { - type = with types; nullOr package; + type = nullOr package; default = defaultPackage; - defaultText = lib.literalExpression '' + defaultText = literalExpression '' anyrun.packages.''${pkgs.stdenv.hostPlatform.system}.default ''; - description = mdDoc '' + description = '' Anyrun package to use. Defaults to the one provided by the flake. ''; }; @@ -30,27 +39,26 @@ in { description, ... }: - with types; - mkOption { - inherit default description; - example = '' - { absolute = 200; }; - or - { fraction = 0.4; }; - ''; - type = submodule { - options = { - absolute = mkOption { - type = nullOr int; - default = null; - }; - fraction = mkOption { - type = nullOr float; - default = null; - }; + mkOption { + inherit default description; + example = '' + { absolute = 200; }; + or + { fraction = 0.4; }; + ''; + type = submodule { + options = { + absolute = mkOption { + type = nullOr int; + default = null; + }; + fraction = mkOption { + type = nullOr float; + default = null; }; }; }; + }; numericInfo = '' This is a numeric option - pass either `{ absolute = int; };` or `{ fraction = float; };`. @@ -59,16 +67,16 @@ in { ''; in { plugins = mkOption { - type = with types; nullOr (listOf (either package str)); + type = nullOr (listOf (either package str)); default = null; - description = mdDoc '' + description = '' List of anyrun plugins to use. Can either be packages, absolute plugin paths, or strings. ''; }; x = mkNumericOption { default.fraction = 0.5; - description = mdDoc '' + description = '' The horizontal position, adjusted so that { relative = 0.5; } always centers the runner. ${numericInfo} @@ -77,7 +85,7 @@ in { y = mkNumericOption { default.fraction = 0.0; - description = mdDoc '' + description = '' The vertical position, works the same as x. ${numericInfo} @@ -86,7 +94,7 @@ in { width = mkNumericOption { default.absolute = 800; - description = mdDoc '' + description = '' The width of the runner. ${numericInfo} @@ -95,7 +103,7 @@ in { height = mkNumericOption { default.absolute = 0; - description = mdDoc '' + description = '' The minimum height of the runner, the runner will expand to fit all the entries. ${numericInfo} @@ -103,63 +111,63 @@ in { }; hideIcons = mkOption { - type = types.bool; + type = bool; default = false; description = "Hide match and plugin info icons"; }; ignoreExclusiveZones = mkOption { - type = types.bool; + type = bool; default = false; description = "ignore exclusive zones, eg. Waybar"; }; layer = mkOption { - type = with types; enum ["background" "bottom" "top" "overlay"]; + type = enum ["background" "bottom" "top" "overlay"]; default = "overlay"; description = "Layer shell layer (background, bottom, top or overlay)"; }; hidePluginInfo = mkOption { - type = types.bool; + type = bool; default = false; description = "Hide the plugin info panel"; }; closeOnClick = mkOption { - type = types.bool; + type = bool; default = false; description = "Close window when a click outside the main box is received"; }; showResultsImmediately = mkOption { - type = types.bool; + type = bool; default = false; description = "Show search results immediately when Anyrun starts"; }; maxEntries = mkOption { - type = with types; nullOr int; + type = nullOr int; default = null; description = "Limit amount of entries shown in total"; }; }; - extraCss = lib.mkOption { - type = lib.types.nullOr lib.types.lines; + extraCss = mkOption { + type = nullOr lines; default = ""; - description = mdDoc '' + description = '' Extra CSS lines to add to {file}`~/.config/anyrun/style.css`. ''; }; - extraConfigFiles = lib.mkOption { + extraConfigFiles = mkOption { # unfortunately HM doesn't really export the type for files, but hopefully # hm will throw errors if the options are wrong here, so I'm being *very* loose - type = lib.types.attrs; + type = attrs; default = {}; - description = mdDoc '' - Extra files to put in `~/.config/anyrun`, a wrapper over `xdg.configFile`. + description = '' + Extra files to put in {file}`~/.config/anyrun`, a wrapper over {option}`xdg.configFile`. ''; example = '' programs.anyrun.extraConfigFiles."plugin-name.ron".text = ''' @@ -171,7 +179,7 @@ in { }; }; - config = lib.mkIf cfg.enable (let + config = mkIf cfg.enable (let assertNumeric = numeric: { assertion = !((numeric ? absolute && numeric.absolute != null) && (numeric ? fraction && numeric.fraction != null)); message = "Invalid numeric definition, you can only specify one of absolute or fraction."; @@ -179,19 +187,19 @@ in { stringifyNumeric = numeric: if (numeric ? absolute && numeric.absolute != null) - then "Absolute(${builtins.toString numeric.absolute})" - else "Fraction(${builtins.toString numeric.fraction})"; + then "Absolute(${toString numeric.absolute})" + else "Fraction(${toString numeric.fraction})"; capitalize = string: - lib.toUpper (builtins.substring 0 1 string) + lib.toLower (builtins.substring 1 ((builtins.stringLength string) - 1) string); + toUpper (substring 0 1 string) + toLower (substring 1 ((stringLength string) - 1) string); parsedPlugins = if cfg.config.plugins == null then [] else - builtins.map (entry: + map (entry: if lib.types.package.check entry - then "${entry}/lib/lib${lib.replaceStrings ["-"] ["_"] entry.pname}.so" + then "${entry}/lib/lib${replaceStrings ["-"] ["_"] entry.pname}.so" else entry) cfg.config.plugins; in { @@ -207,11 +215,11 @@ in { ] else []; - home.packages = lib.optional (cfg.package != null) cfg.package; + home.packages = optional (cfg.package != null) cfg.package; - xdg.configFile = lib.mkMerge [ - (lib.mapAttrs' - (name: value: lib.nameValuePair ("anyrun/" + name) value) + xdg.configFile = mkMerge [ + (mapAttrs' + (name: value: nameValuePair ("anyrun/" + name) value) cfg.extraConfigFiles) { @@ -221,24 +229,24 @@ in { y: ${stringifyNumeric cfg.config.y}, width: ${stringifyNumeric cfg.config.width}, height: ${stringifyNumeric cfg.config.height}, - hide_icons: ${lib.boolToString cfg.config.hideIcons}, - ignore_exclusive_zones: ${lib.boolToString cfg.config.ignoreExclusiveZones}, + hide_icons: ${boolToString cfg.config.hideIcons}, + ignore_exclusive_zones: ${boolToString cfg.config.ignoreExclusiveZones}, layer: ${capitalize cfg.config.layer}, - hide_plugin_info: ${lib.boolToString cfg.config.hidePluginInfo}, - close_on_click: ${lib.boolToString cfg.config.closeOnClick}, - show_results_immediately: ${lib.boolToString cfg.config.showResultsImmediately}, + hide_plugin_info: ${boolToString cfg.config.hidePluginInfo}, + close_on_click: ${boolToString cfg.config.closeOnClick}, + show_results_immediately: ${boolToString cfg.config.showResultsImmediately}, max_entries: ${ if cfg.config.maxEntries == null then "None" - else "Some(${builtins.toString cfg.config.maxEntries})" + else "Some(${toString cfg.config.maxEntries})" }, - plugins: ${builtins.toJSON parsedPlugins}, + plugins: ${toJSON parsedPlugins}, ) ''; } { - "anyrun/style.css" = lib.mkIf (cfg.extraCss != null) { + "anyrun/style.css" = mkIf (cfg.extraCss != null) { text = cfg.extraCss; }; }