This repository has been archived on 2023-08-08. You can view files and clone it, but cannot push or open issues or pull requests.
nil/modules/applications/sway/sway.nix

169 lines
5.4 KiB
Nix
Raw Normal View History

2021-12-14 03:44:38 +00:00
{ config, lib, pkgs, ... }:
2021-12-14 05:24:26 +00:00
let
2021-12-16 01:58:52 +00:00
cfg = config.this.application.sway;
2022-03-27 02:03:16 +00:00
power = config.this.system.power;
2021-12-15 05:27:39 +00:00
graphical = config.this.graphical;
2022-03-24 02:44:18 +00:00
modifier = "Mod4";
2022-03-10 15:08:58 +00:00
wallpaper = pkgs.fetchurl {
url =
"https://raw.githubusercontent.com/catppuccin/wallpapers/main/landscapes/evening-sky.png";
sha256 = "sha256-fYMzoY3un4qGOSR4DMqVUAFmGGil+wUze31rLLrjcAc=";
};
2022-03-17 03:09:22 +00:00
2021-12-14 03:44:38 +00:00
in with lib; {
options = {
2022-03-24 04:00:26 +00:00
this.application.sway.enable = mkOption {
default = false;
2022-03-24 04:00:26 +00:00
type = with types; bool;
2021-12-14 03:44:38 +00:00
};
};
config = mkIf cfg.enable {
home-manager.users.james = {
2022-03-10 15:08:58 +00:00
home.sessionVariables = { XDG_CURRENT_DESKTOP = "sway"; };
systemd.user.sessionVariables = { XDG_CURRENT_DESKTOP = "sway"; };
2022-03-10 15:08:58 +00:00
wayland.windowManager.sway = {
enable = true;
2022-03-24 02:44:18 +00:00
package = null;
2022-03-10 15:08:58 +00:00
wrapperFeatures.gtk = true;
config = {
2022-03-24 02:44:18 +00:00
# bars = [ ];
2022-03-10 15:08:58 +00:00
colors = {
focusedInactive = {
background = "#1E1E2E";
border = "#1E1E2E";
childBorder = "#1E1E2E";
indicator = "#1E1E2E";
text = "#C9CBFF";
};
unfocused = {
background = "#1E1E2E";
border = "#1E1E2E";
childBorder = "#1E1E2E";
indicator = "#1E1E2E";
text = "#C9CBFF";
};
focused = {
background = "#131020";
border = "#131020";
childBorder = "#131020";
indicator = "#131020";
text = "#ABE9B3";
};
urgent = {
background = "#F28FAD";
border = "#F28FAD";
childBorder = "#F28FAD";
indicator = "#F28FAD";
text = "#ABE9B3";
};
};
fonts = {
names = [ "Alegreya" "FontAwesome" ];
size = 9.0;
};
input = {
"1133:45079:MX_Master_Mouse" = {
natural_scroll = "enable";
accel_profile = "adaptive";
pointer_accel = "-0.3";
};
"1:1:AT_Translated_Set_2_keyboard" = {
xkb_options = "ctrl:nocaps";
};
"2:7:SynPS/2_Synaptics_TouchPad" = {
dwt = "enabled";
click_method = "clickfinger";
natural_scroll = "enabled";
middle_emulation = "enabled";
};
};
gaps = {
inner = 5;
outer = 2;
};
# And import and scripts as scene here would be good.
2022-03-17 03:09:22 +00:00
keybindings = mkOptionDefault {
2022-03-24 02:44:18 +00:00
"${modifier}+q" = "kill";
"${modifier}+d" = "focus mode_toggle";
"${modifier}+a" = "focus parent";
"${modifier}+shift+s" = "sticky toggle";
"${modifier}+shift+f" = "floating toggle";
"${modifier}+space" =
"exec $(${pkgs.dmenu}/bin/dmenu_path | ${pkgs.dmenu}/bin/dmenu)";
Pause = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
XF86AudioLowerVolume = "exec ${pkgs.volume-sh}/bin/volume.sh down";
XF86AudioMute = "exec ${pkgs.volume-sh}/bin/volume.sh mute";
XF86AudioRaiseVolume = "exec ${pkgs.volume-sh}/bin/volume.sh up";
2022-03-17 03:09:22 +00:00
XF86MonBrightnessDown =
"exec ${pkgs.brightness-sh}/bin/brightness.sh down";
XF86MonBrightnessUp =
"exec ${pkgs.brightness-sh}/bin/brightness.sh up";
2022-03-17 03:09:22 +00:00
};
2022-03-10 15:08:58 +00:00
# https://github.com/gytis-ivaskevicius/nixfiles/blob/master/home-manager/i3-sway.nix
modifier = "Mod4";
output = { "eDP-1" = { bg = "${wallpaper} fill"; }; };
terminal = "${pkgs.kitty}/bin/kitty";
# https://rycee.gitlab.io/home-manager/options.html#opt-wayland.windowManager.sway.config.window.commands
2022-03-17 03:09:22 +00:00
# window = { };
startup = [{ command = "${pkgs.autotiling}/bin/autotiling"; }];
2022-03-10 15:08:58 +00:00
};
2021-12-14 03:44:38 +00:00
};
home.packages = with pkgs; [
autotiling
brightness-sh
dmenu
grim
imagemagick
playerctl
slurp
sway-entry
swayidle
swaylock
volume-sh
wl-clipboard
wofi
];
2021-12-14 03:44:38 +00:00
};
2022-03-08 05:16:54 +00:00
programs.light.enable = true;
2022-03-17 03:09:22 +00:00
programs.sway = {
enable = true;
wrapperFeatures.gtk = true;
};
2022-03-08 05:16:54 +00:00
2022-03-24 04:00:26 +00:00
systemd.user = {
targets.sway-session = {
description = "Sway compositor session";
documentation = [ "man:systemd.special(7)" ];
bindsTo = [ "graphical-session.target" ];
wants = [ "graphical-session-pre.target" ];
after = [ "graphical-session-pre.target" ];
};
services.sway = {
enable = true;
description = "Sway - Wayland window manager";
documentation = [ "man:sway(5)" ];
bindsTo = [ "default.target" ];
wants = [ "graphical-session-pre.target" ];
after = [ "graphical-session-pre.target" ];
environment.PATH = lib.mkForce null;
serviceConfig = {
Type = "simple";
ExecStart =
"${pkgs.dbus}/bin/dbus-run-session ${pkgs.sway}/bin/sway --debug";
ExecStopPost =
"/usr/bin/env systemctl --user unset-environment SWAYSOCK DISPLAY I3SOCK WAYLAND_DISPLAY";
NotifyAccess = "all";
Restart = "on-failure";
RestartSec = 1;
TimeoutStopSec = 10;
};
2021-12-14 03:44:38 +00:00
};
};
users.users.james.extraGroups = [ "video" "audio" ];
};
}