diff --git a/modules/sway/default.nix b/modules/sway/default.nix new file mode 100644 index 0000000..cef9c35 --- /dev/null +++ b/modules/sway/default.nix @@ -0,0 +1,13 @@ +{ + config, + lib, + pkgs, + doctrine, + ... +}: +doctrine.lib.mkModule { + name = "sway"; + hm = ./hm.nix; + sys = ./sys.nix; + options = ./options.nix; +} diff --git a/modules/sway/options.nix b/modules/sway/options.nix new file mode 100644 index 0000000..b6505c6 --- /dev/null +++ b/modules/sway/options.nix @@ -0,0 +1,3 @@ +{ + sys = {}; +} diff --git a/modules/sway/sys.nix b/modules/sway/sys.nix new file mode 100644 index 0000000..f01ffca --- /dev/null +++ b/modules/sway/sys.nix @@ -0,0 +1,41 @@ +{pkgs, ...}: { + services.libinput.enable = true; + hardware.graphics.enable = true; + + xdg.portal = { + enable = true; + wlr.enable = true; + extraPortals = with pkgs; [xdg-desktop-portal-gtk]; + xdgOpenUsePortal = true; + + # warning: xdg-desktop-portal 1.17 reworked how portal implementations are loaded, you + # should either set `xdg.portal.config` or `xdg.portal.configPackages` + # to specify which portal backend to use for the requested interface. + # + # https://github.com/flatpak/xdg-desktop-portal/blob/1.18.1/doc/portals.conf.rst.in + # + # If you simply want to keep the behaviour in < 1.17, which uses the first + # portal implementation found in lexicographical order, use the following: + # + # xdg.portal.config.common.default = "*"; + config.common.default = "*"; + }; + + environment = { + sessionVariables.NIXOS_OZONE_WL = "1"; + + systemPackages = with pkgs; [ + qt5.qtwayland + qt6.qtwayland + ]; + }; + + programs = { + gtklock = { + enable = mkDefault true; + + config = {}; + modules = []; + }; + }; +}