nixos/home/modules/programs/niri.nix

83 lines
1.7 KiB
Nix
Raw Normal View History

{
pkgs,
config,
lib,
...
}:
let
cfg = config.youthlic.programs.niri;
in
{
options = {
youthlic.programs.niri = {
enable = lib.mkEnableOption "niri";
config = lib.mkOption {
type = lib.types.path;
example = ./config.kdl;
description = ''
the pach to config.kdl
'';
};
};
};
config = lib.mkIf cfg.enable {
home.packages = with pkgs; [
swaynotificationcenter
swaybg
xwayland-satellite
2025-01-24 20:22:12 +08:00
niri-unstable
2025-02-25 13:40:03 +08:00
kdePackages.polkit-kde-agent-1
2025-01-25 16:05:42 +08:00
wl-clipboard
cliphist
];
2025-03-10 00:24:32 +08:00
qt = {
enable = true;
};
xdg.portal = {
configPackages = [ pkgs.niri-unstable ];
config = {
common = {
default = [
"cosmic"
];
};
};
enable = true;
extraPortals = lib.mkIf (
!pkgs.niri-unstable.cargoBuildNoDefaultFeatures
|| builtins.elem "xdp-gnome-screencast" pkgs.niri-unstable.cargoBuildFeatures
) [ pkgs.xdg-desktop-portal-gnome ];
};
xdg.configFile =
let
qtctConf =
''
[Appearance]
standard_dialogs=xdgdesktopportal
''
+ lib.optionalString (config.qt.style ? name) ''
style=${config.qt.style.name}
'';
in
{
"qt5ct/qt5ct.conf" = lib.mkForce {
text = qtctConf;
};
"qt6ct/qt6ct.conf" = lib.mkForce {
text = qtctConf;
};
};
youthlic.programs = {
fuzzel.enable = true;
wluma.enable = true;
waybar.enable = true;
2025-01-25 12:18:41 +08:00
swaync.enable = true;
2025-01-25 16:31:58 +08:00
swaylock.enable = true;
};
programs.niri = {
config = builtins.readFile cfg.config;
2025-01-24 20:22:12 +08:00
package = pkgs.niri-unstable;
};
};
}