{ config, lib, inputs, pkgs, ... }: with lib; let cfg = config.custom.programs.walker; in { options.custom.programs.walker.enable = mkOption {default = false;}; config.home-manager.users.${config.custom.username} = mkIf cfg.enable { imports = [inputs.walker.homeManagerModules.default]; # https://github.com/abenz1267/walker # https://github.com/abenz1267/walker?tab=readme-ov-file#building-from-source # https://github.com/abenz1267/walker/blob/master/nix/hm-module.nix programs.walker = { enable = true; package = pkgs.walker; #!! Service must be restarted for changes to take effect #?? systemctl --user restart walker.service runAsService = true; # https://github.com/abenz1267/walker/wiki/Basic-Configuration # https://github.com/abenz1267/walker/blob/master/internal/config/config.default.json config = { activation_mode.disabled = true; # Key chords ignore_mouse = true; # Hover interrupts keyboard selections search.placeholder = ""; # https://github.com/abenz1267/walker/wiki/Modules # https://www.nerdfonts.com/cheat-sheet builtins = { calculator.switcher_only = false; clipboard.switcher_only = true; commands.switcher_only = true; custom_commands.switcher_only = true; runner.switcher_only = true; ssh.switcher_only = true; windows.switcher_only = true; applications = { # BUG: Ghost entries are still visible #// actions = false; # Desktop file actions switcher_only = false; }; dmenu = { keep_sort = true; # Disable sorting entries placeholder = "Input"; switcher_only = true; }; emojis = { placeholder = "Unicode"; switcher_only = false; }; finder = { placeholder = "Files"; switcher_only = true; }; websearch = { placeholder = "Search"; switcher_only = true; }; }; }; # https://github.com/abenz1267/walker/wiki/Theming theme = { style = builtins.readFile ./style.css; # https://github.com/abenz1267/walker/blob/master/internal/config/layout.default.json layout.ui.window.box = rec { height = 250 / config.custom.scale; width = 1000 / config.custom.scale; scroll.list = { max_height = height; max_width = width; min_width = width; # Icon resolution item = { text.sub.hide = true; # Subtext icon = { icon_size = "largest"; # 128px pixel_size = 32; # Downscale }; }; }; }; }; }; }; }