Configure River

oxbow requires river 0.4.6 or later. This page shows how to install and configure river to start oxbow.

Install river

sudo pacman -S river

Fedora 45 and Rawhide carry river 0.4.6+:

sudo dnf install river

Add the following module to your configuration:

{ pkgs, ... }:
{
  environment.systemPackages = [ pkgs.river ];
}

Attention

River is 0.4.5 in NixOS 26.05. Use nixpkgs unstable for 0.4.6+.

Add the following module to your configuration:

{ pkgs, ... }:
{
  home.packages = [ pkgs.river ];
}

Attention

River is 0.4.5 in NixOS 26.05. Use nixpkgs unstable for 0.4.6+.

Attention

Do not use wayland.windowManager.river. It uses river-classic.

Please see river’s README for the necessary steps.

Configure river

river runs the init script at ~/.config/river/init on startup.

Create ~/.config/river/init script:

#!/bin/sh
eval "$(opam env)"
exec oxbow

Make the script executable:

chmod +x ~/.config/river/init

Replace the module we created earlier:

{ pkgs, ... }:
let
  river-init = pkgs.writeShellScript "river-init" ''
    exec ${pkgs.oxbow}/bin/oxbow
  '';
  wrapped-river = pkgs.symlinkJoin {
    name = "river";
    paths = [ pkgs.river ];
    nativeBuildInputs = [ pkgs.makeWrapper ];
    postBuild = ''
      wrapProgram $out/bin/river --add-flags "-c ${river-init}"
    '';
  };
in
{
  environment.systemPackages = [ wrapped-river ];
}

Attention

Use wrapped-river, not pkgs.river, in display manager entries and systemd services. Only wrapped-river runs the init script.

Add the following module to your configuration:

{ pkgs, ... }:
{
  xdg.configFile."river/init" = {
    executable = true;
    text = ''
      #!/bin/sh
      exec ${pkgs.oxbow}/bin/oxbow
    '';
  };
}