114 lines
2.6 KiB
Nix
114 lines
2.6 KiB
Nix
{ lib, config, pkgs, inputs, ... }:
|
|
|
|
let
|
|
cfg = config.snowhawk.dwl;
|
|
in
|
|
{
|
|
options.snowhawk.dwl = {
|
|
enable = lib.mkEnableOption "dwl";
|
|
|
|
package = lib.mkOption {
|
|
type = with lib.types; package;
|
|
default = inputs.zdwl.packages."x86_64-linux".default;
|
|
apply = p: p.overrideAttrs {
|
|
postInstall = ''
|
|
mkdir -p $out/share/wayland-sessions
|
|
install $src/dwl.desktop -Dt $out/share/wayland-sessions
|
|
'';
|
|
passthru.providedSessions = [ "dwl" ];
|
|
};
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
services.graphical-desktop.enable = lib.mkDefault true;
|
|
|
|
services.displayManager = {
|
|
enable = true;
|
|
sessionPackages = [ cfg.package ];
|
|
defaultSession = "dwl";
|
|
# TODO: greetd?
|
|
sddm = {
|
|
enable = lib.mkDefault true;
|
|
wayland.enable = lib.mkDefault true;
|
|
};
|
|
};
|
|
|
|
security = {
|
|
polkit.enable = lib.mkDefault true;
|
|
# Uncomment to make swaylock work
|
|
# pam.services.swaylock = { };
|
|
};
|
|
|
|
# environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
|
|
|
programs = {
|
|
dconf.enable = lib.mkDefault true;
|
|
xwayland.enable = lib.mkDefault true;
|
|
};
|
|
|
|
xdg.portal = {
|
|
enable = true;
|
|
wlr.enable = lib.mkDefault true;
|
|
extraPortals = [
|
|
pkgs.xdg-desktop-portal-gtk
|
|
pkgs.xdg-desktop-portal-wlr
|
|
];
|
|
};
|
|
|
|
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1050913
|
|
xdg.portal.config.dwl.default = lib.mkDefault [ "wlr" "gtk" ];
|
|
|
|
services.xserver.desktopManager.runXdgAutostartIfNone = lib.mkDefault true;
|
|
|
|
environment.variables = {
|
|
QT_QPA_PLATFORM = "wayland;xcb";
|
|
MOZ_ENABLE_WAYLAND = 1;
|
|
SDL_VIDEODRIVER = "wayland,x11"; # TODO: Test me
|
|
_JAVA_AWT_WM_NONREPARENTING = 1;
|
|
XDG_CURRENT_DESKTOP = "dwl";
|
|
XDG_SESSION_DESKTOP = "dwl";
|
|
};
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
grim
|
|
slurp
|
|
satty
|
|
|
|
dwlmsg
|
|
|
|
wdisplays
|
|
xorg.xlsclients
|
|
|
|
wl-clipboard
|
|
wmenu
|
|
kitty
|
|
cfg.package
|
|
|
|
pipewire-controller
|
|
|
|
(pkgs.writeShellApplication {
|
|
name = "sattySnap";
|
|
|
|
runtimeInputs = [ satty grim gawk gnugrep dwlmsg ];
|
|
|
|
text =
|
|
let
|
|
sattyArgs = lib.cli.toGNUCommandLineShell { } {
|
|
early-exit = true;
|
|
filename = "-";
|
|
fullscreen = true;
|
|
initial-tool = "crop";
|
|
};
|
|
in
|
|
''
|
|
grim -o "$(dwlmsg -g | grep "selmon 1" | awk '{ print $1 }')" - | satty ${sattyArgs}
|
|
'';
|
|
})
|
|
];
|
|
|
|
home-manager.sharedModules = [
|
|
{ snowhawk.satty.enable = lib.mkDefault true; }
|
|
];
|
|
};
|
|
}
|