From c393d0110d578f65f69e426d41d478bc65d6c831 Mon Sep 17 00:00:00 2001 From: Freya Murphy Date: Thu, 28 May 2026 10:01:38 -0400 Subject: add greetd support --- home/desktops/hyprland/hyprland.lua | 8 ++--- hosts/kaworu/default.nix | 2 ++ hosts/shinji/default.nix | 2 ++ hosts/thinkpad/default.nix | 2 ++ lib/home.nix | 2 ++ options.nix | 15 ++++++++- system/default.nix | 1 + system/desktops/default.nix | 1 - system/desktops/ly.nix | 62 ------------------------------------- system/login/default.nix | 6 ++++ system/login/greetd.nix | 25 +++++++++++++++ system/login/ly.nix | 62 +++++++++++++++++++++++++++++++++++++ 12 files changed, 120 insertions(+), 68 deletions(-) delete mode 100644 system/desktops/ly.nix create mode 100644 system/login/default.nix create mode 100644 system/login/greetd.nix create mode 100644 system/login/ly.nix diff --git a/home/desktops/hyprland/hyprland.lua b/home/desktops/hyprland/hyprland.lua index 54a61f4..42a64ee 100644 --- a/home/desktops/hyprland/hyprland.lua +++ b/home/desktops/hyprland/hyprland.lua @@ -44,7 +44,7 @@ hl.config({ --[[ MONITORS ]]-- -for _,monitor in pairs(config.monitors) do +for _,monitor in ipairs(config.monitors) do local opts = { scale = monitor.scale, bitdepth = monitor.bitdepth, @@ -105,7 +105,7 @@ bind({mod, "J"}, hl.dsp.layout("togglesplit")) -- Move focus with mod + arrow keys -- Move window across workspace with mod + arrow keys -for _,direction in pairs({"left", "right", "up", "down"}) do +for _,direction in ipairs({"left", "right", "up", "down"}) do bind({mod, direction}, hy3.move_focus(direction)) bind({mod, "SHIFT", direction}, hy3.move_window(direction)) end @@ -236,7 +236,7 @@ animation("borderangle", 24, "linear", "loop") --[[ LAYER RULES ]]-- -- Fix wierd borders -for _,namespace in pairs({"wofi", "notification"}) do +for _,namespace in ipairs({"wofi", "notification"}) do hl.layer_rule({ blur = true, match = { namespace = namespace } }) hl.layer_rule({ ignore_alpha = 0, match = { namespace = namespace } }) end @@ -305,7 +305,7 @@ hl.config({ --[[ AUTOSTART ]]-- hl.on("hyprland.start", function() - for _,app in pairs(config.autoRun) do + for _,app in ipairs(config.autoRun) do hl.exec_cmd(app) end end) diff --git a/hosts/kaworu/default.nix b/hosts/kaworu/default.nix index a39cfe0..4ca386c 100644 --- a/hosts/kaworu/default.nix +++ b/hosts/kaworu/default.nix @@ -25,6 +25,8 @@ desktops = { enable = true; hyprland.enable = true; + }; + login = { ly.enable = true; }; gaming = { diff --git a/hosts/shinji/default.nix b/hosts/shinji/default.nix index e22ee91..e7b832a 100644 --- a/hosts/shinji/default.nix +++ b/hosts/shinji/default.nix @@ -59,6 +59,8 @@ enable = true; hyprland.enable = true; sway.enable = true; + }; + login = { ly.enable = true; }; development = { diff --git a/hosts/thinkpad/default.nix b/hosts/thinkpad/default.nix index e57214d..b2cc23c 100644 --- a/hosts/thinkpad/default.nix +++ b/hosts/thinkpad/default.nix @@ -27,6 +27,8 @@ _: { desktops = { enable = true; hyprland.enable = true; + }; + login = { ly.enable = true; }; gaming = { diff --git a/lib/home.nix b/lib/home.nix index 4b4ec02..871f5bb 100644 --- a/lib/home.nix +++ b/lib/home.nix @@ -31,9 +31,11 @@ apps browsers desktops + login gaming development virt + vpn autoRun # Packages extraPackages diff --git a/options.nix b/options.nix index 8424716..4491c2c 100644 --- a/options.nix +++ b/options.nix @@ -498,11 +498,24 @@ in { desktops = { enable = mkEnableOption "Enable baseline desktop utils and programs."; wayland.enable = mkEnableOption "Enable wayland desktop components."; - ly.enable = mkEnableOption "Install the ly display manager."; hyprland.enable = mkEnableOption "Install the Hyprland desktop."; sway.enable = mkEnableOption "Install the sway desktop."; }; + # + # Login managers + # + login = { + ly.enable = mkEnableOption "Install the ly display manager."; + greetd = { + enable = mkEnableOption "Enable the greetd login manager."; + session = mkOption { + description = "Session program to run for greetd"; + type = lib.types.str; + }; + }; + }; + # # Gaming programs to choose from # diff --git a/system/default.nix b/system/default.nix index a8b384d..de4a5f3 100644 --- a/system/default.nix +++ b/system/default.nix @@ -16,6 +16,7 @@ in { ./bootloader ./desktops ./gaming + ./login ./virt ./amdgpu.nix ./battery.nix diff --git a/system/desktops/default.nix b/system/desktops/default.nix index 476dd72..43f2ab3 100644 --- a/system/desktops/default.nix +++ b/system/desktops/default.nix @@ -1,7 +1,6 @@ _: { imports = [ ./hyprland.nix - ./ly.nix ./sway.nix ./wayland.nix ]; diff --git a/system/desktops/ly.nix b/system/desktops/ly.nix deleted file mode 100644 index 298fc4c..0000000 --- a/system/desktops/ly.nix +++ /dev/null @@ -1,62 +0,0 @@ -{ - lib, - config, - ... -}: let - inherit (lib) mkIf; - cfg = config.desktops.ly; -in { - config = mkIf cfg.enable { - # display manager - services.displayManager.ly = { - enable = true; - - 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}"; - red = "0x00${config.theme.colors.normal.red}"; - blue = "0x00${config.theme.colors.normal.blue}"; - 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; - # background - bg = base; - error_bg = base; - blank_box = true; - # foreground - fg = text; - error_fg = error; - border_fg = bold; - # animation - animation = "colormix"; - colormix_col1 = blue; - colormix_col2 = red; - colormix_col3 = "0x20000000"; - }; - }; - - # 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"; - }; - - # write save file - environment.etc."ly/save.txt".text = '' - 0 - ${config.user}:1 - ''; - }; -} diff --git a/system/login/default.nix b/system/login/default.nix new file mode 100644 index 0000000..befb915 --- /dev/null +++ b/system/login/default.nix @@ -0,0 +1,6 @@ +_: { + imports = [ + ./greetd.nix + ./ly.nix + ]; +} diff --git a/system/login/greetd.nix b/system/login/greetd.nix new file mode 100644 index 0000000..74ab666 --- /dev/null +++ b/system/login/greetd.nix @@ -0,0 +1,25 @@ +{ + config, + lib, + ... +}: let + inherit (lib) mkIf; + cfg = config.login.greetd; +in { + config = mkIf cfg.enable { + services.greetd = { + enable = true; + restart = false; + settings = let + session = { + command = cfg.session; + user = config.user; + }; + in { + terminal.vt = 1; + default_session = session; + initial_session = session; + }; + }; + }; +} diff --git a/system/login/ly.nix b/system/login/ly.nix new file mode 100644 index 0000000..d525333 --- /dev/null +++ b/system/login/ly.nix @@ -0,0 +1,62 @@ +{ + lib, + config, + ... +}: let + inherit (lib) mkIf; + cfg = config.login.ly; +in { + config = mkIf cfg.enable { + # display manager + services.displayManager.ly = { + enable = true; + + 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}"; + red = "0x00${config.theme.colors.normal.red}"; + blue = "0x00${config.theme.colors.normal.blue}"; + 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; + # background + bg = base; + error_bg = base; + blank_box = true; + # foreground + fg = text; + error_fg = error; + border_fg = bold; + # animation + animation = "colormix"; + colormix_col1 = blue; + colormix_col2 = red; + colormix_col3 = "0x20000000"; + }; + }; + + # 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"; + }; + + # write save file + environment.etc."ly/save.txt".text = '' + 0 + ${config.user}:1 + ''; + }; +} -- cgit v1.3.1-freya