From 6243c337369b3cb9a3a05e57b3806b3a56a7144b Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Wed, 22 Jun 2022 20:32:09 -0500 Subject: [PATCH] Refactor to a module system --- README.md | 102 +++++++++++++++++++++------------------ example.nix | 41 +++++++--------- flake.nix | 63 +++++++++++------------- lib/modules/build.nix | 10 ++++ lib/modules/files.nix | 21 ++++++++ lib/modules/packages.nix | 10 ++++ lib/modules/services.nix | 10 ++++ lib/modules/system.nix | 49 +++++++++++++++++++ lib/openwrt-system.nix | 22 +++++++++ 9 files changed, 222 insertions(+), 106 deletions(-) create mode 100644 lib/modules/build.nix create mode 100644 lib/modules/files.nix create mode 100644 lib/modules/packages.nix create mode 100644 lib/modules/services.nix create mode 100644 lib/modules/system.nix create mode 100644 lib/openwrt-system.nix 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; }