test-vpsadminos-configuration/pinned/default.nix
2018-08-02 12:52:11 +02:00

48 lines
1.6 KiB
Nix

{ 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 <nixpkgs> 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;
}