{ 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.05"; 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.05"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; m3ta-nixpkgs.url = "git+https://code.m3ta.dev/m3tam3re/nixpkgs"; 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"; }; outputs = { self, agenix, deploy-rs, home-manager, nixpkgs, m3ta-nixpkgs, nixgl, 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;}; # Development shell devShells = forAllSystems (system: let pkgs = import nixpkgs { inherit system; config.allowUnfree = true; # Allow unfree packages in devShell }; in { default = pkgs.mkShell { buildInputs = with pkgs; [ opentofu openssh agenix.packages.${system}.default ]; shellHook = '' echo "🚀 NixOS Infrastructure Development Shell" echo "Available tools:" echo " - opentofu: Infrastructure as Code" echo " - agenix: Secret management" echo "" echo "Quick start:" echo " cd terraform && tofu init init" echo "" ''; }; }); nixosConfigurations = { AZ-CLD-1 = nixpkgs.lib.nixosSystem { specialArgs = {inherit inputs outputs;}; modules = [ ./hosts/AZ-CLD-1 agenix.nixosModules.default inputs.disko.nixosModules.disko ]; }; AZ-PRM-1 = nixpkgs.lib.nixosSystem { specialArgs = {inherit inputs outputs;}; modules = [ ./hosts/AZ-PRM-1 agenix.nixosModules.default inputs.disko.nixosModules.disko ]; }; AZLT124-L = inputs.nixpkgs-unstable.lib.nixosSystem { specialArgs = {inherit inputs outputs;}; modules = [ ./hosts/AZLT124-L agenix.nixosModules.default inputs.home-manager-unstable.nixosModules.home-manager m3ta-nixpkgs.nixosModules.default ]; }; }; homeConfigurations = { "logistik@AZPILOGISTIK01" = home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages."aarch64-linux"; extraSpecialArgs = { inherit inputs outputs; hostname = "AZPILOGISTIK01"; }; modules = [./home/logistik/AZPILOGISTIK01.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; }; }; }; }; }