/ modules / programs / anyrun.nix
anyrun.nix
 1  {
 2    pkgs,
 3    lib,
 4    config,
 5    osConfig,
 6    inputs,
 7    ...
 8  }:let
 9  
10  cfg = config.programs.anyrun;
11  inherit(lib) mkEnableOption mkIf;
12  
13  in {
14    options.programs.anyrun = {
15      enable = mkEnableOption "anyrun";
16    };
17  
18    config = mkIf cfg.enable {
19      inputs = {
20        
21      anyrun.url = "github:Kirottu/anyrun";
22      anyrun-nixos-options.url = "github:n3oney/anyrun-nixos-options/v2.0.0";
23      anyrun.inputs.nixpkgs.follows = "nixpkgs";
24  
25      };
26  
27       hmModules = [inputs.anyrun.homeManagerModules.default];
28  
29      hm.programs.anyrun = {
30          enable = true;
31  
32          config = {
33            closeOnClick = false;
34            hidePluginInfo = true;
35            width.fraction = 0.5;
36            showResultsImmediately = true;
37            y.fraction = 0.2;
38            maxEntries = 3;
39           plugins = with inputs.anyrun.packages.${pkgs.system}; [
40                      applications
41                      shell
42                      rink
43                      translate
44                      websearch
45                      inputs.anyrun-nixos-options.packages.${pkgs.system}.default
46            ];
47  
48        };
49          extraConfigFiles."nixos-options.ron".text = let
50            nixos-options = osConfig.system.build.manual.optionsJSON + "/share/doc/nixos/options.json";
51            hm-options = inputs.home-manager.packages.${pkgs.system}.docs-json + "/share/doc/home-manager/options.json";
52            options = builtins.toJSON {
53              ":nix" = [nixos-options];
54              ":hm" = [hm-options];
55            };
56          in ''
57            Config(
58              options: ${options},
59            )
60          '';
61          
62    extraCss = ''
63  
64    #window,
65        #match,
66        #entry,
67        #plugin,
68        #main {
69          background: transparent;
70        }
71  
72         #match:selected {
73          background: rgba(203, 166, 247, 0.7);
74        }
75  
76        #match {
77          padding: 3px;
78          border-radius: 5px;
79        }
80  
81        #entry, #plugin:hover {
82          border-radius: 16px;
83        }
84  
85        box#main {
86          background: rgb(30, 30, 46);
87          border: 1px solid #1c272b;
88          border-radius: 24px;
89          padding: 8px;
90        }
91  
92    '';
93  
94  
95          };
96    };
97  }