forked from fabian/nix_config
add doctrine
This commit is contained in:
parent
1c7810a49e
commit
26619394f4
10 changed files with 113 additions and 63 deletions
12
doctrine/default.nix
Normal file
12
doctrine/default.nix
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
pkgs,
|
||||
namespace,
|
||||
}: let
|
||||
doctrine = {
|
||||
lib = import ./lib {inherit lib pkgs doctrine;};
|
||||
prefix = "trivium";
|
||||
inherit namespace;
|
||||
};
|
||||
inherit (pkgs) lib;
|
||||
in
|
||||
doctrine
|
10
doctrine/lib/default.nix
Normal file
10
doctrine/lib/default.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
lib,
|
||||
doctrine,
|
||||
pkgs,
|
||||
}: let
|
||||
close = f: args: f (args // {inherit lib pkgs doctrine;});
|
||||
in {
|
||||
importAll = pkgs.callPackage ./importAll.nix {};
|
||||
mkModule = close (import ./mk-module.nix);
|
||||
}
|
20
doctrine/lib/importAll.nix
Normal file
20
doctrine/lib/importAll.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{lib}: {
|
||||
root,
|
||||
exclude ? [],
|
||||
}:
|
||||
with builtins;
|
||||
with lib;
|
||||
# http://chriswarbo.net/projects/nixos/useful_hacks.html
|
||||
let
|
||||
basename = removeSuffix ".nix";
|
||||
|
||||
isMatch = name: type:
|
||||
(hasSuffix ".nix" name || type == "directory")
|
||||
&& ! elem name (map basename exclude);
|
||||
|
||||
entry = name: _: {
|
||||
name = basename name;
|
||||
value = import (root + "/${name}");
|
||||
};
|
||||
in
|
||||
mapAttrs' entry (filterAttrs isMatch (readDir root))
|
38
doctrine/lib/mk-module.nix
Normal file
38
doctrine/lib/mk-module.nix
Normal file
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
name,
|
||||
hm ? null,
|
||||
sys ? null,
|
||||
options ? null,
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
doctrine,
|
||||
}: let
|
||||
optionsSet = import options {
|
||||
inherit config lib pkgs cfg name doctrine;
|
||||
};
|
||||
|
||||
configSet = import configFiles.${doctrine.namespace} {
|
||||
inherit config lib pkgs doctrine cfg;
|
||||
};
|
||||
|
||||
configFiles = lib.filterAttrs (k: v: v != null) {
|
||||
inherit sys hm;
|
||||
};
|
||||
|
||||
cfg = config.${doctrine.prefix}.${name};
|
||||
in {
|
||||
config =
|
||||
lib.optionalAttrs (configFiles ? ${doctrine.namespace})
|
||||
(lib.mkIf cfg.enable configSet);
|
||||
|
||||
options = lib.optionalAttrs (options
|
||||
!= null
|
||||
&& optionsSet ? ${doctrine.namespace}) {
|
||||
${doctrine.prefix}.${name} =
|
||||
optionsSet.${doctrine.namespace}
|
||||
// {
|
||||
enable = lib.mkEnableOption name;
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue