From 8f421acbc5916f627761ccbc050bcbf39358c2e4 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Mon, 15 May 2023 13:45:23 +0200 Subject: [PATCH] nixos/river: init module --- .../manual/release-notes/rl-2311.section.md | 2 + nixos/modules/module-list.nix | 1 + nixos/modules/programs/wayland/river.nix | 59 +++++++++++++++++++ nixos/modules/programs/wayland/sway.nix | 5 +- .../programs/wayland/wayland-session.nix | 5 +- 5 files changed, 65 insertions(+), 7 deletions(-) create mode 100644 nixos/modules/programs/wayland/river.nix diff --git a/nixos/doc/manual/release-notes/rl-2311.section.md b/nixos/doc/manual/release-notes/rl-2311.section.md index d99f4c6ce11..e20fc0ea29c 100644 --- a/nixos/doc/manual/release-notes/rl-2311.section.md +++ b/nixos/doc/manual/release-notes/rl-2311.section.md @@ -10,6 +10,8 @@ +- [river](https://github.com/riverwm/river), A dynamic tiling wayland compositor. Available as [programs.river](#opt-programs.river.enable). + ## Backward Incompatibilities {#sec-release-23.11-incompatibilities} - The latest version of `clonehero` now stores custom content in `~/.clonehero`. See the [migration instructions](https://clonehero.net/2022/11/29/v23-to-v1-migration-instructions.html). Typically, these content files would exist along side the binary, but the previous build used a wrapper script that would store them in `~/.config/unity3d/srylain Inc_/Clone Hero`. diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 2a34c01b999..e5b66619f97 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -255,6 +255,7 @@ ./programs/usbtop.nix ./programs/vim.nix ./programs/wavemon.nix + ./programs/wayland/river.nix ./programs/wayland/sway.nix ./programs/wayland/waybar.nix ./programs/weylus.nix diff --git a/nixos/modules/programs/wayland/river.nix b/nixos/modules/programs/wayland/river.nix new file mode 100644 index 00000000000..20a786ba3c6 --- /dev/null +++ b/nixos/modules/programs/wayland/river.nix @@ -0,0 +1,59 @@ +{ + config, + pkgs, + lib, + ... +}: +with lib; let + cfg = config.programs.river; +in { + options.programs.river = { + enable = mkEnableOption (lib.mdDoc "river, a dynamic tiling Wayland compositor"); + + package = mkOption { + type = with types; nullOr package; + default = pkgs.river; + defaultText = literalExpression "pkgs.river"; + description = lib.mdDoc '' + River package to use. + Set to `null` to not add any River package to your path. + This should be done if you want to use the Home Manager River module to install River. + ''; + }; + + extraPackages = mkOption { + type = with types; listOf package; + default = with pkgs; [ + swaylock + foot + dmenu + ]; + defaultText = literalExpression '' + with pkgs; [ swaylock foot dmenu ]; + ''; + example = literalExpression '' + with pkgs; [ + termite rofi light + ] + ''; + description = lib.mdDoc '' + Extra packages to be installed system wide. See + [Common X11 apps used on i3 with Wayland alternatives](https://github.com/swaywm/sway/wiki/i3-Migration-Guide#common-x11-apps-used-on-i3-with-wayland-alternatives) + for a list of useful software. + ''; + }; + }; + + config = + mkIf cfg.enable (mkMerge [ + { + environment.systemPackages = optional (cfg.package != null) cfg.package ++ cfg.extraPackages; + + # To make a river session available if a display manager like SDDM is enabled: + programs.xwayland.enable = mkDefault true; + } + (import ./wayland-session.nix { inherit lib pkgs; }) + ]); + + meta.maintainers = with lib.maintainers; [ GaetanLepage ]; +} diff --git a/nixos/modules/programs/wayland/sway.nix b/nixos/modules/programs/wayland/sway.nix index 897166058c5..c699c21bd10 100644 --- a/nixos/modules/programs/wayland/sway.nix +++ b/nixos/modules/programs/wayland/sway.nix @@ -150,9 +150,8 @@ in { }; }; # To make a Sway session available if a display manager like SDDM is enabled: - services.xserver.displayManager.sessionPackages = optionals (cfg.package != null) [ cfg.package ]; - } - (import ./wayland-session.nix { inherit lib; }) + services.xserver.displayManager.sessionPackages = optionals (cfg.package != null) [ cfg.package ]; } + (import ./wayland-session.nix { inherit lib pkgs; }) ]); meta.maintainers = with lib.maintainers; [ primeos colemickens ]; diff --git a/nixos/modules/programs/wayland/wayland-session.nix b/nixos/modules/programs/wayland/wayland-session.nix index d58eb39b79a..3cbfef4d61d 100644 --- a/nixos/modules/programs/wayland/wayland-session.nix +++ b/nixos/modules/programs/wayland/wayland-session.nix @@ -1,12 +1,10 @@ -{ lib, ... }: with lib; { - +{ lib, pkgs, ... }: with lib; { security = { polkit.enable = true; pam.services.swaylock = {}; }; hardware.opengl.enable = mkDefault true; - fonts.enableDefaultFonts = mkDefault true; programs = { @@ -14,7 +12,6 @@ xwayland.enable = mkDefault true; }; - xdg.portal = { enable = mkDefault true;