{ description = "Monitoring tool for homelab"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; outputs = { self, nixpkgs }: let allSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; forAllSystems = f: nixpkgs.lib.genAttrs allSystems ( system: f { pkgs = import nixpkgs { inherit system; }; } ); in { overlays.default = final: prev: { labmon = self.packages.${prev.system}.default; }; nixosModules.labmon = import ./nix/module.nix; nixosModules.default = self.nixosModules.labmon; packages = forAllSystems ( { pkgs }: { default = let src = pkgs.lib.sourceFilesBySuffices ./. [ "go.mod" "go.sum" ".go" ]; version = pkgs.lib.strings.removePrefix "v" ( builtins.elemAt (pkgs.lib.strings.split "\"" ( pkgs.lib.lists.findFirst (x: pkgs.lib.strings.hasInfix "Version" x) null ( pkgs.lib.strings.splitString "\n" (builtins.readFile ./main.go) ) )) 2 ); in pkgs.buildGoModule { version = version; pname = "labmon"; src = src; vendorHash = "sha256-C9Lr3Q+hqkKvGAacg0YvgGFaHvCeeOO5EfJD29bvJhA="; }; } ); devShells = forAllSystems ( { pkgs }: { default = pkgs.mkShell { packages = with pkgs; [ go golangci-lint ]; }; } ); }; }