diff --git a/flake.lock b/flake.lock index bcd9d26..2cc6a0a 100644 --- a/flake.lock +++ b/flake.lock @@ -21,6 +21,27 @@ "type": "github" } }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "hermes-agent", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1772408722, + "narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "flake-utils": { "inputs": { "systems": "systems" @@ -39,6 +60,29 @@ "type": "github" } }, + "hermes-agent": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs", + "npm-lockfile-fix": "npm-lockfile-fix", + "pyproject-build-systems": "pyproject-build-systems", + "pyproject-nix": "pyproject-nix", + "uv2nix": "uv2nix" + }, + "locked": { + "lastModified": 1784633374, + "narHash": "sha256-kaRIIOZwlfLI3dwI5TgnyuLyG5RsuwM6jsuw3s5m5wc=", + "owner": "NousResearch", + "repo": "hermes-agent", + "rev": "64702f8f91661149128ca1a721f7a0fd4c22113b", + "type": "github" + }, + "original": { + "owner": "NousResearch", + "repo": "hermes-agent", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -103,16 +147,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1783703440, - "narHash": "sha256-O3/YajjWo001VUIgD8BwaRdSNLUFe7nZ1qV5TwhRBcw=", + "lastModified": 1775036866, + "narHash": "sha256-ZojAnPuCdy657PbTq5V0Y+AHKhZAIwSIT2cb8UgAz/U=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8f0500b9660505dc3cb647775fe9a978a74b5283", + "rev": "6201e203d09599479a3b3450ed24fa81537ebc4e", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-26.05", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } @@ -133,12 +177,100 @@ "type": "github" } }, + "nixpkgs_2": { + "locked": { + "lastModified": 1783703440, + "narHash": "sha256-O3/YajjWo001VUIgD8BwaRdSNLUFe7nZ1qV5TwhRBcw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "8f0500b9660505dc3cb647775fe9a978a74b5283", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-26.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "npm-lockfile-fix": { + "inputs": { + "nixpkgs": [ + "hermes-agent", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1775903712, + "narHash": "sha256-2GV79U6iVH4gKAPWYrxUReB0S41ty/Y3dBLquU8AlaA=", + "owner": "jeslie0", + "repo": "npm-lockfile-fix", + "rev": "c6093acb0c0548e0f9b8b3d82918823721930fe8", + "type": "github" + }, + "original": { + "owner": "jeslie0", + "repo": "npm-lockfile-fix", + "type": "github" + } + }, + "pyproject-build-systems": { + "inputs": { + "nixpkgs": [ + "hermes-agent", + "nixpkgs" + ], + "pyproject-nix": [ + "hermes-agent", + "pyproject-nix" + ], + "uv2nix": [ + "hermes-agent", + "uv2nix" + ] + }, + "locked": { + "lastModified": 1772555609, + "narHash": "sha256-3BA3HnUvJSbHJAlJj6XSy0Jmu7RyP2gyB/0fL7XuEDo=", + "owner": "pyproject-nix", + "repo": "build-system-pkgs", + "rev": "c37f66a953535c394244888598947679af231863", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "build-system-pkgs", + "type": "github" + } + }, + "pyproject-nix": { + "inputs": { + "nixpkgs": [ + "hermes-agent", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1772865871, + "narHash": "sha256-/ZTSg97aouL0SlPHaokA4r3iuH9QzHVuWPACD2CUCFY=", + "owner": "pyproject-nix", + "repo": "pyproject.nix", + "rev": "e537db02e72d553cea470976b9733581bcf5b3ed", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "pyproject.nix", + "type": "github" + } + }, "root": { "inputs": { "awsvpnclient": "awsvpnclient", + "hermes-agent": "hermes-agent", "home-manager": "home-manager", "home-manager-deck": "home-manager-deck", - "nixpkgs": "nixpkgs", + "nixpkgs": "nixpkgs_2", "nixpkgs-deck": "nixpkgs-deck", "zen-browser": "zen-browser" } @@ -158,6 +290,31 @@ "type": "github" } }, + "uv2nix": { + "inputs": { + "nixpkgs": [ + "hermes-agent", + "nixpkgs" + ], + "pyproject-nix": [ + "hermes-agent", + "pyproject-nix" + ] + }, + "locked": { + "lastModified": 1773039484, + "narHash": "sha256-+boo33KYkJDw9KItpeEXXv8+65f7hHv/earxpcyzQ0I=", + "owner": "pyproject-nix", + "repo": "uv2nix", + "rev": "b68be7cfeacbed9a3fa38a2b5adc0cfb81d9bb1f", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "uv2nix", + "type": "github" + } + }, "zen-browser": { "inputs": { "home-manager": "home-manager_2", diff --git a/flake.nix b/flake.nix index ea8435e..1348160 100644 --- a/flake.nix +++ b/flake.nix @@ -24,6 +24,7 @@ url = "github:ymatsiuk/awsvpnclient"; inputs.nixpkgs.follows = "nixpkgs"; }; + hermes-agent.url = "github:NousResearch/hermes-agent"; }; outputs = diff --git a/hosts/jpporta-nixos/configuration.nix b/hosts/jpporta-nixos/configuration.nix index 52bf962..572b339 100644 --- a/hosts/jpporta-nixos/configuration.nix +++ b/hosts/jpporta-nixos/configuration.nix @@ -15,6 +15,7 @@ ../../modules/nixos/awsvpn ../../modules/nixos/tailscale ../../modules/nixos/wake-on-lan + ../../modules/nixos/hermes ]; # Bootloader @@ -103,6 +104,7 @@ shell = pkgs.zsh; openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHtBfMUaNtpUYOi0dFsGsAv/ypw535+SouH7fn8eYDvr writterdeck" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG8115XYzQTL/ZfAerfm2carlSsIDHN6qM/K5V+AQ0St Generated By Termius" ]; }; @@ -117,6 +119,7 @@ steam.enable = true; tailscale.enable = true; wake-on-lan.enable = true; + hermes.enable = true; }; ##------------------------------ @@ -136,6 +139,8 @@ ollama-rocm glib gsettings-desktop-schemas + zip + yarn ]; virtualisation.docker.enable = true; # docker, buildx diff --git a/modules/home-manager/opencode/default.nix b/modules/home-manager/opencode/default.nix index ca461b0..e69794b 100644 --- a/modules/home-manager/opencode/default.nix +++ b/modules/home-manager/opencode/default.nix @@ -12,6 +12,13 @@ plugin = [ "@dietrichgebert/ponytail" ]; + mcp = { + n8n = { + type = "remote"; + url = "https://n8n.joaoporta.com/mcp-server/http"; + enabled = true; + }; + }; }; }; }; diff --git a/modules/nixos/hermes/default.nix b/modules/nixos/hermes/default.nix new file mode 100644 index 0000000..5960cbe --- /dev/null +++ b/modules/nixos/hermes/default.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + inputs, + pkgs, + ... +}: +let + cfg = config.custom.hermes; +in +{ + options.custom.hermes.enable = lib.mkEnableOption "Hermes Agent CLI"; + + config = lib.mkIf cfg.enable { + environment.systemPackages = [ + inputs.hermes-agent.packages.${pkgs.system}.default + ]; + }; +}