summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/default.nix7
-rw-r--r--modules/outputs.nix15
-rw-r--r--modules/pkgs.nix22
-rw-r--r--modules/sources.nix20
4 files changed, 64 insertions, 0 deletions
diff --git a/modules/default.nix b/modules/default.nix
new file mode 100644
index 0000000..0c1f907
--- /dev/null
+++ b/modules/default.nix
@@ -0,0 +1,7 @@
+{
+ imports = [
+ ./outputs.nix
+ ./pkgs.nix
+ ./sources.nix
+ ];
+}
diff --git a/modules/outputs.nix b/modules/outputs.nix
new file mode 100644
index 0000000..3ceaf7c
--- /dev/null
+++ b/modules/outputs.nix
@@ -0,0 +1,15 @@
+{ lib, ... }:
+
+let
+ outputsSubmodule = {
+ freeformType = lib.types.lazyAttrsOf lib.types.raw;
+ };
+in
+
+{
+ options.outputs = lib.mkOption {
+ type = lib.types.submodule outputsSubmodule;
+ default = { };
+ description = "Outputs to pass to the top-level file.";
+ };
+}
diff --git a/modules/pkgs.nix b/modules/pkgs.nix
new file mode 100644
index 0000000..d984859
--- /dev/null
+++ b/modules/pkgs.nix
@@ -0,0 +1,22 @@
+{ config, lib, ... }:
+
+{
+ options.pkgs = lib.mkOption {
+ type = lib.types.nullOr (lib.types.lazyAttrsOf lib.types.raw);
+ default =
+ if (config.sources ? "nixpkgs") then
+ import config.sources.nixpkgs {
+ config = { };
+ overlays = [ ];
+ }
+ else
+ null;
+ defaultText = "if (sources has nixpkgs) import sources.nixpkgs { ... } else null";
+ description = "The instance of `nixpkgs` to pass as a module argument.";
+ example = lib.literalExpression "import <nixpkgs> { config = { allowUnfree = true; }; }";
+ };
+
+ config = {
+ _module.args = { inherit (config) pkgs; };
+ };
+}
diff --git a/modules/sources.nix b/modules/sources.nix
new file mode 100644
index 0000000..6fb8d32
--- /dev/null
+++ b/modules/sources.nix
@@ -0,0 +1,20 @@
+{ config, lib, ... }:
+
+let
+ sourcesSubmodule = {
+ freeformType = lib.types.lazyAttrsOf lib.types.raw;
+ };
+in
+
+{
+ options.sources = lib.mkOption {
+ type = lib.types.submodule sourcesSubmodule;
+ default = { };
+ description = "Sources used across modules.";
+ example = lib.literalExpression "import ./npins";
+ };
+
+ config = {
+ _module.args = { inherit (config) sources; };
+ };
+}