diff options
Diffstat (limited to '')
| -rw-r--r-- | modules/by-name/ri/river/module.nix | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/modules/by-name/ri/river/module.nix b/modules/by-name/ri/river/module.nix index 38d4bdef..75725a8d 100644 --- a/modules/by-name/ri/river/module.nix +++ b/modules/by-name/ri/river/module.nix @@ -17,7 +17,7 @@ }: 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,6 +189,10 @@ in { }; }; + imports = [ + ./keymap.nix + ]; + config = lib.mkIf cfg.enable { services.udev.packages = lib.mkIf cfg.unicodeInput.enable [externalBinaries.qmk_firmware.packages.${system}.qmk_unicode_type]; @@ -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 ''; }; }; |
