{ inputs, lib, system, ... }: { my = import ./my.nix { inherit lib inputs system; }; dns = import ./dns.nix { inherit lib inputs system; }; packages = import ./packages.nix { inherit lib inputs system; }; inherit ((import inputs.infuse { inherit lib; }).v1) infuse; isEven = number: assert builtins.isInt number || builtins.isFloat number; builtins.div number 2 == 0; isOdd = number: !lib.isEven number; pow = base: exponent: assert builtins.isInt base && builtins.isInt exponent; assert exponent > 0; exponent |> builtins.genList (_: _) |> builtins.foldl' (x: _: x * base) 1; mkTcpMem = min: ini: max: assert min <= ini && ini <= max; [ min ini max ] |> map (lib.pow 2) |> map toString |> lib.concatStringsSep " "; # Load all files from directory (partially recursively). # # Usage: Assuming other Nix files are present in a directory: # ``` # { ... }: { # imports = modulesIn ./. |> attrValues; # # services.foobar.enable = true; # } # ``` # modulesIn = dir: dir |> builtins.readDir |> lib.mapAttrsToList ( name: type: let modulePath = dir + "/${name}"; in if type == "regular" && lib.hasSuffix ".nix" name && name != "default.nix" then [ (lib.nameValuePair (lib.removeSuffix ".nix" name) modulePath) ] else if type == "directory" && lib.pathExists (modulePath + "/default.nix") then [ (lib.nameValuePair name modulePath) ] else [ ] ) |> lib.concatLists |> lib.listToAttrs; # Override a module using another Nixpkgs source tree. # # Usage: Assuming we want to override "services.foobar.enable": # ``` # { config, lib, ... }: # (lib.modulesFromRef # "services/security/foobar.nix" # "azahi:fix-foobar" # Can be copied form a PR. # "sha256-AAA..." # ) // { # config = { # serices.foobar.enable = true; # }; # } # ``` # or # ``` # nixosConfigurations.machine = nixosSystem { # modules = [ # (_: moduleFromRef "services/security/foobar.nix" "azahi:foobar-fix" "sha256-AAA...") # ]; # }; # ``` # moduleFromRef = module: ref: sha256: { disabledModules = [ module ]; imports = [ ( let src = inputs.nixpkgs.legacyPackages.${system}.fetchzip { url = let cons = lib.splitString ":" ref; owner = lib.head cons; branch = lib.last cons; in "https://github.com/${owner}/nixpkgs/archive/refs/heads/${branch}.tar.gz"; inherit sha256; }; in "${src}/nixos/modules/${module}" ) ]; }; }