From 2e550b91f5addad4043c7dd54c9d194a1c22dd43 Mon Sep 17 00:00:00 2001 From: m3tm3re
Date: Tue, 17 Feb 2026 20:11:14 +0100 Subject: [PATCH] feat(opencode): integrate rules into default devShell - Switch agents input to local path for development - Add default devShell with Opencode rules integration - Update .gitignore to exclude generated Opencode files - Upgrade opencode to v1.2.6 --- .gitignore | 4 + flake.lock | 31 ++++---- flake.nix | 223 ++++++++++++++++++++++++++++++----------------------- 3 files changed, 145 insertions(+), 113 deletions(-) diff --git a/.gitignore b/.gitignore index d6c2226..7362628 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,7 @@ result-* # OS .DS_Store Thumbs.db + +# Opencode rules +.opencode-rules +opencode.json diff --git a/flake.lock b/flake.lock index ce23853..6212a94 100644 --- a/flake.lock +++ b/flake.lock @@ -24,17 +24,14 @@ "agents": { "flake": false, "locked": { - "lastModified": 1771054446, - "narHash": "sha256-0IispDJYxOtWn1usZh6AR4nF3ouCscXDxBzgwAVjhx0=", - "ref": "refs/heads/master", - "rev": "923e2f1eaad96f440bbb76d07bb66ac4f5b4460a", - "revCount": 55, - "type": "git", - "url": "https://code.m3ta.dev/m3tam3re/AGENTS" + "lastModified": 1771353501, + "narHash": "sha256-M7m6g10+1cMmJKp41QWy1pMsD1OZUiHjMGIsICvpE1A=", + "path": "/home/m3tam3re/p/AI/AGENTS", + "type": "path" }, "original": { - "type": "git", - "url": "https://code.m3ta.dev/m3tam3re/AGENTS" + "path": "/home/m3tam3re/p/AI/AGENTS", + "type": "path" } }, "base16-schemes": { @@ -245,11 +242,11 @@ "opencode": "opencode" }, "locked": { - "lastModified": 1771121922, - "narHash": "sha256-WjlMXMFH5FvJzDiEkw5FnIL9pJ/qdY271hRPZ7nU24Q=", + "lastModified": 1771351183, + "narHash": "sha256-dIzUuSreb5AAp0bagYAHOPupJnAY6HL+fwdzchp7roY=", "ref": "refs/heads/master", - "rev": "6ebd7b94d50d1526a697f40ac0ebf44542b026fe", - "revCount": 112, + "rev": "d43bb33dcb4ae358dd398166a377f00d96e1f03b", + "revCount": 118, "type": "git", "url": "https://code.m3ta.dev/m3tam3re/nixpkgs" }, @@ -547,16 +544,16 @@ ] }, "locked": { - "lastModified": 1771120533, - "narHash": "sha256-FA9RRo4wH+FHXWIm3hm0oPouQ+VKral+Mqbk4g3dPfo=", + "lastModified": 1771271829, + "narHash": "sha256-43vPMyO7DsAgKrh0Wmt7jLDYCWUsaj30nBITreyYgX8=", "owner": "anomalyco", "repo": "opencode", - "rev": "d1482e148399bfaf808674549199f5f4aa69a22d", + "rev": "d8c25bfeb44771cc3a3ba17bf8de6ad2add9de2c", "type": "github" }, "original": { "owner": "anomalyco", - "ref": "v1.2.4", + "ref": "v1.2.6", "repo": "opencode", "type": "github" } diff --git a/flake.nix b/flake.nix index 950b502..6074913 100644 --- a/flake.nix +++ b/flake.nix @@ -17,9 +17,12 @@ }; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.11"; - nixpkgs-45570c2.url = "github:nixos/nixpkgs/45570c299dc2b63c8c574c4cd77f0b92f7e2766e"; - nixpkgs-locked.url = "github:nixos/nixpkgs/2744d988fa116fc6d46cdfa3d1c936d0abd7d121"; - nixpkgs-9e58ed7.url = "github:nixos/nixpkgs/9e58ed7ba759d81c98f033b7f5eba21ca68f53b0"; + nixpkgs-45570c2.url = + "github:nixos/nixpkgs/45570c299dc2b63c8c574c4cd77f0b92f7e2766e"; + nixpkgs-locked.url = + "github:nixos/nixpkgs/2744d988fa116fc6d46cdfa3d1c936d0abd7d121"; + nixpkgs-9e58ed7.url = + "github:nixos/nixpkgs/9e58ed7ba759d81c98f033b7f5eba21ca68f53b0"; nixpkgs-master.url = "github:nixos/nixpkgs/master"; m3ta-nixpkgs.url = "git+https://code.m3ta.dev/m3tam3re/nixpkgs"; @@ -36,115 +39,143 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - nixos-generators = { - url = "github:nix-community/nixos-generators"; - }; + nixos-generators = { url = "github:nix-community/nixos-generators"; }; hyprpanel.url = "github:Jas-SinghFSU/HyprPanel"; rose-pine-hyprcursor.url = "github:ndom91/rose-pine-hyprcursor"; nix-colors.url = "github:misterio77/nix-colors"; agents = { - # url = "path:/home/m3tam3re/p/AI/AGENTS"; - url = "git+https://code.m3ta.dev/m3tam3re/AGENTS"; + url = "path:/home/m3tam3re/p/AI/AGENTS"; + # url = "git+https://code.m3ta.dev/m3tam3re/AGENTS"; flake = false; }; }; - outputs = { - self, - agenix, - home-manager, - nixpkgs, - m3ta-nixpkgs, - nur, - ... - } @ inputs: let - inherit (self) outputs; - systems = [ - "aarch64-linux" - "i686-linux" - "x86_64-linux" - "aarch64-darwin" - "x86_64-darwin" - ]; - forAllSystems = nixpkgs.lib.genAttrs systems; - in { - packages = - forAllSystems (system: import ./pkgs nixpkgs.legacyPackages.${system}); - overlays = import ./overlays {inherit inputs outputs;}; - homeManagerModules = import ./modules/home-manager; + outputs = { self, agenix, home-manager, nixpkgs, m3ta-nixpkgs, nur, agents + , ... }@inputs: + let + inherit (self) outputs; + systems = [ + "aarch64-linux" + "i686-linux" + "x86_64-linux" + "aarch64-darwin" + "x86_64-darwin" + ]; + forAllSystems = nixpkgs.lib.genAttrs systems; + in { + packages = + forAllSystems (system: import ./pkgs nixpkgs.legacyPackages.${system}); + overlays = import ./overlays { inherit inputs outputs; }; + homeManagerModules = import ./modules/home-manager; - nixosConfigurations = { - m3-ares = nixpkgs.lib.nixosSystem { - specialArgs = { - inherit inputs outputs; - hostname = "m3-ares"; + nixosConfigurations = { + m3-ares = nixpkgs.lib.nixosSystem { + specialArgs = { + inherit inputs outputs; + hostname = "m3-ares"; + }; + modules = [ + ./hosts/m3-ares + agenix.nixosModules.default + m3ta-nixpkgs.nixosModules.default + ]; }; - modules = [ - ./hosts/m3-ares - agenix.nixosModules.default - m3ta-nixpkgs.nixosModules.default - ]; - }; - m3-atlas = nixpkgs.lib.nixosSystem { - specialArgs = {inherit inputs outputs;}; - system = "x86_64-linux"; - modules = [ - ./hosts/m3-atlas - inputs.disko.nixosModules.disko - agenix.nixosModules.default - m3ta-nixpkgs.nixosModules.default - ]; - }; - m3-kratos = nixpkgs.lib.nixosSystem { - specialArgs = { - inherit inputs outputs; - hostname = "m3-kratos"; + m3-atlas = nixpkgs.lib.nixosSystem { + specialArgs = { inherit inputs outputs; }; + system = "x86_64-linux"; + modules = [ + ./hosts/m3-atlas + inputs.disko.nixosModules.disko + agenix.nixosModules.default + m3ta-nixpkgs.nixosModules.default + ]; }; - modules = [ - ./hosts/m3-kratos - agenix.nixosModules.default - nur.modules.nixos.default - m3ta-nixpkgs.nixosModules.default - ]; - }; - m3-helios = nixpkgs.lib.nixosSystem { - specialArgs = {inherit inputs outputs;}; - system = "x86_64-linux"; - modules = [ - ./hosts/m3-helios - inputs.disko.nixosModules.disko - agenix.nixosModules.default - m3ta-nixpkgs.nixosModules.default - ]; - }; - }; - homeConfigurations = { - "m3tam3re@m3-daedalus" = home-manager.lib.homeManagerConfiguration { - pkgs = nixpkgs.legacyPackages."x86_64-linux"; - extraSpecialArgs = { - inherit inputs outputs; - hostname = "m3-daedalus"; + m3-kratos = nixpkgs.lib.nixosSystem { + specialArgs = { + inherit inputs outputs; + hostname = "m3-kratos"; + }; + modules = [ + ./hosts/m3-kratos + agenix.nixosModules.default + nur.modules.nixos.default + m3ta-nixpkgs.nixosModules.default + ]; + }; + m3-helios = nixpkgs.lib.nixosSystem { + specialArgs = { inherit inputs outputs; }; + system = "x86_64-linux"; + modules = [ + ./hosts/m3-helios + inputs.disko.nixosModules.disko + agenix.nixosModules.default + m3ta-nixpkgs.nixosModules.default + ]; }; - modules = [./home/m3tam3re/m3-daedalus.nix]; }; - }; - devShells.x86_64-linux.infraShell = let - pkgs = nixpkgs.legacyPackages.x86_64-linux; - in - pkgs.mkShell { - buildInputs = with pkgs; [ - opentofu - nixos-anywhere - ]; + homeConfigurations = { + "m3tam3re@m3-daedalus" = home-manager.lib.homeManagerConfiguration { + pkgs = nixpkgs.legacyPackages."x86_64-linux"; + extraSpecialArgs = { + inherit inputs outputs; + hostname = "m3-daedalus"; + }; + modules = [ ./home/m3tam3re/m3-daedalus.nix ]; + }; + }; + devShells.x86_64-linux.infraShell = + let pkgs = nixpkgs.legacyPackages.x86_64-linux; + in pkgs.mkShell { + buildInputs = with pkgs; [ opentofu nixos-anywhere ]; + shellHook = '' + echo "Infrastructure Management Shell" + echo "Commands:" + echo " - cd infra/proxmox && tofu init" + echo " - tofu plan" + echo " - tofu apply" + ''; + }; + + devShells.x86_64-linux.default = let + pkgs = nixpkgs.legacyPackages.x86_64-linux; + m3taLib = m3ta-nixpkgs.lib.x86_64-linux; + rules = m3taLib.opencode-rules.mkOpencodeRules { + inherit agents; + languages = [ "nix" ]; + }; + in pkgs.mkShell { + inherit (rules) instructions; shellHook = '' - echo "Infrastructure Management Shell" - echo "Commands:" - echo " - cd infra/proxmox && tofu init" - echo " - tofu plan" - echo " - tofu apply" + ${rules.shellHook} + echo "======================================" + echo "Nix Development Shell with Opencode Rules" + echo "======================================" + echo "" + echo "Active rules:" + echo " - Nix language conventions" + echo " - Coding-style best practices" + echo " - Naming conventions" + echo " - Documentation standards" + echo " - Testing guidelines" + echo " - Git workflow patterns" + echo " - Project structure guidelines" + echo "" + echo "Generated files:" + echo " - .opencode-rules/ (symlink to AGENTS repo)" + echo " - opencode.json (configuration file)" + echo "" + echo "Useful commands:" + echo " - cat opencode.json View rules configuration" + echo " - ls .opencode-rules/ Browse available rules" + echo " - nix develop Re-enter this shell" + echo "" + echo "Remember to add to .gitignore:" + echo " .opencode-rules" + echo " opencode.json" + echo "======================================" ''; }; - }; + }; }