From 45156e2bdb359c22398f8c7a60fb729ad168786a Mon Sep 17 00:00:00 2001 From: Chris Wells Date: Thu, 25 Jan 2024 11:26:31 -0600 Subject: This distribution is coming together --- modules/file.nix | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 modules/file.nix (limited to 'modules/file.nix') diff --git a/modules/file.nix b/modules/file.nix new file mode 100644 index 0000000..a52fb84 --- /dev/null +++ b/modules/file.nix @@ -0,0 +1,46 @@ +{ config, pkgs, lib, ... }: +with builtins // lib; +let + cfg = config.file; +in { + options.file = mkOption { + default = {}; + type = with types; lazyAttrsOf (submodule ({ name, config, ... }: { + options = { + enable = mkEnableOption name // { default = true; }; + target = mkOption { + type = types.str; + default = name; + }; + executable = mkOption { + type = with types; nullOr bool; + default = null; + }; + directory = mkOption { + type = types.bool; + default = false; + description = '' + Enable this if the source file is a directory. Note that directories are copied first when forming the source + ''; + }; + source = mkOption { + type = types.path; + }; + text = mkOption { + type = with types; nullOr lines; + default = null; + }; + }; + + config = mkMerge [ + (mkIf (config.text != null) { + directory = false; + source = pkgs.writeText name config.text; + }) + (mkIf (config.text == "") { + enable = false; + }) + ]; + })); + }; +} -- cgit v1.2.3