about summary refs log tree commit diff stats
path: root/modules/by-name/ri/river/module.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/by-name/ri/river/module.nix')
-rw-r--r--modules/by-name/ri/river/module.nix26
1 files changed, 22 insertions, 4 deletions
diff --git a/modules/by-name/ri/river/module.nix b/modules/by-name/ri/river/module.nix
index 33c8a713..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];
 
@@ -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
           '';
       };
     };