From 3c986ff650f04bb19597e3d519d3ebcfbd9e18a7 Mon Sep 17 00:00:00 2001 From: Chris Wells Date: Thu, 16 Oct 2025 12:41:27 -0500 Subject: qmk_firmware package and started writing build modules --- modules/default.nix | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) (limited to 'modules') diff --git a/modules/default.nix b/modules/default.nix index c5b8e4e..b6ac53a 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -19,7 +19,9 @@ in { kbds = mkOption { default = {}; - type = types.attrsOf <| types.submodule (args: { + type = types.attrsOf <| types.submodule (args: let + cfg = args.config; + in { options = { firmware = { type = mkOption { @@ -40,32 +42,40 @@ in { name = mkOption { type = types.str; description = "path to keyboard"; + example = "4pplet/steezy60"; }; revision = mkOption { type = types.nullOr types.str; description = "keyboard revision"; + example = "rev_a" }; - _path = mkOption { + _basePath = mkOption { type = types.str; - default = lib.concatStringsSep "/" ([ args.config.name ] ++ optional (args.config.revision != null) args.config.revision); + internal = true; + default = "keyboards/${cfg.qmk.keyboard.name}"; }; - _keymapsPath = mkOption { + _path = mkOption { type = types.str; - default = lib.concatStringsSep [ args.config.qmk.keyboard._path "keymaps" ]; + internal = true + default = lib.concatStringsSep "/" ([cfg.qmk.keyboard.basePath] ++ optional (cfg.qmk.keyboard.revision != null) cfg.qmk.keyboard.revision); }; + }; keymap = { name = mkOption { type = types.str; + default = "default"; + example = "default"; }; _path = mkOption { type = types.str; - default = "${args.config.qmk.keyboard._path}/keymaps/${args.config.qmk.keymap.name}"; + default = "${cfg.qmk.keyboard._basePath}/keymaps/${cfg.qmk.keymap.name}"; + internal = true; }; src = mkOption { @@ -78,13 +88,13 @@ in { bin = mkOption { type = types.path; default = let - ksrc = args.config.keymap.src; + ksrc = cfg.qmk.keymap.src; in pkgs.stdenv.mkDerivation { - name = "qmk:${args.config.qmk.keyboard._path}:${args.config.qmk.keymap.name}"; + name = "qmk:${cfg.qmk.keyboard._path}:${cfg.qmk.keymap.name}"; srcs = [ { name = "qmk_firmware"; - src = args.config.firmware.qmk_firmware; + src = cfg.qmk_firmware; } ] ++ lib.optional (ksrc != null) { name = "keymap"; @@ -93,18 +103,18 @@ in { sourceRoot = "qmk_firmware"; - nativeBuildImports = [ - pkgs.qmk - ]; + # nativeBuildImports = [ + # pkgs.qmk + # ]; postUnpack = lib.optionalString (ksrc != null) '' - mkdir -pv "keyboards/${args.config.keymap._path}" - cp -rv ../keymap/* "keyboards/${args.config.keymap._path}" + mkdir -pv "${cfg.qmk.keymap._path}" + cp -rv ../keymap/* "${cfg.qmk.keymap._path}" ''; buildPhase = '' SKIP_GIT=yes SKIP_VERSION=yes \ - make "keyboards/${args.config.keyboard._path}:${args.config.keymap.name}" + make "${cfg.qmk.keyboard._path}:${cfg.qmk.keymap.name}" ''; installPhase = '' -- cgit v1.2.3