{ pkgs, sysLib, river_init_lesser, nixosConfig, system, ... }: let inherit (nixosConfig.networking) hostName; mappings = if hostName == "tiamat" then '' err_fail riverctl keyboard-layout 'us-modified' err_fail river_init_lesser ~/.config/river/res/moonlander.ron '' else if hostName == "lahmu" || hostName == "apzu" || hostName == "mammun" || hostName == "isimud" then '' err_fail riverctl keyboard-layout 'dvorak-modified' err_fail river_init_lesser ~/.config/river/res/keys.ron '' else builtins.throw "Host not covered in river mappings"; screen_setup = if hostName == "lahmu" then '' err_fail wlr-randr --output Virtual-1 --mode 1920x1080 '' else if hostName == "tiamat" then '' err_fail wlr-randr --output DP-2 --pos 2560,0 err_fail wlr-randr --output DP-1 --scale 1.5 --pos 0,0 err_fail gammastep & '' else if hostName == "apzu" || hostName == "mammun" || hostName == "isimud" then '' err_fail gammastep & '' else builtins.throw "Host not covered in river screen setup"; env_vars = "XDG_CURRENT_DESKTOP=river DESKTOP_SESSION=river"; init_scr = pkgs.substituteAll { src = ./init.sh; inherit mappings screen_setup env_vars; }; in { home.sessionVariables = { WM = "river"; XDG_CURRENT_DESKTOP = "river"; DESKTOP_SESSION = "river"; # Export Wayland env Vars {{{ QT_QPA_PLATFORM = "wayland"; QT_QPA_PLATFORMTHEME = "qt5ct"; # needs qt5ct CLUTTER_BACKEND = "wayland"; SDL_VIDEODRIVER = "wayland"; # might brake some things # }}} }; xdg.configFile."river/init".source = sysLib.writeShellScript { name = "river_init"; src = init_scr; keepPath = true; dependencies = builtins.attrValues { river_init_lesser = river_init_lesser.packages.${system}.default; inherit (pkgs) dash river glib # gnome lib gammastep wlr-randr yambar mako swaybg swayidle swaylock alacritty ; }; } + /bin/river_init; # TODO: These mappings should be generated in nix. (Which would allow to replace the # `mpc` pat adding.) <2024-11-16> # Needed for the key-mappings. home.packages = [pkgs.mpc]; xdg.configFile."river/res".source = ./res; }