{ 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/release-25.11"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager-unstable = { url = "github:nix-community/home-manager/master"; inputs.nixpkgs.follows = "nixpkgs-unstable"; }; nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; m3ta-nixpkgs.url = "git+https://code.m3ta.dev/m3tam3re/nixpkgs"; # m3ta-nixpkgs.url = "path:/home/sascha.koenig/p/NIX/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"; deploy-rs.url = "github:serokell/deploy-rs"; nixos-anywhere = { url = "github:nix-community/nixos-anywhere"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-colors.url = "github:misterio77/nix-colors"; nix-ai-tools.url = "github:numtide/nix-ai-tools"; # agents = { # # url = "path:/home/sascha.koenig/p/AI/AGENTS"; # url = "git+https://code.m3ta.dev/m3tam3re/AGENTS"; # flake = false; # }; agents = { # url = "path:/home/sascha.koenig/p/AI/AGENTS"; url = "git+https://code.m3ta.dev/m3tam3re/AGENTS"; inputs.nixpkgs.follows = "nixpkgs"; }; skills-anthropic = { url = "github:anthropics/skills"; flake = false; }; zugferd-service = { url = "git+https://git.az-gruppe.com/AZ-Intec-GmbH/zugferd-service"; }; }; outputs = { self, agenix, agents, deploy-rs, home-manager, llm-agents, 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 = let all = import ./overlays {inherit inputs;}; in builtins.removeAttrs all ["mkLlmAgentsOverlay"]; lib.mkLlmAgentsOverlay = (import ./overlays {inherit inputs;}).mkLlmAgentsOverlay; # Development shell devShells = forAllSystems (system: let pkgs = import nixpkgs { inherit system; config.allowUnfree = true; # Allow unfree packages in devShell }; m3taLib = m3ta-nixpkgs.lib.${system}; rules = m3taLib.opencode-rules.mkOpencodeRules { inherit agents; languages = ["nix"]; }; in { default = pkgs.mkShell { inherit (rules) instructions; buildInputs = with pkgs; [ alejandra nixd opencode 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)" 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 "======================================" ''; }; }); nixosConfigurations = { AZ-CLD-1 = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs outputs; system = "x86_64-linux"; }; modules = [ ./hosts/AZ-CLD-1 agenix.nixosModules.default inputs.disko.nixosModules.disko inputs.zugferd-service.nixosModules.default ]; }; AZ-PRM-1 = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs outputs; system = "x86_64-linux"; }; modules = [ ./hosts/AZ-PRM-1 agenix.nixosModules.default inputs.disko.nixosModules.disko ]; }; AZLT124-L = inputs.nixpkgs-unstable.lib.nixosSystem { specialArgs = { inherit inputs outputs; system = "x86_64-linux"; }; modules = [ ./hosts/AZLT124-L agenix.nixosModules.default inputs.home-manager-unstable.nixosModules.home-manager m3ta-nixpkgs.nixosModules.default ]; }; }; homeConfigurations = { "logistik@AZPILOGISTIK01" = let system = "aarch64-linux"; in home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages.${system}; extraSpecialArgs = { inherit inputs outputs system; hostname = "AZPILOGISTIK01"; username = "logistik"; }; modules = [./home/users/logistik/AZPILOGISTIK01.nix]; }; "logistik@AZPILOGISTIK02" = let system = "aarch64-linux"; in home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages.${system}; extraSpecialArgs = { inherit inputs outputs system; hostname = "AZPILOGISTIK02"; username = "logistik"; }; modules = [./home/users/logistik/AZPILOGISTIK02.nix]; }; "logistik@AZPILOGISTIK03" = let system = "aarch64-linux"; in home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages.${system}; extraSpecialArgs = { inherit inputs outputs system; hostname = "AZPILOGISTIK03"; username = "logistik"; }; modules = [./home/users/logistik/AZPILOGISTIK03.nix]; }; "logistik@AZPILOGISTIK04" = let system = "aarch64-linux"; in home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages.${system}; extraSpecialArgs = { inherit inputs outputs system; hostname = "AZPILOGISTIK04"; username = "logistik"; }; modules = [./home/users/logistik/AZPILOGISTIK04.nix]; }; "logistik@AZPILOGISTIK05" = let system = "aarch64-linux"; in home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages.${system}; extraSpecialArgs = { inherit inputs outputs system; hostname = "AZPILOGISTIK05"; username = "logistik"; }; modules = [./home/users/logistik/AZPILOGISTIK05.nix]; }; "logistik@AZPILOGISTIKTEST" = let system = "aarch64-linux"; in home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages.${system}; extraSpecialArgs = { inherit inputs outputs system; hostname = "AZPILOGISTIKTEST"; username = "logistik"; }; modules = [./home/users/logistik/AZPILOGISTIKTEST.nix]; }; "produktion@AZPIPRODUKTION01" = let system = "aarch64-linux"; in home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages.${system}; extraSpecialArgs = { inherit inputs outputs system; hostname = "AZPIPRODUKTION01"; username = "produktion"; }; modules = [./home/users/produktion/AZPIPRODUKTION01.nix]; }; "produktion@AZPIPRODUKTION02" = let system = "aarch64-linux"; in home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages.${system}; extraSpecialArgs = { inherit inputs outputs system; hostname = "AZPIPRODUKTION02"; username = "produktion"; }; modules = [./home/users/produktion/AZPIPRODUKTION02.nix]; }; "produktion@AZPIPRODUKTION03" = let system = "aarch64-linux"; in home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages.${system}; extraSpecialArgs = { inherit inputs outputs system; hostname = "AZPIPRODUKTION03"; username = "produktion"; }; modules = [./home/users/produktion/AZPIPRODUKTION03.nix]; }; "produktion@AZPIPRODUKTION04" = let system = "aarch64-linux"; in home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages.${system}; extraSpecialArgs = { inherit inputs outputs system; hostname = "AZPIPRODUKTION04"; username = "produktion"; }; modules = [./home/users/produktion/AZPIPRODUKTION04.nix]; }; "vertrieb@AZPIVERTRIEB01" = let system = "aarch64-linux"; in home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages.${system}; extraSpecialArgs = { inherit inputs outputs system; hostname = "AZPIVERTRIEB01"; username = "vertrieb"; }; modules = [./home/users/vertrieb/AZPIVERTRIEB01.nix]; }; }; deploy.nodes = { AZ-CLD-1 = { hostname = "AZ-CLD-1"; profiles.system = { sshUser = "sascha.koenig"; interactiveSudo = false; sshOpts = ["-tt"]; remoteBuild = true; path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.AZ-CLD-1; }; }; }; }; }