{ description = "Message-based NixOS deployment system using NATS"; inputs = { nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; }; outputs = { self, nixpkgs }: let supportedSystems = [ "x86_64-linux" "aarch64-linux" ]; forAllSystems = nixpkgs.lib.genAttrs supportedSystems; pkgsFor = system: nixpkgs.legacyPackages.${system}; in { packages = forAllSystems (system: let pkgs = pkgsFor system; # Extract version from main.go version = builtins.head ( builtins.match ''.*const version = "([^"]+)".*'' (builtins.readFile ./cmd/homelab-deploy/main.go) ); in { homelab-deploy = pkgs.buildGoModule { pname = "homelab-deploy"; inherit version; src = ./.; vendorHash = "sha256-CN+l0JbQu+HDfotkt3PUFzBexHCHpCKIIZpAQRyojBk="; subPackages = [ "cmd/homelab-deploy" ]; }; default = self.packages.${system}.homelab-deploy; }); devShells = forAllSystems (system: let pkgs = pkgsFor system; in { default = pkgs.mkShell { buildInputs = with pkgs; [ go gopls gotools golangci-lint govulncheck delve ]; }; }); nixosModules.default = import ./nixos/module.nix { inherit self; }; nixosModules.homelab-deploy = self.nixosModules.default; }; }