{ description = '' For questions just DM me on X: https://twitter.com/@m3tam3re There is also some NIXOS content on my YT channel: https://www.youtube.com/@m3tam3re One of the best ways to learn NIXOS is to read other peoples configurations. I have personally learned a lot from Gabriel Fontes configs: https://github.com/Misterio77/nix-starter-configs https://github.com/Misterio77/nix-config Please also check out the starter configs mentioned above. ''; inputs = { home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.11"; m3ta-nixpkgs.url = "git+https://code.m3ta.dev/m3tam3re/nixpkgs"; m3ta-home = { url = "git+ssh://gitea@code.m3ta.dev/m3tam3re/m3ta-home"; inputs.nixpkgs.follows = "nixpkgs"; }; llm-agents.url = "github:numtide/llm-agents.nix"; nur = { url = "github:nix-community/NUR"; inputs.nixpkgs.follows = "nixpkgs"; }; disko = { url = "github:nix-community/disko"; inputs.nixpkgs.follows = "nixpkgs"; }; agenix.url = "github:ryantm/agenix"; nixos-anywhere = { url = "github:nix-community/nixos-anywhere"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-colors.url = "github:misterio77/nix-colors"; agents = { url = "git+ssh://gitea@code.m3ta.dev/m3tam3re/AGENTS"; }; skills-anthropic = { url = "github:anthropics/skills"; flake = false; }; skills-kestra = { url = "github:kestra-io/agent-skills"; flake = false; }; skills-superpowers = { url = "github:obra/superpowers"; flake = false; }; skills-vercel = { url = "github:vercel-labs/skills"; flake = false; }; skills-basecamp = { url = "github:basecamp/basecamp-cli"; flake = false; }; }; outputs = { self, agenix, agents, nixpkgs, m3ta-nixpkgs, ... } @ 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 = let all = import ./overlays {inherit inputs;}; in removeAttrs all ["mkLlmAgentsOverlay"]; lib.mkLlmAgentsOverlay = (import ./overlays {inherit inputs;}).mkLlmAgentsOverlay; devShells = forAllSystems (system: let pkgs = import nixpkgs { inherit system; config.allowUnfree = true; # Allow unfree packages in devShell }; m3taLib = m3ta-nixpkgs.lib.${system}; rules = m3taLib.coding-rules.mkCodingRules { inherit agents; languages = ["nix"]; }; in { default = pkgs.mkShell { buildInputs = with pkgs; [ alejandra nixd opencode pi-coding-agent inputs.agenix.packages.${system}.default ]; shellHook = '' ${rules.shellHook} echo "🚀 NixOS Infrastructure Development Shell with Opencode Rules" 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 rules)" echo " - coding-rules.json (configuration file)" echo "" echo "Useful commands:" echo " - cat coding-rules.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 " coding-rules.json" echo "======================================" ''; }; }); nixosConfigurations = { AZ-LT-NIX = inputs.nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs outputs; system = "x86_64-linux"; }; modules = [ ./hosts/AZ-LT-NIX agenix.nixosModules.default inputs.home-manager.nixosModules.home-manager m3ta-nixpkgs.nixosModules.default ]; }; }; }; }