summaryrefslogtreecommitdiff
path: root/system/desktops
diff options
context:
space:
mode:
Diffstat (limited to 'system/desktops')
-rw-r--r--system/desktops/default.nix8
-rw-r--r--system/desktops/hyprland.nix29
-rw-r--r--system/desktops/ly.nix59
-rw-r--r--system/desktops/sway.nix33
-rw-r--r--system/desktops/wayland.nix24
5 files changed, 153 insertions, 0 deletions
diff --git a/system/desktops/default.nix b/system/desktops/default.nix
new file mode 100644
index 0000000..8f9270f
--- /dev/null
+++ b/system/desktops/default.nix
@@ -0,0 +1,8 @@
+{...}: {
+ imports = [
+ ./hyprland.nix
+ ./ly.nix
+ ./sway.nix
+ ./wayland.nix
+ ];
+}
diff --git a/system/desktops/hyprland.nix b/system/desktops/hyprland.nix
new file mode 100644
index 0000000..91170bd
--- /dev/null
+++ b/system/desktops/hyprland.nix
@@ -0,0 +1,29 @@
+{
+ inputs,
+ config,
+ pkgs,
+ lib,
+ ...
+}: let
+ inherit (lib) mkIf mkDefault;
+ cfg = config.desktops.hyprland;
+in {
+ config = mkIf cfg.enable {
+ desktops.wayland.enable = true;
+
+ xdg.portal = {
+ extraPortals = [
+ inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland
+ ];
+ config = {
+ hyprland.common = ["gtk" "hyprland"];
+ };
+ };
+
+ programs.hyprland = {
+ enable = true;
+ package = inputs.hyprland.packages.${pkgs.system}.hyprland;
+ portalPackage = inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland;
+ };
+ };
+}
diff --git a/system/desktops/ly.nix b/system/desktops/ly.nix
new file mode 100644
index 0000000..ac53495
--- /dev/null
+++ b/system/desktops/ly.nix
@@ -0,0 +1,59 @@
+{
+ lib,
+ config,
+ pkgs,
+ inputs,
+ ...
+}: let
+ inherit (lib) mkIf;
+ cfg = config.desktops.ly;
+in {
+ config = mkIf cfg.enable {
+ # display manager
+ services.displayManager.ly = {
+ enable = true;
+ package = inputs.self.packages.${pkgs.system}.ly;
+
+ settings = let
+ base = "0x00${config.theme.colors.base}";
+ text = "0x00${config.theme.colors.text}";
+ bold = "0x01${config.theme.colors.text}";
+ error = "0x00${config.theme.colors.error}";
+ save_file = pkgs.writeText "ly-prefs" ''
+ ${config.user}
+ 1
+ '';
+ in {
+ # general
+ clear_password = true;
+ default_input = "password";
+ xinitrc = "null";
+ hide_version_string = true;
+ hide_key_hints = true;
+ session_log = "/dev/null";
+ # state (evil)
+ tty = 1;
+ save = false;
+ load = true;
+ save_file = toString save_file;
+ # background
+ bg = base;
+ error_bg = base;
+ blank_box = true;
+ # foreground
+ fg = text;
+ error_fg = error;
+ border_fg = bold;
+ };
+ };
+
+ # disable default login on tty 1
+ systemd.services."autovt@tty1".enable = false;
+ systemd.services."getty@tty1".enable = false;
+
+ # fix env not being set
+ systemd.services.display-manager = {
+ environment.XDG_CURRENT_DESKTOP = "X-NIXOS-SYSTEMD-AWARE";
+ };
+ };
+}
diff --git a/system/desktops/sway.nix b/system/desktops/sway.nix
new file mode 100644
index 0000000..622d54c
--- /dev/null
+++ b/system/desktops/sway.nix
@@ -0,0 +1,33 @@
+{
+ lib,
+ config,
+ pkgs,
+ ...
+}: let
+ inherit (lib) mkIf mkDefault;
+ cfg = config.desktops.sway;
+in {
+ config = mkIf cfg.enable {
+ desktops.wayland.enable = true;
+
+ # TODO: set NIXOS_OZONE_WL env var
+
+ xdg.portal = {
+ config = {
+ sway.common = ["gtk" "wlr"];
+ };
+ extraPortals = with pkgs; [
+ xdg-desktop-portal-wlr
+ ];
+ };
+
+ programs.sway = {
+ enable = true;
+ package = pkgs.swayfx;
+ wrapperFeatures = {
+ base = false;
+ gtk = false;
+ };
+ };
+ };
+}
diff --git a/system/desktops/wayland.nix b/system/desktops/wayland.nix
new file mode 100644
index 0000000..8a81fdf
--- /dev/null
+++ b/system/desktops/wayland.nix
@@ -0,0 +1,24 @@
+{
+ lib,
+ config,
+ pkgs,
+ ...
+}: let
+ inherit (lib) mkIf;
+ cfg = config.desktops.wayland;
+in {
+ config = mkIf cfg.enable {
+ xdg.portal = {
+ enable = true;
+ xdgOpenUsePortal = true;
+ extraPortals = with pkgs; [
+ xdg-desktop-portal-gtk
+ ];
+ config = {
+ default.common = ["gtk"];
+ };
+ };
+
+ programs.xwayland.enable = true;
+ };
+}