devos/users/profiles/sway/default.nix

114 lines
3.5 KiB
Nix

{ pkgs, lib, config, ... }@inputs:
let
rofi = pkgs.rofi.override { plugins = [ pkgs.rofi-emoji ]; };
scripts = ((import ./scripts.nix) inputs);
in
{
imports = [ ./swayidle.nix ];
wayland.windowManager.sway = rec {
enable = true;
config = {
terminal = "alacritty";
menu = "${rofi}/bin/rofi -show combi";
modifier = "Mod4";
output = {
"*" = {
bg = "${./wallpaper.png} fill";
};
};
input = {
"*" = {
xkb_layout = "pl";
accel_profile = "flat";
dwt = "disabled";
pointer_accel = "0.0";
xkb_options = "caps:escape";
};
};
bars = [{
position = "top";
command = "${pkgs.waybar}/bin/waybar";
}];
floating.criteria = [{ title = "Steam - Update News"; }];
startup = [
# Copied from https://git.sr.ht/~sumner/home-manager-config/tree/master/item/modules/window-manager/wayland.nix#L64
# See https://github.com/nix-community/home-manager/issues/2028
# Make all the pinentry stuff work
# See: https://github.com/NixOS/nixpkgs/issues/119445#issuecomment-820507505
# and: https://github.com/NixOS/nixpkgs/issues/57602#issuecomment-820512097
{ command = "dbus-update-activation-environment WAYLAND_DISPLAY"; }
# Support for old style xembed tray icons, mostly used by wine
{ command = "${pkgs.plasma-workspace}/bin/xembedsniproxy"; }
];
keybindings = lib.mkOptionDefault {
"XF86PowerOff" = "exec systemctl suspend";
};
};
wrapperFeatures.gtk = true;
systemdIntegration = true;
extraSessionCommands = ''
#export SDL_VIDEODRIVER=wayland
# needs qt5.qtwayland in systemPackages
export QT_QPA_PLATFORM=wayland
export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
# Fix for some Java AWT applications (e.g. Android Studio),
# use this if they aren't displayed properly:
export _JAVA_AWT_WM_NONREPARENTING=1
'';
};
programs.waybar = {
enable = true;
settings = {
mainBar = {
layer = "top";
position = "top";
modules-left = [ "sway/workspaces" "sway/mode" ];
modules-center = [ ];
modules-right = [ "custom/riley-gender" "disk" "battery" "backlight" "pulseaudio" "clock" "tray" ];
"custom/riley-gender" = {
interval = "360";
exec = pkgs.writeShellScript "riley-gender" ''
set -euo pipefail
until ping -c1 google.com >/dev/null 2>&1; do :; done
summary="$(${pkgs.curl}/bin/curl 'https://riley.lgbt/api/summary')"
pronouns="$(echo $summary | jq -r '.pronouns')"
gender="$(echo $summary | jq -r '.gender')"
echo -n "Riley: $gender ($pronouns)"
'';
};
backlight = {
on-scroll-up = "${pkgs.brightnessctl}/bin/brightnessctl s +1%";
on-scroll-down = "${pkgs.brightnessctl}/bin/brightnessctl s 1%- -n 1";
};
clock = {
format = "{:%a %d %b %H:%M}";
};
disk = {
format = "{percentage_free}%({free})";
};
pulseaudio = {
on-click-right = "${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle";
};
};
};
style = ./waybar.css;
};
programs.rofi = {
enable = true;
package = rofi;
theme = "purple";
extraConfig = {
modi = "combi";
combi-modi = "drun,emoji";
};
};
services.mako = {
enable = true;
defaultTimeout = 2000;
};
home.packages = [ scripts.lockscreen ];
}