Configurable providers with nix
This commit is contained in:
1 parent
69605d7e54
commit
c312d83c7a
2 files changed
+41
No files matched your search
@@ -47,11 +47,15 @@ imports = [ inputs.ai-usage.homeManagerModules.default ];
|
|||||||
programs.ai-usage = {
|
programs.ai-usage = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = inputs.ai-usage.packages.x86_64-linux.default;
|
package = inputs.ai-usage.packages.x86_64-linux.default;
|
||||||
|
providers.codex.enable = false;
|
||||||
|
providers.claude.executable = pkgs.claude-code;
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
Dit voegt het pakket toe, start `systemd --user` service `ai-usage` met de grafische sessie, en zet `custom/ai-usage` vooraan `modules-right` als Waybar al aan staat. Je eigen Nix-configuratie blijft onaangeroerd tot je deze module importeert.
|
Dit voegt het pakket toe, start `systemd --user` service `ai-usage` met de grafische sessie, en zet `custom/ai-usage` vooraan `modules-right` als Waybar al aan staat. Je eigen Nix-configuratie blijft onaangeroerd tot je deze module importeert.
|
||||||
|
|
||||||
|
De module schrijft `~/.config/ai-usage/config.json`. `providers.claude`, `providers.codex` en `providers.cursor` staan standaard aan. Zet `enable = false` om een provider over te slaan. `executable` is een pad of een pakket (`lib.getExe`); zonder waarde zoekt de daemon zelf. `refreshMinutes` is 5, 15, 30 of 60. `showUsedPercentage` toont verbruikt in plaats van resterend percentage. Een handmatige wijziging van dat bestand wordt bij de volgende `home-manager switch` overschreven.
|
||||||
|
|
||||||
## Handmatig
|
## Handmatig
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
cfg = config.programs.ai-usage;
|
cfg = config.programs.ai-usage;
|
||||||
|
providerNames = [ "claude" "codex" "cursor" ];
|
||||||
|
executablePath = value:
|
||||||
|
if lib.isDerivation value then lib.getExe value else value;
|
||||||
|
enabledProviders = builtins.filter (name: cfg.providers.${name}.enable) providerNames;
|
||||||
|
executableOverrides = lib.mapAttrs
|
||||||
|
(_: provider: executablePath provider.executable)
|
||||||
|
(lib.filterAttrs (_: provider: provider.executable != null) cfg.providers);
|
||||||
in {
|
in {
|
||||||
options.programs.ai-usage = {
|
options.programs.ai-usage = {
|
||||||
enable = lib.mkEnableOption "AI Usage Monitor for Waybar";
|
enable = lib.mkEnableOption "AI Usage Monitor for Waybar";
|
||||||
@@ -8,12 +15,42 @@ in {
|
|||||||
type = lib.types.package;
|
type = lib.types.package;
|
||||||
description = "ai-usage package from this flake.";
|
description = "ai-usage package from this flake.";
|
||||||
};
|
};
|
||||||
|
refreshMinutes = lib.mkOption {
|
||||||
|
type = lib.types.enum [ 5 15 30 60 ];
|
||||||
|
default = 5;
|
||||||
|
description = "How often the daemon refreshes usage, in minutes.";
|
||||||
|
};
|
||||||
|
showUsedPercentage = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "Show used percentage instead of remaining percentage.";
|
||||||
|
};
|
||||||
|
providers = lib.genAttrs providerNames (name: {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = "Refresh and show ${name}.";
|
||||||
|
};
|
||||||
|
executable = lib.mkOption {
|
||||||
|
type = lib.types.nullOr (lib.types.either lib.types.str lib.types.package);
|
||||||
|
default = null;
|
||||||
|
example = lib.literalExpression "pkgs.claude-code";
|
||||||
|
description = "Absolute path or package for ${name}. A package uses lib.getExe.";
|
||||||
|
};
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable (lib.mkMerge [
|
config = lib.mkIf cfg.enable (lib.mkMerge [
|
||||||
{
|
{
|
||||||
home.packages = [ cfg.package ];
|
home.packages = [ cfg.package ];
|
||||||
|
|
||||||
|
xdg.configFile."ai-usage/config.json".text = builtins.toJSON {
|
||||||
|
refreshMinutes = cfg.refreshMinutes;
|
||||||
|
enabledProviders = enabledProviders;
|
||||||
|
executableOverrides = executableOverrides;
|
||||||
|
showUsedPercentage = cfg.showUsedPercentage;
|
||||||
|
};
|
||||||
|
|
||||||
systemd.user.services.ai-usage = {
|
systemd.user.services.ai-usage = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "AI Usage Monitor";
|
Description = "AI Usage Monitor";
|
||||||
|
|||||||
Reference in new issue
Block a user