diff options
Diffstat (limited to 'modules/by-name/ri/river/module.nix')
| -rw-r--r-- | modules/by-name/ri/river/module.nix | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/modules/by-name/ri/river/module.nix b/modules/by-name/ri/river/module.nix index 63e25f62..75725a8d 100644 --- a/modules/by-name/ri/river/module.nix +++ b/modules/by-name/ri/river/module.nix @@ -10,14 +10,14 @@ { config, lib, - qmk_firmware, system, pkgs, + externalBinaries, ... }: let cfg = config.soispha.programs.river; esa = lib.strings.escapeShellArg; - riverctl = lib.getExe' pkgs.river "riverctl"; + riverctl = lib.getExe' cfg.package "riverctl"; mkOutputFlags = output: flags: let expandedFlags = builtins.concatStringsSep " " (lib.attrsets.mapAttrsToList (flag: value: "--${esa flag} ${esa value}") flags); @@ -36,10 +36,22 @@ longRunningPrograms = builtins.concatStringsSep "\n" (builtins.map mkLrProgram cfg.init.backgroundStart); keymapFormat = pkgs.formats.json {}; + keymapGenerate = name: value: + pkgs.runCommandLocal "mk-${name}-and-check" { + nativeBuildInputs = [pkgs.river-mk-keymap]; + preferLocalBuild = true; + + env = { + JSON_FILE = keymapFormat.generate name value; + }; + } '' + river-mk-keymap --keymap "$JSON_FILE" init --dry-run; + cp "$JSON_FILE" "$out" + ''; keymappings = '' err_fail ${riverctl} keyboard-layout ${esa cfg.init.mappings.layout} - err_fail ${lib.getExe pkgs.river-mk-keymap} ${keymapFormat.generate "keys.json" cfg.init.mappings.keymap} + err_fail ${lib.getExe pkgs.river-mk-keymap} --keymap ${keymapGenerate "keys.json" cfg.init.mappings.keymap} init ''; mkRule = { @@ -72,6 +84,8 @@ in { options.soispha.programs.river = { enable = lib.mkEnableOption "river"; + package = lib.mkPackageOption pkgs "river-classic" {}; + unicodeInput = { enable = lib.mkEnableOption "udev rules for rawhid based unicode input"; }; @@ -175,8 +189,12 @@ in { }; }; + imports = [ + ./keymap.nix + ]; + config = lib.mkIf cfg.enable { - services.udev.packages = lib.mkIf cfg.unicodeInput.enable [qmk_firmware.packages.${system}.qmk_unicode_type]; + services.udev.packages = lib.mkIf cfg.unicodeInput.enable [externalBinaries.qmk_firmware.packages.${system}.qmk_unicode_type]; home-manager.users.soispha = { home.sessionVariables = { @@ -193,7 +211,7 @@ in { }; home.packages = [ - pkgs.river-start + (pkgs.callPackage ./river-start/package.nix {}) ]; xdg.configFile."river/init" = { @@ -219,7 +237,7 @@ in { + mkHeading "Background services" longRunningPrograms + mkHeading "Layout Setup" '' err_fail ${riverctl} default-layout rivertile - ${lib.getExe' pkgs.river "rivertile"} -main-ratio 0.5 -view-padding 1 -outer-padding 0 + ${lib.getExe' cfg.package "rivertile"} -main-ratio 0.5 -view-padding 1 -outer-padding 0 ''; }; }; |
