{ config, lib, ... }: let cfg = config.programs.swaylock; in { meta.maintainers = [ lib.hm.maintainers.rcerc ]; options.programs.swaylock.settings = lib.mkOption { type = with lib.types; attrsOf (oneOf [ bool float int str ]); default = { }; description = '' Default arguments to swaylock. An empty set disables configuration generation. ''; example = { color = "808080"; font-size = 24; indicator-idle-visible = false; indicator-radius = 100; line-color = "ffffff"; show-failed-attempts = true; }; }; config.xdg.configFile."swaylock/config" = lib.mkIf (cfg.settings != { }) { text = lib.concatStrings (lib.mapAttrsToList (n: v: if v == false then "" else (if v == true then n else n + "=" + builtins.toString v) + "\n") cfg.settings); }; }