2015-10-17 04:30:20 +00:00
|
|
|
{ current-date ? abort "current-date not defined"
|
|
|
|
, current-host-name ? abort "current-host-name not defined"
|
|
|
|
, current-user-name ? builtins.getEnv "LOGNAME"
|
2015-10-21 22:20:16 +00:00
|
|
|
, StrictHostKeyChecking ? "yes"
|
|
|
|
}@args:
|
2015-07-24 15:34:08 +00:00
|
|
|
|
2015-10-20 01:56:38 +00:00
|
|
|
let stockholm = {
|
2015-10-20 00:33:58 +00:00
|
|
|
inherit krebs;
|
|
|
|
inherit users;
|
|
|
|
inherit lib;
|
2015-10-21 20:29:35 +00:00
|
|
|
inherit pkgs;
|
2015-10-20 00:33:58 +00:00
|
|
|
};
|
|
|
|
|
2015-10-21 22:20:16 +00:00
|
|
|
krebs = import ./krebs (args // { inherit lib stockholm; });
|
2015-10-20 22:08:18 +00:00
|
|
|
|
|
|
|
lib =
|
|
|
|
let
|
|
|
|
lib = import <nixpkgs/lib>;
|
|
|
|
klib = import ./krebs/4lib { inherit lib; };
|
|
|
|
#ulib = import (./. + "/${current-user-name}/4lib") { lib = lib // klib; };
|
|
|
|
ulib = {}; # TODO
|
|
|
|
in
|
|
|
|
builtins // lib // klib // ulib // rec {
|
|
|
|
# TODO move this stuff
|
|
|
|
stockholm-path = ./.;
|
|
|
|
nspath = ns: p: stockholm-path + "/${ns}/${p}";
|
|
|
|
};
|
2015-10-17 03:44:42 +00:00
|
|
|
|
2015-10-21 20:29:35 +00:00
|
|
|
inherit (eval {}) pkgs;
|
|
|
|
|
2015-10-20 00:33:58 +00:00
|
|
|
kpath = lib.nspath "krebs";
|
|
|
|
upath = lib.nspath current-user-name;
|
|
|
|
|
2015-10-25 13:15:21 +00:00
|
|
|
base-module = { config, ... }: {
|
2015-11-06 21:05:36 +00:00
|
|
|
imports = builtins.filter builtins.pathExists (lib.concatLists [
|
|
|
|
(map (f: f "2configs") [ upath ])
|
|
|
|
(map (f: f "3modules") [ kpath upath ])
|
|
|
|
]);
|
2015-10-17 03:44:42 +00:00
|
|
|
|
2015-10-25 13:15:21 +00:00
|
|
|
krebs.current.enable = true;
|
|
|
|
krebs.current.host = config.krebs.hosts.${current-host-name};
|
|
|
|
krebs.current.user = config.krebs.users.${current-user-name};
|
|
|
|
|
2015-10-17 03:44:42 +00:00
|
|
|
nixpkgs.config.packageOverrides = pkgs:
|
|
|
|
let
|
2015-10-20 22:08:18 +00:00
|
|
|
kpkgs = import (kpath "5pkgs") { inherit lib pkgs; };
|
|
|
|
upkgs = import (upath "5pkgs") { inherit lib; pkgs = pkgs // kpkgs; };
|
2015-10-17 03:44:42 +00:00
|
|
|
in
|
|
|
|
kpkgs // upkgs;
|
|
|
|
};
|
2015-10-02 13:29:47 +00:00
|
|
|
|
2015-10-20 00:33:58 +00:00
|
|
|
eval = config: import <nixpkgs/nixos/lib/eval-config.nix> {
|
2015-10-20 22:08:18 +00:00
|
|
|
specialArgs = {
|
|
|
|
inherit lib;
|
|
|
|
};
|
2015-09-26 22:22:50 +00:00
|
|
|
modules = [
|
2015-10-20 01:49:10 +00:00
|
|
|
base-module
|
2015-10-20 00:33:58 +00:00
|
|
|
config
|
2015-07-25 16:16:51 +00:00
|
|
|
];
|
|
|
|
};
|
2015-07-24 15:34:08 +00:00
|
|
|
|
2015-10-20 00:33:58 +00:00
|
|
|
# TODO move user namespaces' to users/, so no exception for krebs/ is needed
|
|
|
|
users =
|
|
|
|
lib.mapAttrs
|
|
|
|
(name: _: eval-all-systems (lib.nspath name "1systems"))
|
|
|
|
(lib.filterAttrs
|
|
|
|
(n: t: !lib.hasPrefix "." n && t == "directory" && n != "krebs")
|
|
|
|
(builtins.readDir ./.));
|
|
|
|
|
|
|
|
eval-all-systems = path:
|
|
|
|
lib.mapAttrs'
|
|
|
|
(n: _: (lib.nameValuePair (lib.removeSuffix ".nix" n)
|
|
|
|
(eval-system (path + "/${n}"))))
|
|
|
|
(builtins.readDir path);
|
2015-09-26 22:22:50 +00:00
|
|
|
|
2015-10-20 00:33:58 +00:00
|
|
|
eval-system = path: rec {
|
2015-09-26 22:22:50 +00:00
|
|
|
inherit (eval path) config options;
|
|
|
|
system = config.system.build.toplevel;
|
|
|
|
};
|
|
|
|
|
2015-10-20 01:56:38 +00:00
|
|
|
in stockholm
|