From 66c6d2c1dfd4b3ef222bb64d3ccef9be915e0895 Mon Sep 17 00:00:00 2001 From: pennae Date: Fri, 22 Sep 2023 20:55:05 +0200 Subject: initial commit without warranty of any kind, express or impliend --- openwrt/etc.nix | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 openwrt/etc.nix (limited to 'openwrt/etc.nix') diff --git a/openwrt/etc.nix b/openwrt/etc.nix new file mode 100644 index 0000000..8231125 --- /dev/null +++ b/openwrt/etc.nix @@ -0,0 +1,41 @@ +{ config, lib, ... }: + +let + cfg = config.etc; +in + +{ + options.etc = lib.mkOption { + type = lib.types.attrsOf (lib.types.submodule ({ name, ... }: { + options = { + enable = lib.mkEnableOption "this `/etc` file" // { + default = true; + }; + + text = lib.mkOption { + type = lib.types.lines; + description = '' + Contents of the file. + ''; + }; + }; + })); + default = {}; + }; + + config = lib.mkIf (cfg != {}) { + deploySteps.etc = { + priority = 8000; + apply = + lib.concatStrings + (lib.mapAttrsToList + (name: file: lib.optionalString (file.enable) '' + ${lib.optionalString (dirOf name != ".") '' + mkdir -p ${lib.escapeShellArg (dirOf name)} + ''} + echo ${lib.escapeShellArg file.text} >${lib.escapeShellArg "/etc/${name}"} + '') + cfg); + }; + }; +} -- cgit v1.2.3