{ inputs ? rec { nixpkgs.lib = import // { nixosSystem = import ; }; stockholm.overlays.default = import ; stockholm.inputs.nix-writers = ; stockholm.nixosModules = let inherit (nixpkgs) lib; in builtins.listToAttrs (map # to preserve the file name for debugability, don't import here (name: {name = lib.removeSuffix ".nix" name; value = ( + "/${name}");}) (lib.filter (name: name != "default.nix" && !lib.hasPrefix "." name) (lib.attrNames (builtins.readDir )))); } , mylib ? (import ./. { inherit (inputs.nixpkgs) lib; }).mylib , overlays ? [ (import (inputs.stockholm.inputs.nix-writers + "/pkgs")) (self: super: { stockholm.lib.types = self.lib.types // { inherit (self.mylib.types) hostname secret-file ; }; inherit (inputs.stockholm.overlays.default self super) brain cgit-clear-cache git-hooks htgen htgen-imgur htgen-paste irc-announce painload repo-sync ; }) (self: super: { inherit mylib; }) (import ./pkgs) ] , extraModules ? [] }: { nixosConfigurations = inputs.nixpkgs.lib.mapAttrs (name: _: let minimal.enable = name == "oai"; system = (import ./systems/${name}/spec.nix).system; in inputs.nixpkgs.lib.nixosSystem { inherit system; specialArgs = { inherit inputs; lib = inputs.nixpkgs.lib // { # for stockholm. # without it krebs.hosts.*.nets.*.prefix breaks for ne # due to patched types. slib = mylib; }; mylib = mylib // { importSecret = p: _: {}; }; }; modules = [ ({ lib, ... }: { _file = "${toString ./legacy.nix} #1"; imports = lib.optionals minimal.enable [ (./systems + "/${name}/config.nix") ]; }) ({ lib, mylib, ... }: { _file = "${toString ./legacy.nix} #2"; imports = lib.optionals (!minimal.enable) [ (./systems + "/${name}/config.nix") (let dirt = ./systems + "/${name}/dirt"; in if builtins.pathExists dirt then dirt else {}) { _file = "${toString ./legacy.nix} #2.1"; imports = [ inputs.stockholm.nixosModules.build inputs.stockholm.nixosModules.dns inputs.stockholm.nixosModules.exim inputs.stockholm.nixosModules.exim-retiolum inputs.stockholm.nixosModules.exim-smarthost inputs.stockholm.nixosModules.github inputs.stockholm.nixosModules.hosts inputs.stockholm.nixosModules.htgen inputs.stockholm.nixosModules.kartei inputs.stockholm.nixosModules.krebs inputs.stockholm.nixosModules.nixpkgs inputs.stockholm.nixosModules.on-failure inputs.stockholm.nixosModules.iana-etc inputs.stockholm.nixosModules.per-user inputs.stockholm.nixosModules.permown inputs.stockholm.nixosModules.repo-sync inputs.stockholm.nixosModules.secret inputs.stockholm.nixosModules.setuid inputs.stockholm.nixosModules.shadow inputs.stockholm.nixosModules.sitemap inputs.stockholm.nixosModules.ssh inputs.stockholm.nixosModules.systemd inputs.stockholm.nixosModules.tinc inputs.stockholm.nixosModules.users inputs.stockholm.nixosModules.zones ]; nixpkgs.overlays = overlays; } ./configs ./modules { imports = extraModules; } ]; }) ]; } ) (builtins.readDir ./systems); }