Files
nix-config/modules/sessions/niri/niri.nix
T

180 lines
4.6 KiB
Nix
Raw Normal View History

2026-03-23 14:51:59 +05:00
{ self, ... }:
2026-03-22 21:30:03 +05:00
{
flake.nixosModules.niri = { pkgs, lib, config, ... }:
2026-03-22 21:30:03 +05:00
{
imports = [
2026-04-15 19:15:43 +05:00
self.nixosModules.kitty
2026-03-22 21:30:03 +05:00
self.nixosModules.matugen
2026-04-15 19:15:43 +05:00
self.nixosModules.waybar
2026-03-22 21:30:03 +05:00
];
programs.niri.enable = true;
services.displayManager.ly =
let
xsession-wrapper = pkgs.runCommand "xsession-wrapper-fixed" {
src = config.services.displayManager.sessionData.wrapper;
} ''
cp --preserve=mode $src $out
substituteInPlace $out --replace "X-NIXOS-SYSTEMD-AWARE" "X-NIXOS-SYSTEMD-AWARE|niri"
'';
in {
enable = true;
x11Support = false;
settings = {
setup_cmd = "${xsession-wrapper}";
2026-04-15 23:57:09 +05:00
session_log = ".ly-session.log";
};
};
2026-03-22 21:30:03 +05:00
services.udisks2.enable = true; # Removable media.
services.gvfs.enable = true; # Nautilus mount and trash support.
environment.systemPackages = with pkgs; [
brightnessctl
2026-03-23 13:12:03 +05:00
btop
2026-03-22 21:30:03 +05:00
eog
gnome-themes-extra
kdePackages.breeze
kdePackages.dolphin
kdePackages.kcalc
mpv
nautilus
pywal
swaybg
waybar
2026-03-23 13:12:03 +05:00
wl-clipboard
2026-03-22 21:30:03 +05:00
wlsunset
xwayland-satellite
];
2026-04-15 19:15:43 +05:00
home-manager.users.${self.user}.imports = [
2026-03-22 21:30:03 +05:00
{
home.activation = {
pywal = ''
2026-04-19 00:29:19 +05:00
${pkgs.pywal}/bin/wal --cols16 -i ${self.wallpaper}
2026-04-15 23:57:09 +05:00
'';
swaybg = ''
${pkgs.swaybg}/bin/swaybg -i ${self.wallpaper} &
'';
waybar = ''
${pkgs.procps}/bin/pkill -SIGUSR2 waybar
'';
};
programs.rofi = {
enable = true;
2026-04-15 19:15:43 +05:00
font = "${self.font.mono} 18";
extraConfig = {
kb-row-up = "Up,Control+k,Shift+Tab,Shift+ISO_Left_Tab";
kb-row-down = "Down,Control+j";
kb-accept-entry = "Control+m,Return,KP_Enter";
kb-remove-to-eol = "Control+Shift+e";
kb-mode-next = "Shift+Right,Control+Tab,Control+l";
kb-mode-previous = "Shift+Left,Control+Shift+Tab,Control+h";
kb-mode-complete = "";
kb-remove-char-back = "BackSpace";
};
theme = "~/.cache/wal/colors-rofi-dark.rasi";
};
2026-04-16 00:18:52 +05:00
services.dunst = {
enable = true;
settings = {
global = {
font = "${self.font.mono} 13";
corner_radius = self.border.small;
};
};
};
2026-03-22 21:30:03 +05:00
services.polkit-gnome.enable = true; # Enable Gnome polkit.
systemd.user.services.polkit-gnome = {
Service = {
Restart = "on-failure";
RestartSec = 1;
};
Unit = {
StartLimitIntervalSec = 30;
StartLimitBurst = 10;
};
};
2026-03-22 21:30:03 +05:00
# Symlink config file.
xdg.configFile."niri/config.kdl".source = ./config.kdl;
2026-04-15 19:15:43 +05:00
# Write custom config file.
xdg.configFile."niri/config-nix.kdl".text = /* kdl */ ''
spawn-sh-at-startup "swaybg -i ${self.wallpaper}" // Wallpaper utility.
window-rule {
geometry-corner-radius ${self.border.main}
}
'';
2026-03-22 21:30:03 +05:00
# Set default applications.
xdg.mimeApps = {
enable = true;
defaultApplications = let
imageViewer = "org.gnome.eog.desktop";
documentViewer = "org.kde.okular.desktop";
videoViewer = "mpv.desktop";
in {
"image/png" = imageViewer;
"image/jpg" = imageViewer;
"image/jpeg" = imageViewer;
"document/pdf" = documentViewer;
"video/mp4" = videoViewer;
"video/webm" = videoViewer;
};
};
# Set cursor theme.
home.file.".icons/default".source = "${pkgs.bibata-cursors}/share/icons/Bibata-Modern-Classic";
# Set dark theme for GTK programs.
dconf.settings."org/gnome/desktop/interface".color-scheme = "prefer-dark";
# Set GTK theme.
gtk = {
enable = true;
2026-04-01 11:53:26 +05:00
gtk4.theme = null;
2026-03-22 21:30:03 +05:00
theme = {
name = "adw-gtk3-dark";
package = pkgs.adw-gtk3;
};
cursorTheme = {
name = "Bibata-Modern-Classic";
package = pkgs.bibata-cursors;
size = 24;
};
2026-04-11 23:20:00 +05:00
font = {
2026-04-15 19:15:43 +05:00
name = "${self.font.mono}";
2026-04-11 23:20:00 +05:00
size = 13;
};
2026-03-22 21:30:03 +05:00
};
# Make QT follow GTK theme.
qt = {
enable = true;
platformTheme.name = "gtk3";
2026-04-11 23:20:00 +05:00
qt5ctSettings = {
Fonts = {
2026-04-15 19:15:43 +05:00
fixed = "\"${self.font.mono},13\"";
general = "\"${self.font.mono},13\"";
2026-04-11 23:20:00 +05:00
};
};
qt6ctSettings = {
Fonts = {
2026-04-15 19:15:43 +05:00
fixed = "\"${self.font.mono},13\"";
general = "\"${self.font.mono},13\"";
2026-04-11 23:20:00 +05:00
};
};
2026-03-22 21:30:03 +05:00
};
}
];
};
}