nixos/modules/sway/sway_conf.nix
2023-12-16 16:36:03 -07:00

118 lines
3.0 KiB
Nix

{ lib, config, pkgs, ... }:
{
options.swaywm = {
enable = lib.mkEnableOption "Enable sway window manager.";
useNonFree = lib.mkOption {
default = false;
example = true;
description = "Whether to enable non-free software in the sway config";
};
installGaming = lib.mkOption {
default = false;
example = true;
description = "Whether to install gaming software on the system.";
};
systemPackages = lib.mkOption {
default = [];
description = "Add any additional packages desired. Merged with sway defaults.";
};
};
config = lib.mkIf config.swaywm.enable {
nixpkgs.config.allowUnfree = config.swaywm.useNonFree;
###
## XDG portal setup
###
xdg.portal = {
config = {
common = {
default = [
"wlr"
];
};
};
extraPortals = with pkgs; [
# xdg-desktop-portal-kde
xdg-desktop-portal-gtk
];
wlr.enable = true;
enable = true;
};
xdg.sounds.enable = true;
###
## System Packages
###
environment.systemPackages = with pkgs; lib.lists.flatten [
[
git
glib # gsettings
grim
pavucontrol
slurp
swaylock
swayidle
wl-clipboard
xdg-utils
zsh
# Add to gaming only installs
lutris
wine-wayland
# Video utils
davinci-resolve-studio
imv
mpv
gimp
]
config.swaywm.systemPackages
# (lib.mkIf config.swaywm.installGaming [
# pkgs.lutris
# ])
];
programs.zsh.enable = true;
programs.steam.enable = config.swaywm.installGaming;
###
## Services
###
services.openssh.enable = true;
services.dbus.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
};
# kdeconnect setup
programs.kdeconnect.enable = true;
# Firewall
# networking.firewall = {
# enable = true;
# allowedTCPPortRanges = [
# {from = 1714; to = 1764;} # KDE Connnect
# ];
# allowedUDPPortRanges = [
# {from = 1714; to = 1764;} # KDE Connnect
# ];
# };
###
## Misc
###
sound.enable = true;
# Necessary for home-manager sway setup
security.polkit.enable = true;
hardware.opengl = {
enable = true;
driSupport = true;
};
};
}