Anthony Rodriguez
32971e91bf
I decided to refactor how the theme module works. The idea is, that I wanted originally a module that I could give a base16 scheme name to, and use that globally in my config. However, scheme only took the base16 scheme name without any checks, which was pretty bad. I ended up creating a new option, schemeName, that scheme is computed from. It then makes the whole configuration cleaner, and avoids long inputs interpolations with the scheme name.
177 lines
3.9 KiB
Nix
177 lines
3.9 KiB
Nix
{
|
|
lib,
|
|
pkgs,
|
|
config,
|
|
osConfig,
|
|
...
|
|
}: let
|
|
inherit (osConfig.theme.scheme) palette;
|
|
in {
|
|
imports = [./binds.nix];
|
|
|
|
xdg.portal = {
|
|
enable = true;
|
|
xdgOpenUsePortal = true;
|
|
extraPortals = [pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-gnome pkgs.gnome-keyring];
|
|
config = {
|
|
common = {
|
|
default = ["gtk"];
|
|
"org.freedesktop.impl.portal.ScreenCast" = ["gnome"];
|
|
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
|
|
};
|
|
};
|
|
};
|
|
|
|
programs.niri = {
|
|
settings = {
|
|
input = {
|
|
power-key-handling.enable = false;
|
|
keyboard.xkb = {
|
|
layout = "us";
|
|
options = "compose:ralt";
|
|
};
|
|
};
|
|
|
|
prefer-no-csd = true;
|
|
hotkey-overlay.skip-at-startup = true;
|
|
|
|
layout = {
|
|
focus-ring = {
|
|
enable = true;
|
|
active.color = palette.base0E;
|
|
};
|
|
always-center-single-column = true;
|
|
};
|
|
|
|
# https://github.com/sodiboo/system/blob/2978f4d79c51a5bd7e38a9cd75e3ec9046aa7e75/niri.mod.nix#L418-L434
|
|
outputs = let
|
|
cfg = config.programs.niri.settings.outputs;
|
|
in {
|
|
"HDMI-A-1" = {
|
|
mode = {
|
|
width = 1920;
|
|
height = 1080;
|
|
refresh = 60.0;
|
|
};
|
|
position.x = -cfg."HDMI-A-1".mode.width;
|
|
position.y = 0;
|
|
};
|
|
"DP-1" = {
|
|
mode = {
|
|
width = 2560;
|
|
height = 1440;
|
|
refresh = 144.0;
|
|
};
|
|
position.x = 0;
|
|
position.y = 0;
|
|
};
|
|
};
|
|
|
|
window-rules = [
|
|
{
|
|
draw-border-with-background = false;
|
|
geometry-corner-radius = let
|
|
r = 8.0;
|
|
in {
|
|
top-left = r;
|
|
top-right = r;
|
|
bottom-left = r;
|
|
bottom-right = r;
|
|
};
|
|
clip-to-geometry = true;
|
|
}
|
|
{
|
|
matches = [
|
|
{app-id = "foot";}
|
|
];
|
|
default-column-width = {proportion = 0.5;};
|
|
}
|
|
];
|
|
|
|
environment = {
|
|
"NIXOS_OZONE_WL" = "1";
|
|
"DISPLAY" = ":0";
|
|
"_JAVA_AWT_WM_NONREPARENTING" = "1"; # https://wiki.archlinux.org/title/Sway#Java_applications
|
|
};
|
|
};
|
|
};
|
|
|
|
# copied from https://github.com/linyinfeng/dotfiles/blob/c00fe3b1562ad947672863a43e455bc2f01a56b6/home-manager/profiles/niri/default.nix#L594-L611
|
|
systemd.user.services.xwayland-satellite = {
|
|
Unit = {
|
|
PartOf = ["graphical-session.target"];
|
|
After = ["graphical-session.target"];
|
|
Requisite = ["graphical-session.target"];
|
|
};
|
|
Install = {
|
|
WantedBy = ["niri.service"];
|
|
};
|
|
Service = {
|
|
Type = "simple";
|
|
ExecStart = "${lib.getExe pkgs.xwayland-satellite} :0";
|
|
NotifyAccess = "all";
|
|
StandardOutput = "journal";
|
|
Restart = "on-failure";
|
|
};
|
|
};
|
|
|
|
programs.wlogout = {
|
|
enable = true;
|
|
|
|
layout = let
|
|
systemd = let
|
|
systemd = lib.getExe' pkgs.systemd;
|
|
in {
|
|
loginctl = systemd "loginctl";
|
|
systemctl = systemd "systemctl";
|
|
};
|
|
in [
|
|
{
|
|
action = "${systemd.loginctl} lock-session";
|
|
keybind = "l";
|
|
label = "lock";
|
|
text = "Lock";
|
|
}
|
|
|
|
{
|
|
action = "${systemd.systemctl} hibernate";
|
|
keybind = "h";
|
|
label = "hibernate";
|
|
text = "Hibernate";
|
|
}
|
|
|
|
{
|
|
action = "${
|
|
systemd.loginctl
|
|
} terminate-user ${
|
|
config.home.username
|
|
}";
|
|
|
|
keybind = "q";
|
|
label = "logout";
|
|
text = "Logout";
|
|
}
|
|
|
|
{
|
|
action = "${systemd.systemctl} poweroff";
|
|
keybind = "p";
|
|
label = "shutdown";
|
|
text = "Shutdown";
|
|
}
|
|
|
|
{
|
|
action = "${systemd.systemctl} suspend";
|
|
keybind = "s";
|
|
label = "suspend";
|
|
text = "Suspend";
|
|
}
|
|
|
|
{
|
|
action = "${systemd.systemctl} reboot";
|
|
keybind = "r";
|
|
label = "reboot";
|
|
text = "Reboot";
|
|
}
|
|
];
|
|
};
|
|
}
|