diff --git a/README.md b/README.md index 3d83687..c357891 100644 --- a/README.md +++ b/README.md @@ -24,38 +24,43 @@ firmware. ```nix let - pkgs = import {}; - - # use fetchurl, Hydra inputs, or something else to refer to this project openwrt-imagebuilder = ../nix-openwrt-imagebuilder; - profiles = import (openwrt-imagebuilder + "/profiles.nix") { inherit pkgs; }; + openwrtSystem = import (openwrt-imagebuilder + "/lib/openwrt-system.nix"); - # example: find target/variant for an old Fritzbox - config = profiles.identifyProfile "avm_fritz7412" // { - # add package to include in the image, ie. packages that you don't - # want to install manually later - packages = [ "tcpdump" ]; + sys = openwrtSystem { + pkgs = import { }; + modules = [ + ({ pkgs, ... }: { - disabledServices = [ "dnsmasq" ]; + # find target/variant for an old Fritzbox + system.profile = "avm_fritz7412"; - # include files in the images. - # to set UCI configuration, create a uci-defauts scripts as per - # official OpenWRT ImageBuilder recommendation. - files = pkgs.runCommandNoCC "image-files" {} '' - mkdir -p $out/etc/uci-defaults - cat > $out/etc/uci-defaults/99-custom < $out/etc/uci-defaults/99-custom < $out/etc/uci-defaults/99-custom < $out/etc/uci-defaults/99-custom < {} -, profiles ? import ./profiles.nix { inherit pkgs; } -, build ? import ./builder.nix -}: -build ( - profiles.identifyProfile "avm_fritz7412" - // - { - packages = [ - "tcpdump" - "vxlan" "kmod-vxlan" - ]; - files = pkgs.runCommandNoCC "image-files" {} '' - mkdir -p $out/etc/uci-defaults - cat > $out/etc/uci-defaults/99-custom < $out/etc/uci-defaults/99-custom < $out/etc/uci-defaults/99-custom < { }, modules }: + +let + result = pkgs.lib.evalModules { + modules = [ + ({ config, ... }: { + config._module.args = { + inherit pkgs; + profiles = import ../profiles.nix { + inherit pkgs; + inherit (config.system) release; + }; + }; + }) + ./modules/system.nix + ./modules/files.nix + ./modules/packages.nix + ./modules/services.nix + ./modules/build.nix + ] ++ modules; + }; +in { inherit (result) config options; }