{ withSystem, self, nixpkgs, inputs, ... }: { systems = [ "x86_64-linux" "aarch64-linux" ]; imports = [ ../systems/default.nix ]; perSystem = { pkgs, ... }: { packages = { pokego = pkgs.callPackage ./pkgs/pokego.nix { }; http-nu = pkgs.callPackage ./pkgs/http-nu.nix { }; topiary-nu = pkgs.callPackage ./pkgs/topiary-nu.nix { }; atproto-lastfm-importer = pkgs.callPackage ./pkgs/atproto-lastfm-importer.nix { }; multi-scrobbler = pkgs.callPackage ./pkgs/multi-scrobbler.nix { }; wakuna-image = self.lib.sdImageFromSystem self.nixosConfigurations.wakuna; }; checks = { pds-simple = pkgs.callPackage ./pds/pds-recovery-simple.nix { inherit (inputs) nixpkgs; }; pds-full = pkgs.callPackage ./pds/pds-recovery-full.nix { inherit (inputs) nixpkgs; }; }; formatter = pkgs.nixfmt; devShells.default = pkgs.mkShell { packages = with pkgs; [ sops ]; }; }; flake = let inherit (nixpkgs) lib; in { lib = { sdImageFromSystem = system: system.config.system.build.sdImage; mkSystem' = system: hostname: withSystem system ( { inputs', self', ... }: lib.nixosSystem { specialArgs = { inherit inputs inputs' self self' ; }; modules = [ { networking.hostName = hostname; } ./core.nix ./systems/${hostname} ]; } ); mkSystem = system: hostname: { ${hostname} = self.lib.mkSystem' system hostname; }; mkSystems = system: hosts: lib.mergeAttrsList (map (self.lib.mkSystem system) hosts); }; overlays.default = import ./overlays; homeModules = { dev = import ./dev/home.nix; desktop = import ./desktop/home.nix; }; nixosModules = { dev = import ./dev/nixos.nix; desktop = import ./desktop/nixos.nix; multi-scrobbler = import ./services/multi-scrobbler.nix; pds = import ./pds/nixos.nix; }; }; }