devos/users/profiles/sway/desktop.nix

117 lines
3.2 KiB
Nix

{ pkgs, lib, ... }@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 = "${pkgs.alacritty}/bin/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";
};
};
bars = [{
id = "top";
statusCommand = "${pkgs.i3status-rust}/bin/i3status-rs";
position = "top";
trayOutput = "*";
}];
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"; }
];
keybindings = lib.mkOptionDefault {
"XF86PowerOff" = "exec systemctl hybrid-sleep";
};
};
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.rofi = {
enable = true;
package = rofi;
theme = "purple";
extraConfig = {
modi = "combi";
combi-modi = "drun,emoji";
};
};
programs.mako = {
enable = true;
defaultTimeout = 2000;
};
programs.i3status-rust = {
enable = true;
bars.bar_0 = {
blocks = [
{
block = "custom";
command = ''
set -euo pipefail
gender="$(${pkgs.curl}/bin/curl 'https://rly.cx/api/gender')"
pronouns="$(${pkgs.curl}/bin/curl 'https://rly.cx/api/pronouns')"
echo -n "Riley: $gender ($pronouns)"
'';
interval = 360;
}
{
block = "disk_space";
path = "/";
info_type = "available";
unit = "GB";
interval = 60;
warning = 20.0;
alert = 10.0;
}
{
block = "memory";
display_type = "memory";
format_mem = "{mem_used}/{mem_total}({mem_used_percents})";
format_swap = "{swap_used}/{swap_total}({swap_used_percents})";
}
{
block = "cpu";
interval = 1;
}
{ block = "sound"; }
{
block = "time";
interval = 60;
format = "%a %d/%m %R";
}
];
};
};
home.packages = [ scripts.lockscreen ];
}