{ inputs, lib, self, hostName, pkgs, config, ... }: let inherit (lib) mkEnableOption mkOption loadOverlays oizysSettings tryPkgsFromFile listToAttrs ; in { imports = with self.nixosModules; [ users runes essentials nix-improved cli nvim vpn gpg lock qtile hyprland plasma virtualbox docker podman gui fonts hp-scanner languages # programs chrome vscode nix-ld restic llm utils ]; options.oizys = { user = mkOption { type = lib.types.str; default = "daylin"; description = "main user account"; }; desktop.enable = mkEnableOption "is desktop"; docker.enable = mkEnableOption "enable docker support"; packages = mkOption { type = lib.types.attrsOf lib.types.package; description = "attr set of all packages, for use with nix-eval-jobs by `oizys cache`"; }; }; config = { networking.hostName = hostName; time.timeZone = "US/Central"; nixpkgs.overlays = import ../overlays { inherit inputs loadOverlays; }; oizys = oizysSettings hostName // { packages = config.environment.systemPackages |> map (drv: { name = drv.name; value = drv; }) |> listToAttrs; }; environment.systemPackages = tryPkgsFromFile { inherit hostName pkgs; }; }; }