{ lib, pkgs, ... }: with builtins; rec { vpsadminos_spec = builtins.fromJSON (builtins.readFile ./pinned/vpsadminos.json); vpsadminosGit = trace vpsadminos_spec pkgs.fetchgit { inherit (vpsadminos_spec) url rev sha256; leaveDotGit = true; }; # if you need to build directly from git for testing # - uses filterSource to get rid of .git and a custom filter to exclude possible disk images /* vpsadminosGit = builtins.filterSource (p: t: lib.cleanSourceFilter p t && (!lib.hasSuffix "img" (baseNameOf p)) && (baseNameOf p != "local.nix") ) ../../git/vpsadminos; */ nixpkgsVpsFree_spec = builtins.fromJSON (builtins.readFile ./pinned/nixpkgs-vpsfreecz.json); nixpkgsVpsFreeGit = pkgs.fetchgit { inherit (nixpkgsVpsFree_spec) url rev sha256; leaveDotGit = true; }; nixpkgsVpsFree = import nixpkgsVpsFreeGit {}; vpsadminos = {modules ? []}: let # this is fed into scopedImport so vpsadminos sees correct everywhere overrides = { __nixPath = [ { prefix = "nixpkgs"; path = nixpkgsVpsFree.path; } ] ++ builtins.nixPath; import = fn: scopedImport overrides fn; scopedImport = attrs: fn: scopedImport (overrides // attrs) fn; builtins = builtins // overrides; }; in builtins.scopedImport overrides (vpsadminosGit + "/os/") { nixpkgs = nixpkgsVpsFree.path; system = "x86_64-linux"; extraModules = modules; vpsadmin = vpsadminGit; }; vpsadminosBuild = {modules ? []}: (vpsadminos { inherit modules; }).config.system.build; }