56 lines
1.5 KiB
Nix
56 lines
1.5 KiB
Nix
{
|
|
config,
|
|
inputs,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}: let
|
|
inherit (lib.modules) mkForce mkIf;
|
|
inherit (lib.options) mkEnableOption;
|
|
|
|
inherit (config.modules.system) isGraphical;
|
|
cfg = config.modules.desktops.niri;
|
|
|
|
latestNightly = (inputs.rust-overlay.lib.mkRustBin {} pkgs).nightly.latest.default;
|
|
rustPlatform = pkgs.makeRustPlatform {
|
|
rustc = latestNightly;
|
|
cargo = latestNightly;
|
|
stdenv = pkgs.clangStdenv;
|
|
};
|
|
|
|
new-swww = (pkgs.swww.override {inherit rustPlatform;}).overrideAttrs (prev: {
|
|
src = pkgs.fetchFromGitHub {
|
|
inherit (prev.src) owner repo;
|
|
rev = "398a4048e389341dfd55285c53518a8ea3930ec4";
|
|
hash = "sha256-ZAC5TbkshztW2IeDorhaxUmVCHf2tJCSGIGHSNl91Ns";
|
|
};
|
|
doInstallCheck = false;
|
|
|
|
cargoDeps = pkgs.rustPlatform.fetchCargoVendor {
|
|
inherit (new-swww) src;
|
|
hash = "sha256-YH2gcy/8EtUmTHzwt38bBOFX3saN1wHIGQ5/eWqvSeM=";
|
|
};
|
|
});
|
|
in {
|
|
options.modules.desktops.niri.enable = mkEnableOption "Niri, a scolling tiling wayland compositor";
|
|
|
|
config =
|
|
mkIf (cfg.enable
|
|
|| isGraphical)
|
|
{
|
|
programs.niri = {
|
|
enable = true;
|
|
package = pkgs.niri;
|
|
};
|
|
# The niri module auto enables the gnome keyring,
|
|
# which is something I direly want to avoid.
|
|
services.gnome.gnome-keyring.enable = mkForce false;
|
|
|
|
environment.etc."niri/config.kdl".source = ./config.kdl;
|
|
|
|
environment.systemPackages = builtins.attrValues {
|
|
inherit (pkgs) xwayland-satellite avizo;
|
|
inherit new-swww;
|
|
};
|
|
};
|
|
}
|