Switch to wayland and sway
This commit is contained in:
parent
f6c366611e
commit
e92cfa3b23
|
@ -67,16 +67,6 @@ in {
|
|||
layout = "gb";
|
||||
variant = "";
|
||||
};
|
||||
|
||||
displayManager = {
|
||||
defaultSession = "none+i3";
|
||||
lightdm.enable = true;
|
||||
};
|
||||
|
||||
windowManager.i3 = {
|
||||
enable = true;
|
||||
extraPackages = with pkgs; [ i3status i3lock i3blocks ];
|
||||
};
|
||||
};
|
||||
|
||||
# Configure console keymap
|
||||
|
@ -89,20 +79,19 @@ in {
|
|||
|
||||
# Enable sound with pipewire.
|
||||
sound.enable = true;
|
||||
hardware.pulseaudio.enable = true;
|
||||
hardware.pulseaudio.enable = false;
|
||||
security.rtkit.enable = true;
|
||||
# services.pipewire = {
|
||||
# enable = true;
|
||||
# alsa.enable = true;
|
||||
# alsa.support32Bit = true;
|
||||
# pulse.enable = true;
|
||||
# # If you want to use JACK applications, uncomment this
|
||||
# #jack.enable = true;
|
||||
#
|
||||
# # use the example session manager (no others are packaged yet so this is enabled by default,
|
||||
# # no need to redefine it in your config for now)
|
||||
# #media-session.enable = true;
|
||||
# };
|
||||
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
|
||||
alsa = {
|
||||
enable = true;
|
||||
support32Bit = true;
|
||||
};
|
||||
|
||||
pulse.enable = true;
|
||||
};
|
||||
|
||||
# Enable touchpad support (enabled default in most desktopManager).
|
||||
# services.xserver.libinput.enable = true;
|
||||
|
|
|
@ -16,6 +16,8 @@ in inputs.nixpkgs.lib.nixosSystem {
|
|||
};
|
||||
}
|
||||
|
||||
(import ./modules/sway.nix { inherit inputs username; })
|
||||
|
||||
configuration
|
||||
hardwareConfiguration
|
||||
];
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
{ config, inputs, pkgs, username, }: {
|
||||
imports = [
|
||||
./modules/alacritty.nix
|
||||
./modules/autorandr.nix
|
||||
./modules/copyq.nix
|
||||
./modules/dunst.nix
|
||||
./modules/espanso.nix
|
||||
./modules/feh.nix
|
||||
./modules/flameshot.nix
|
||||
./modules/i3.nix
|
||||
./modules/rofi.nix
|
||||
./modules/kanshi.nix
|
||||
./modules/sway.nix
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,52 +0,0 @@
|
|||
{ username, ... }: {
|
||||
services.autorandr.enable = true;
|
||||
|
||||
xdg.configFile."autorandr/postswitch" = {
|
||||
executable = true;
|
||||
text = ''
|
||||
#!/usr/bin/env bash
|
||||
|
||||
feh --randomize --bg-scale /home/${username}/Pictures/Wallpaper/*;
|
||||
'';
|
||||
};
|
||||
|
||||
programs.autorandr = {
|
||||
enable = true;
|
||||
|
||||
profiles = let
|
||||
fingerprint =
|
||||
"00ffffffffffff000daef21400000000161c0104a51f117802ee95a3544c99260f505400000001010101010101010101010101010101363680a0703820402e1e240035ad10000018000000fe004e3134304843472d4751320a20000000fe00434d4e0a202020202020202020000000fe004e3134304843472d4751320a2000bb";
|
||||
name = "eDP-1";
|
||||
in {
|
||||
default = {
|
||||
fingerprint = { "${name}" = fingerprint; };
|
||||
|
||||
config = {
|
||||
"${name}" = {
|
||||
enable = true;
|
||||
mode = "1920x1080";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
desktop = {
|
||||
config = {
|
||||
"${name}".enable = false;
|
||||
|
||||
"HDMI-1" = {
|
||||
enable = true;
|
||||
mode = "2560x1440";
|
||||
primary = true;
|
||||
rate = "59.95";
|
||||
};
|
||||
};
|
||||
|
||||
fingerprint = {
|
||||
"${name}" = fingerprint;
|
||||
"HDMI-1" =
|
||||
"00ffffffffffff004c2d1710424e58432b1f0103803f24782ac8b5ad50449e250f5054bfef80714f810081c081809500a9c0b300010108e80030f2705a80b0588a0078682100001e000000fd00324b1e873c000a202020202020000000fc004c5532385235350a2020202020000000ff0048345a524130303132380a20200183020335f04961120313041f10605f2309070783010000e305c0006b030c002000b83c2000200167d85dc401788003e20f81e3060501023a801871382d40582c450078682100001e023a80d072382d40102c458078682100001e04740030f2705a80b0588a0078682100001e565e00a0a0a029503020350078682100001a000049";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,116 +0,0 @@
|
|||
{ config, inputs, pkgs, self, username, ... }:
|
||||
let
|
||||
theme = import "${self}/lib/theme" { inherit pkgs; };
|
||||
|
||||
modifier = "Mod4";
|
||||
in {
|
||||
xsession.windowManager.i3 = {
|
||||
enable = true;
|
||||
|
||||
config = {
|
||||
assigns = {
|
||||
"7" = [{ class = "vlc"; }];
|
||||
"8" = [{ class = "0ad"; }];
|
||||
"9" = [ { class = "Slack"; } { class = "discord"; } ];
|
||||
};
|
||||
|
||||
defaultWorkspace = "workspace number 1";
|
||||
|
||||
focus.followMouse = false;
|
||||
|
||||
modifier = modifier;
|
||||
|
||||
keybindings = inputs.nixpkgs.lib.mkOptionDefault {
|
||||
"${modifier}+d" = "exec ${pkgs.rofi}/bin/rofi -show drun";
|
||||
|
||||
"${modifier}+Shift+b" = "exec ${pkgs.firefox}/bin/firefox";
|
||||
"${modifier}+Shift+f" = "exec ${pkgs.xfce.thunar}/bin/thunar";
|
||||
|
||||
# Change focus.
|
||||
"${modifier}+h" = "focus left";
|
||||
"${modifier}+j" = "focus down";
|
||||
"${modifier}+k" = "focus up";
|
||||
"${modifier}+l" = "focus right";
|
||||
|
||||
# Move focused window.
|
||||
"${modifier}+Shift+h" = "move left";
|
||||
"${modifier}+Shift+j" = "move down";
|
||||
"${modifier}+Shift+k" = "move up";
|
||||
"${modifier}+Shift+l" = "move right";
|
||||
|
||||
"${modifier}+Shift+s" = "exec ${pkgs.flameshot}/bin/flameshot gui";
|
||||
"${modifier}+Shift+p" = "exec ${pkgs.autorandr}/bin/autorandr --change";
|
||||
"${modifier}+Shift+y" = "exec ${pkgs.copyq}/bin/copyq toggle";
|
||||
|
||||
"XF86AudioRaiseVolume" = "exec pamixer -ui 2 && pamixer --get-volume";
|
||||
"XF86AudioLowerVolume" = "exec pamixer -ud 2 && pamixer --get-volume";
|
||||
"XF86AudioMute" = ''
|
||||
exec pamixer --toggle-mute && ( [ "$(pamixer --get-mute)" = "true" ] && echo 0'';
|
||||
|
||||
"XF86MonBrightnessDown" =
|
||||
"exec brightnessctl set 5%- | sed -En 's/.*(([0-9]+)%).*/1/p'";
|
||||
"XF86MonBrightnessUp" =
|
||||
"exec brightnessctl set +5% | sed -En 's/.*(([0-9]+)%).*/1/p'";
|
||||
};
|
||||
|
||||
terminal = "alacritty";
|
||||
|
||||
window = {
|
||||
border = 0;
|
||||
hideEdgeBorders = "none";
|
||||
};
|
||||
};
|
||||
|
||||
extraConfig = ''
|
||||
set $laptop eDP-1
|
||||
bindswitch --reload --locked lid:on output $laptop disable
|
||||
bindswitch --reload --locked lid:off output $laptop enable
|
||||
|
||||
exec_always --no-startup-id autotiling
|
||||
|
||||
exec --no-startup-id ${pkgs.feh}/bin/feh --randomize --bg-scale /home/${username}/Pictures/Wallpaper/*;
|
||||
|
||||
default_border none
|
||||
default_floating_border none
|
||||
smart_borders on
|
||||
smart_gaps on
|
||||
|
||||
for_window [class="zoom"] floating enable
|
||||
# xprop | grep -i class
|
||||
'';
|
||||
|
||||
config = {
|
||||
bars = [{
|
||||
position = "bottom";
|
||||
statusCommand = "${pkgs.i3status}/bin/i3status";
|
||||
}];
|
||||
|
||||
fonts.names = [ "${theme.fonts.monospace.name}" ];
|
||||
|
||||
gaps = {
|
||||
smartBorders = "on";
|
||||
smartGaps = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs.i3status = {
|
||||
enable = true;
|
||||
|
||||
general = {
|
||||
colors = true;
|
||||
|
||||
color_bad = "#f7768e";
|
||||
color_degraded = "#ff9e64";
|
||||
color_good = "#c0caf5";
|
||||
};
|
||||
|
||||
modules = {
|
||||
cpu_temperature.enable = false;
|
||||
ipv6.enable = false;
|
||||
load.enable = false;
|
||||
};
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [ autotiling ];
|
||||
}
|
39
lib/nixos/home-manager/modules/kanshi.nix
Normal file
39
lib/nixos/home-manager/modules/kanshi.nix
Normal file
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
systemd.user.services.kanshi = {
|
||||
serviceConfig = {
|
||||
StartLimitBurst = 5;
|
||||
StartLimitIntervalSec = 30;
|
||||
};
|
||||
};
|
||||
|
||||
services.kanshi = {
|
||||
enable = true;
|
||||
|
||||
# swaymsg -t get_outputs
|
||||
profiles = {
|
||||
undocked = {
|
||||
outputs = [{
|
||||
criteria = "eDP-1";
|
||||
status = "enable";
|
||||
mode = "1920x1080";
|
||||
position = "0,0";
|
||||
}];
|
||||
};
|
||||
|
||||
docked = {
|
||||
outputs = [
|
||||
{
|
||||
criteria = "eDP-1";
|
||||
status = "disable";
|
||||
}
|
||||
|
||||
{
|
||||
criteria = "Samsung Electric Company LU28R55 H4ZRA00128";
|
||||
mode = "2560x1440";
|
||||
position = "0,0";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
{ programs.rofi.enable = true; }
|
184
lib/nixos/home-manager/modules/sway.nix
Normal file
184
lib/nixos/home-manager/modules/sway.nix
Normal file
|
@ -0,0 +1,184 @@
|
|||
{ config, inputs, pkgs, ... }:
|
||||
|
||||
{
|
||||
# services.swayidle = {
|
||||
# enable = true;
|
||||
#
|
||||
# events = [
|
||||
# {
|
||||
# event = "before-sleep";
|
||||
# command = "${pkgs.swaylock}/bin/swaylock --daemonize --image ~/.config/wallpape
|
||||
# /wallpaper.jpg";
|
||||
# }
|
||||
# ];
|
||||
# };
|
||||
|
||||
# services.swayidle.timeouts = [
|
||||
# {
|
||||
# timeout = 300;
|
||||
# command = "${pkgs.swaylock}/bin/swaylock --daemonize --image ~/.config/wallpaper/wallpaper.jpg";
|
||||
# }
|
||||
#
|
||||
# {
|
||||
# timeout = 600;
|
||||
# command = "swaymsg 'output * dpms off'";
|
||||
# resumeCommand = "swaymsg 'output * dpms on'";
|
||||
# }
|
||||
# ];
|
||||
|
||||
# programs.swaylock = {
|
||||
# enable = true;
|
||||
#
|
||||
# settings = {
|
||||
# daemonize = true;
|
||||
# image = "~/.config/wallpaper/wallpaper.jpg";
|
||||
# };
|
||||
# };
|
||||
|
||||
programs.i3status-rust = {
|
||||
enable = true;
|
||||
|
||||
bars = {
|
||||
default = {
|
||||
blocks = [
|
||||
{
|
||||
block = "net";
|
||||
format = " $ip ";
|
||||
}
|
||||
{
|
||||
block = "battery";
|
||||
format = " $icon $percentage $time ";
|
||||
}
|
||||
{ block = "cpu"; }
|
||||
{
|
||||
block = "memory";
|
||||
format = " $icon $mem_total_used_percents.eng(w:2) ";
|
||||
format_alt = " $icon_swap $swap_used_percents.eng(w:2) ";
|
||||
}
|
||||
{
|
||||
block = "disk_space";
|
||||
path = "/";
|
||||
info_type = "available";
|
||||
alert_unit = "GB";
|
||||
interval = 20;
|
||||
warning = 20.0;
|
||||
alert = 10.0;
|
||||
format = " $icon $available.eng(w:2) ";
|
||||
}
|
||||
{
|
||||
block = "time";
|
||||
interval = 1;
|
||||
format = " $timestamp.datetime(f:'%F %T') ";
|
||||
}
|
||||
];
|
||||
|
||||
settings = {
|
||||
theme = {
|
||||
theme = "plain";
|
||||
overrides = {
|
||||
critical_bg = "#222222";
|
||||
good_bg = "#222222";
|
||||
good_fg = "#ffffff";
|
||||
idle_bg = "#222222";
|
||||
idle_fg = "#ffffff";
|
||||
info_bg = "#222222";
|
||||
info_fg = "#ffffff";
|
||||
separator_bg = "#222222";
|
||||
warning_bg = "#222222";
|
||||
warning_fg = "#ffffff";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
wayland.windowManager.sway = {
|
||||
enable = true;
|
||||
xwayland = true;
|
||||
|
||||
config = {
|
||||
assigns = {
|
||||
"1" = [{ app_id = "firefox"; }];
|
||||
"2" = [{ app_id = "Alacritty"; }];
|
||||
"3" = [{ class = "vlc"; }];
|
||||
"9" = [ { class = "Slack"; } { class = "discord"; } ];
|
||||
# Get app_id with swaymsg -t get_tree
|
||||
};
|
||||
|
||||
bars = [{
|
||||
colors.background = "#222222";
|
||||
|
||||
fonts = {
|
||||
names = [ "JetBrainsMono Nerd Font Mono" ];
|
||||
size = 12.0;
|
||||
};
|
||||
|
||||
statusCommand =
|
||||
"i3status-rs ~/.config/i3status-rust/config-default.toml";
|
||||
trayPadding = 5;
|
||||
}];
|
||||
|
||||
gaps = {
|
||||
inner = 0;
|
||||
smartBorders = "on";
|
||||
# smartGaps = true;
|
||||
};
|
||||
|
||||
input = {
|
||||
"*" = { xkb_layout = "gb"; };
|
||||
|
||||
"type:touchpad" = {
|
||||
dwt = "enabled";
|
||||
tap = "enabled";
|
||||
};
|
||||
};
|
||||
|
||||
keybindings =
|
||||
let modifier = config.wayland.windowManager.sway.config.modifier;
|
||||
in inputs.nixpkgs.lib.mkOptionDefault {
|
||||
"${modifier}+Escape" = "exec swaylock --daemonize";
|
||||
"${modifier}+Shift+b" = "exec ${pkgs.firefox}/bin/firefox";
|
||||
"${modifier}+Shift+s" = "exec ${pkgs.flameshot}/bin/flameshot gui";
|
||||
"${modifier}+Shift+y" = "exec ${pkgs.copyq}/bin/copyq toggle";
|
||||
};
|
||||
|
||||
menu = "wofi --show run";
|
||||
modifier = "Mod4";
|
||||
|
||||
output = {
|
||||
# "*" = {
|
||||
# bg = "~/.config/wallpaper/wallpaper.jpg fill";
|
||||
# };
|
||||
|
||||
eDP-1 = { scale = "1.0"; };
|
||||
};
|
||||
|
||||
terminal = "alacritty";
|
||||
|
||||
window.border = 3;
|
||||
};
|
||||
|
||||
extraConfig = ''
|
||||
set $laptop eDP-1
|
||||
bindswitch --reload --locked lid:on output $laptop disable
|
||||
bindswitch --reload --locked lid:off output $laptop enable
|
||||
|
||||
set $WOBSOCK $XDG_RUNTIME_DIR/wob.sock
|
||||
exec rm -f $WOBSOCK && mkfifo $WOBSOCK && tail -f $WOBSOCK | wob
|
||||
|
||||
bindsym XF86AudioRaiseVolume exec pamixer -ui 2 && pamixer --get-volume > $WOBSOCK
|
||||
bindsym XF86AudioLowerVolume exec pamixer -ud 2 && pamixer --get-volume > $WOBSOCK
|
||||
bindsym XF86AudioMute exec pamixer --toggle-mute && ( [ "$(pamixer --get-mute)" = "true" ] && echo 0 > $WOBSOCK ) || pamixer --get-volume > $WOBSOCK
|
||||
|
||||
# TODO: light?
|
||||
bindsym XF86MonBrightnessDown exec brightnessctl set 5%- | sed -En 's/.*\(([0-9]+)%\).*/\1/p' > $WOBSOCK
|
||||
bindsym XF86MonBrightnessUp exec brightnessctl set +5% | sed -En 's/.*\(([0-9]+)%\).*/\1/p' > $WOBSOCK
|
||||
|
||||
for_window [class="vlc"] inhibit_idle fullscreen
|
||||
|
||||
for_window [app_id="flameshot"] floating enable
|
||||
for_window [class="zoom"] floating enable
|
||||
'';
|
||||
};
|
||||
}
|
31
lib/nixos/modules/sway.nix
Normal file
31
lib/nixos/modules/sway.nix
Normal file
|
@ -0,0 +1,31 @@
|
|||
{ inputs, username, ... }:
|
||||
{ pkgs, ... }: {
|
||||
services = {
|
||||
xserver = {
|
||||
displayManager = {
|
||||
defaultSession = "sway";
|
||||
sddm.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs.sway.enable = true;
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
extraPortals = with pkgs; [ xdg-desktop-portal-gtk xdg-desktop-portal-wlr ];
|
||||
};
|
||||
|
||||
home-manager.users.${username} = { pkgs, ... }: {
|
||||
home.sessionVariables = {
|
||||
MOZ_ENABLE_WAYLAND = "1";
|
||||
MOZ_USE_XINPUT2 = "1";
|
||||
QT_QPA_PLATFORM = "wayland";
|
||||
SDL_VIDEODRIVER = "wayland";
|
||||
XDG_CURRENT_DESKTOP = "sway";
|
||||
XDG_SESSION_TYPE = "wayland";
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [ i3status wl-clipboard wofi ];
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue