1
0
mirror of https://github.com/tboerger/nixos-config synced 2025-02-22 23:31:08 +01:00
github.com-tboerger-nixos-c.../profiles/thomas/desktop/sway.nix
2024-11-24 16:13:14 +01:00

396 lines
11 KiB
Nix

{ pkgs, lib, config, options, ... }:
with lib;
let
cfg = config.profile.desktop.sway;
programs = {
term = [
{
exec = "wezterm";
class = "WezTerm";
}
];
editor = [
{
exec = "code";
class = "code";
}
];
browser = [
{
exec = "google-chrome-stable";
class = "google-chrome";
}
];
music = [
{
exec = "shortwave";
class = "shortwave";
}
];
mail = [
{
exec = "mailspring";
class = "mailspring";
}
];
chat = [ ];
};
in
{
options = {
profile = {
desktop = {
sway = {
enable = mkEnableOption "Sway";
};
};
};
};
config = mkIf cfg.enable {
home = {
packages = with pkgs; [
scrot
wl-clipboard
];
};
programs = {
feh = {
enable = true;
};
wlogout = {
enable = true;
};
wpaperd = {
enable = true;
};
rofi = {
enable = true;
package = pkgs.rofi-wayland;
font = "DejaVu Sans Mono 14";
terminal = "${pkgs.wezterm}/bin/wezterm";
theme = "solarized";
plugins = with pkgs; [
rofi-calc
rofi-file-browser
rofi-power-menu
rofi-pulse-select
rofi-systemd
rofi-vpn
];
extraConfig = {
modi = "window,drun,ssh";
};
};
swaylock = {
enable = true;
settings = {
scaling = "fill";
image = "${config.home.homeDirectory}/.wallpapers/light.jpg";
};
};
waybar = {
enable = true;
# settings = {
# general = {
# position = "top";
# };
# };
};
};
services = {
caffeine = {
enable = true;
};
blueman-applet = {
enable = true;
};
clipman = {
enable = true;
};
network-manager-applet = {
enable = true;
};
playerctld = {
enable = true;
};
flameshot = {
enable = true;
};
kanshi = {
enable = true;
};
swayidle = {
enable = true;
};
swayosd = {
enable = true;
};
# mako = {
# enable = true;
# };
dunst = {
enable = true;
iconTheme = {
name = "Numix";
package = pkgs.numix-icon-theme;
size = "64x64";
};
settings = {
global = {
font = "DejaVu Sans Mono 14";
frame_color = "#93a1a1";
separator_color = "#93a1a1";
};
urgency_normal = {
msg_urgency = "normal";
background = "#586e75";
foreground = "#93a1a1";
};
urgency_critical = {
msg_urgency = "critical";
background = "#dc322f";
foreground = "#eee8d5";
};
urgency_low = {
msg_urgency = "low";
background = "#073642";
foreground = "#657b83";
};
};
};
};
wayland = {
windowManager = {
sway = {
enable = true;
config = {
terminal = "${pkgs.wezterm}/bin/wezterm";
bars = mkDefault [ ];
# modes = mkDefault { };
fonts = {
size = 14.0;
names = [
"DejaVu Sans Mono"
];
};
floating = {
modifier = "Mod4";
};
assigns = {
"1" = map (i: { class = i.class; }) programs.term;
"2" = map (i: { class = i.class; }) programs.editor;
"3" = map (i: { class = i.class; }) programs.browser;
"4" = map (i: { class = i.class; }) programs.mail;
"5" = map (i: { class = i.class; }) programs.music;
"6" = map (i: { class = i.class; }) programs.chat;
};
startup = [
{
command = "feh --no-fehbg --bg-scale ${config.home.homeDirectory}/.wallpapers/tower.jpg";
always = false;
}
{
command = "systemctl --user restart waybar";
always = true;
}
{
command = "systemctl --user restart dunst";
always = true;
}
{
command = "systemctl --user restart udiskie";
always = true;
}
{
command = "systemctl --user restart nm-applet";
always = true;
}
{
command = "systemctl --user restart blueman-applet";
always = true;
}
] ++ (map (i: { command = i.exec; }) programs.term) ++ (map (i: { command = i.exec; }) programs.editor) ++ (map (i: { command = i.exec; }) programs.browser) ++ (map (i: { command = i.exec; }) programs.mail) ++ (map (i: { command = i.exec; }) programs.music) ++ (map (i: { command = i.exec; }) programs.chat);
gaps = {
smartGaps = true;
inner = 12;
};
colors = {
focused = {
border = "#002b36";
background = "#586e75";
text = "#fdf6e3";
indicator = "#268bd2";
childBorder = "#586e75";
};
focusedInactive = {
border = "#002b36";
background = "#073642";
text = "#839496";
indicator = "#073642";
childBorder = "#073642";
};
unfocused = {
border = "#002b36";
background = "#073642";
text = "#839496";
indicator = "#073642";
childBorder = "#073642";
};
urgent = {
border = "#002b36";
background = "#dc322f";
text = "#fdf6e3";
indicator = "#002b36";
childBorder = "#dc322f";
};
};
# keybindings = {
# "XF86AudioPlay" = "exec --no-startup-id playerctl play-pause";
# "XF86AudioPrev" = "exec --no-startup-id playerctl previous";
# "XF86AudioNext" = "exec --no-startup-id playerctl next";
# "XF86AudioStop" = "exec --no-startup-id playerctl stop";
# "XF86AudioRaiseVolume" = "exec swayosd-client --output-volume raise";
# "XF86AudioLowerVolume" = "exec swayosd-client --output-volume lower";
# "XF86AudioMute" = "exec swayosd-client --output-volume mute-toggle";
# "XF86AudioMicMute" = "exec swayosd-client --input-volume mute-toggle";
# "XF86MonBrightnessUp" = "exec swayosd-client --brightness raise";
# "XF86MonBrightnessDown" = "exec swayosd-client --brightness lower";
# "--release Print" = "exec ${pkgs.scrot}/bin/scrot";
# "--release Shift+Print" = "exec ${pkgs.scrot}/bin/scrot -u";
# "--release Ctrl+Print" = "exec ${pkgs.scrot}/bin/scrot -s";
# "Mod4+d" = "exec ${pkgs.rofi}/bin/rofi -show drun";
# "Mod4+Return" = "exec ${pkgs.wezterm}/bin/wezterm";
# "Mod4+Shift+q" = "kill";
# "Mod4+Left" = "focus left";
# "Mod4+Down" = "focus down";
# "Mod4+Up" = "focus up";
# "Mod4+Right" = "focus right";
# "Mod4+Shift+Left" = "move left";
# "Mod4+Shift+Down" = "move down";
# "Mod4+Shift+Up" = "move up";
# "Mod4+Shift+Right" = "move right";
# "Mod4+h" = "split h";
# "Mod4+v" = "split v";
# "Mod4+f" = "fullscreen toggle";
# "Mod4+s" = "layout stacking";
# "Mod4+w" = "layout tabbed";
# "Mod4+e" = "layout toggle split";
# "Mod4+Shift+Space" = "floating toggle";
# "Mod4+Space" = "focus mode_toggle";
# "Mod4+1" = "workspace number 1";
# "Mod4+2" = "workspace number 2";
# "Mod4+3" = "workspace number 3";
# "Mod4+4" = "workspace number 4";
# "Mod4+5" = "workspace number 5";
# "Mod4+6" = "workspace number 6";
# "Mod4+7" = "workspace number 7";
# "Mod4+8" = "workspace number 8";
# "Mod4+9" = "workspace number 9";
# "Mod4+Shift+1" = "move container to workspace number 1";
# "Mod4+Shift+2" = "move container to workspace number 2";
# "Mod4+Shift+3" = "move container to workspace number 3";
# "Mod4+Shift+4" = "move container to workspace number 4";
# "Mod4+Shift+5" = "move container to workspace number 5";
# "Mod4+Shift+6" = "move container to workspace number 6";
# "Mod4+Shift+7" = "move container to workspace number 7";
# "Mod4+Shift+8" = "move container to workspace number 8";
# "Mod4+Shift+9" = "move container to workspace number 9";
# "Mod4+Shift+c" = "reload";
# "Mod4+Shift+r" = "restart";
# };
};
# extraConfig = ''
# set $power "[l]ock log[o]ut [s]uspend [h]ibernate [r]eboot [p]oweroff"
# mode $power {
# bindsym l exec ${pkgs.swaylock}/bin/swaylock; mode "default"
# bindsym o exec swaymsg exit; mode "default"
# bindsym s exec systemctl suspend; mode "default"
# bindsym h exec systemctl hibernate; mode "default"
# bindsym r exec systemctl reboot; mode "default"
# bindsym p exec systemctl poweroff; mode "default"
# bindsym Return mode "default"
# bindsym Escape mode "default"
# bindsym Mod4+n mode "default"
# }
# mode "resize" {
# bindsym Left resize shrink width 10 px or 10 ppt
# bindsym Down resize grow height 10 px or 10 ppt
# bindsym Up resize shrink height 10 px or 10 ppt
# bindsym Right resize grow width 10 px or 10 ppt
# bindsym Return mode "default"
# bindsym Escape mode "default"
# bindsym Mod4+r mode "default"
# }
# bindsym Mod4+n mode $power
# bindsym Mod4+r mode "resize"
# '';
swaynag = {
enable = true;
};
};
};
};
};
}