174 lines
5 KiB
Nix
174 lines
5 KiB
Nix
{
|
|
pkgs,
|
|
config,
|
|
lib,
|
|
packages',
|
|
...
|
|
}: let
|
|
inherit (import ../lib.nix {}) mkSimpleTrayService;
|
|
|
|
lockCmd = "${pkgs.swaylock}/bin/swaylock -efF --color '#000000'";
|
|
displayOffCmd = "${pkgs.sway}/bin/swaymsg 'output * power off'";
|
|
displayOnCmd = "${pkgs.sway}/bin/swaymsg 'output * power on'";
|
|
swapOutputWorkspaces = ../../../scripts/sway-swapoutputworkspaces.sh;
|
|
|
|
in {
|
|
imports = [
|
|
../profiles/wayland-desktop.nix
|
|
../programs/waybar.nix
|
|
../programs/salut.nix
|
|
];
|
|
|
|
services = {
|
|
blueman-applet.enable = true;
|
|
flameshot.enable = true;
|
|
};
|
|
|
|
home.packages = [
|
|
pkgs.swayidle
|
|
pkgs.swaylock
|
|
|
|
packages'.yofi
|
|
pkgs.fuzzel
|
|
|
|
# required by any bar that has a tray plugin
|
|
pkgs.libappindicator-gtk3
|
|
|
|
|
|
## themes
|
|
pkgs.gnome.adwaita-icon-theme
|
|
pkgs.hicolor-icon-theme
|
|
pkgs.gnome-icon-theme
|
|
|
|
|
|
## fonts
|
|
pkgs.dejavu_fonts # just a basic good fond
|
|
pkgs.font-awesome_5 # needed by i3status-rust
|
|
pkgs.nerdfonts
|
|
pkgs.font-awesome
|
|
pkgs.roboto
|
|
pkgs.ttf_bitstream_vera
|
|
|
|
# from the wiki
|
|
pkgs.noto-fonts
|
|
pkgs.noto-fonts-cjk
|
|
pkgs.noto-fonts-cjk-sans
|
|
pkgs.noto-fonts-cjk-serif
|
|
pkgs.noto-fonts-emoji
|
|
pkgs.noto-fonts-emoji-blob-bin
|
|
pkgs.noto-fonts-extra
|
|
pkgs.noto-fonts-lgc-plus
|
|
|
|
pkgs.liberation_ttf
|
|
pkgs.fira-code
|
|
pkgs.fira-code-symbols
|
|
pkgs.mplus-outline-fonts.githubRelease
|
|
pkgs.dina-font
|
|
pkgs.monoid
|
|
pkgs.hermit
|
|
|
|
# by colemickens
|
|
pkgs.gelasio # metric-compatible with Georgia
|
|
pkgs.powerline-symbols
|
|
pkgs.iosevka-comfy.comfy-fixed
|
|
|
|
|
|
];
|
|
|
|
wayland.windowManager.sway = {
|
|
enable = true;
|
|
systemdIntegration = true;
|
|
xwayland = false;
|
|
|
|
config = let
|
|
modifier = "Mod4";
|
|
inherit (config.wayland.windowManager.sway.config) left right up down;
|
|
in {
|
|
inherit modifier;
|
|
bars = [];
|
|
|
|
input = {
|
|
"type:keyboard" = {
|
|
xkb_layout = "us";
|
|
xkb_variant = "altgr-intl";
|
|
xkb_options = "nodeadkeys";
|
|
};
|
|
|
|
"type:touchpad" = {
|
|
natural_scroll = "enabled";
|
|
};
|
|
};
|
|
|
|
keybindings = lib.mkOptionDefault {
|
|
# as of 2023-05-21 the `!!` arg parsing mode was broken for me on yofi
|
|
# "${modifier}+d" = "exec ${packages'.yofi}/bin/yofi binapps";
|
|
"${modifier}+d" = "exec ${pkgs.fuzzel}/bin/fuzzel";
|
|
|
|
# only 1-9 exist on the default config
|
|
"${modifier}+0" = "workspace number 0";
|
|
"${modifier}+Shift+0" = "move container to workspace number 0";
|
|
|
|
# move workspace to output
|
|
"${modifier}+Control+Shift+${left}" = "move workspace to output left";
|
|
"${modifier}+Control+Shift+${right}" = "move workspace to output right";
|
|
"${modifier}+Control+Shift+${up}" = "move workspace to output up";
|
|
"${modifier}+Control+Shift+${down}" = "move workspace to output down";
|
|
# move workspace to output with arrow keys
|
|
"${modifier}+Control+Shift+Left" = "move workspace to output left";
|
|
"${modifier}+Control+Shift+Right" = "move workspace to output right";
|
|
"${modifier}+Control+Shift+Up" = "move workspace to output up";
|
|
"${modifier}+Control+Shift+Down" = "move workspace to output down";
|
|
|
|
"${modifier}+Shift+e" = "exec swaymsg exit";
|
|
"${modifier}+q" = "kill";
|
|
"${modifier}+x" = "exec ${swapOutputWorkspaces}";
|
|
|
|
"${modifier}+Ctrl+l" = "exec ${lockCmd}";
|
|
|
|
"--locked XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
|
"XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl previous";
|
|
"XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl next";
|
|
|
|
"XF86AudioRaiseVolume" = "exec ${pkgs.pulsemixer}/bin/pulsemixer --change-volume +5";
|
|
"XF86AudioLowerVolume" = "exec ${pkgs.pulsemixer}/bin/pulsemixer --change-volume -5";
|
|
"--locked XF86AudioMute" = "exec ${pkgs.pulsemixer}/bin/pulsemixer --toggle-mute";
|
|
|
|
# TODO: screenshot util, flameshot doesn't work in the packaged version
|
|
"Print" = "exec ${pkgs.flameshot}/bin/flameshot gui";
|
|
};
|
|
|
|
terminal = "alacritty";
|
|
startup = [
|
|
# Launch Firefox on start
|
|
# {command = "firefox";}
|
|
# {command = "gnome-keyring --replace"}
|
|
{command = "systemctl --user restart waybar";}
|
|
];
|
|
|
|
colors.focused = lib.mkOptionDefault {
|
|
childBorder = lib.mkForce "#ffa500";
|
|
};
|
|
|
|
window.border = 4;
|
|
};
|
|
};
|
|
|
|
services.swayidle = {
|
|
enable = true;
|
|
timeouts = [
|
|
{ timeout = 10; command = "if ${pkgs.procps}/bin/pgrep -x swaylock; then ${displayOffCmd}; fi"; resumeCommand = displayOnCmd; }
|
|
{ timeout = 60 * 5; command = lockCmd; }
|
|
{ timeout = 60 * 6; command = displayOffCmd; resumeCommand = displayOnCmd; }
|
|
];
|
|
events = [
|
|
{ event = "before-sleep";
|
|
command = builtins.concatStringsSep "; " [
|
|
lockCmd
|
|
"${pkgs.playerctl}/bin/playerctl pause"
|
|
];
|
|
}
|
|
{ event = "after-resume"; command = displayOnCmd; }
|
|
{ event = "lock"; command = lockCmd; }
|
|
];
|
|
};
|
|
}
|