modue stuff
This commit is contained in:
parent
97fd7e7b1a
commit
1f8cd90ee4
1 changed files with 75 additions and 53 deletions
128
flake.nix
128
flake.nix
|
|
@ -7,15 +7,24 @@
|
|||
home-manager.url = "github:nix-community/home-manager";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, flake-utils, home-manager, ... }@inputs:
|
||||
outputs =
|
||||
{
|
||||
self,
|
||||
nixpkgs,
|
||||
flake-utils,
|
||||
home-manager,
|
||||
...
|
||||
}@inputs:
|
||||
let
|
||||
inherit (lib) mkEnableOption mkPackageOption mkIf;
|
||||
lib = nixpkgs.lib;
|
||||
in
|
||||
flake-utils.lib.eachDefaultSystem (system:
|
||||
flake-utils.lib.eachDefaultSystem (
|
||||
system:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
in {
|
||||
in
|
||||
{
|
||||
packages.default = pkgs.buildGoModule {
|
||||
pname = "llm-shell-hint";
|
||||
version = "0.1.0";
|
||||
|
|
@ -37,58 +46,71 @@
|
|||
];
|
||||
};
|
||||
|
||||
homeManagerModules.default = { config, lib, pkgs, ... }: {
|
||||
options.programs.llm-shell-hint = {
|
||||
enable = lib.mkEnableOption "llm-shell-hint shell integration";
|
||||
package = lib.mkPackageOption pkgs "llm-shell-hint" { };
|
||||
enableBashIntegration = lib.mkEnableOption "Bash integration";
|
||||
enableFishIntegration = lib.mkEnableOption "Fish integration";
|
||||
enableZshIntegration = lib.mkEnableOption "Zsh integration";
|
||||
|
||||
settings = lib.mkOption {
|
||||
type = with lib.types; attrsOf (oneOf [
|
||||
bool
|
||||
int
|
||||
float
|
||||
str
|
||||
(listOf str)
|
||||
]);
|
||||
default = {};
|
||||
example = lib.literalExpression ''
|
||||
{
|
||||
LLMProviderURL = "https://openrouter.ai/api/v1/chat/completions";
|
||||
APIKey = "your-api-key";
|
||||
ShellType = "fish";
|
||||
ModelName = "anthropic/claude-sonnet-4";
|
||||
ColorScheme = "dark";
|
||||
}
|
||||
'';
|
||||
description = ''
|
||||
Configuration for llm-shell-hint.
|
||||
'';
|
||||
homeManagerModules.default =
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (pkgs.stdenv.hostPlatform) system;
|
||||
in
|
||||
{
|
||||
options.programs.llm-shell-hint = {
|
||||
enable = lib.mkEnableOption "llm-shell-hint shell integration";
|
||||
enableBashIntegration = lib.mkEnableOption "Bash integration";
|
||||
enableFishIntegration = lib.mkEnableOption "Fish integration";
|
||||
enableZshIntegration = lib.mkEnableOption "Zsh integration";
|
||||
|
||||
settings = lib.mkOption {
|
||||
type =
|
||||
with lib.types;
|
||||
attrsOf (oneOf [
|
||||
bool
|
||||
int
|
||||
float
|
||||
str
|
||||
(listOf str)
|
||||
]);
|
||||
default = { };
|
||||
example = lib.literalExpression ''
|
||||
{
|
||||
LLMProviderURL = "https://openrouter.ai/api/v1/chat/completions";
|
||||
APIKey = "your-api-key";
|
||||
ShellType = "fish";
|
||||
ModelName = "anthropic/claude-sonnet-4";
|
||||
ColorScheme = "dark";
|
||||
}
|
||||
'';
|
||||
description = ''
|
||||
Configuration for llm-shell-hint.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config =
|
||||
let
|
||||
cfg = config.programs.llm-shell-hint;
|
||||
tomlFormat = pkgs.formats.toml { };
|
||||
configFile = tomlFormat.generate "llm-shell-hint-config" cfg.settings;
|
||||
in
|
||||
mkIf cfg.enable {
|
||||
home.packages = [ self.packages."${system}".llm-shell-hint ];
|
||||
|
||||
programs.bash.initExtra = mkIf cfg.enableBashIntegration ''
|
||||
${lib.getExe self.packages."${system}".llm-shell-hint} init bash --config-file "${configFile}" | source
|
||||
'';
|
||||
|
||||
programs.zsh.initExtra = mkIf cfg.enableZshIntegration ''
|
||||
${lib.getExe self.packages."${system}".llm-shell-hint} init zsh --config-file "${configFile}" | source
|
||||
'';
|
||||
|
||||
programs.fish.interactiveShellInit = mkIf cfg.enableFishIntegration ''
|
||||
${lib.getExe self.packages."${system}".llm-shell-hint} init fish --config-file "${configFile}" | source
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = let
|
||||
cfg = config.programs.llm-shell-hint;
|
||||
tomlFormat = pkgs.formats.toml { };
|
||||
configFile = tomlFormat.generate "llm-shell-hint-config" cfg.settings;
|
||||
in mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
|
||||
programs.bash.initExtra = mkIf cfg.enableBashIntegration ''
|
||||
${lib.getExe cfg.package} init bash --config-file "${configFile}" | source
|
||||
'';
|
||||
|
||||
programs.zsh.initExtra = mkIf cfg.enableZshIntegration ''
|
||||
${lib.getExe cfg.package} init zsh --config-file "${configFile}" | source
|
||||
'';
|
||||
|
||||
programs.fish.interactiveShellInit = mkIf cfg.enableFishIntegration ''
|
||||
${lib.getExe cfg.package} init fish --config-file "${configFile}" | source
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue