diff --git a/flake.nix b/flake.nix index b6d030e..42fbfe3 100644 --- a/flake.nix +++ b/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 - ''; - }; - }; } ); }