From 3f8b6984b741f965e8cca4fd49a04d3216126ed9 Mon Sep 17 00:00:00 2001 From: reidlab Date: Tue, 28 Apr 2026 22:40:27 -0700 Subject: [PATCH] autologin module, fix awww --- modules/desktop/autologin.nix | 25 +++++++++++++++++++++++++ modules/desktop/awww.nix | 6 +++++- modules/desktop/niri.nix | 1 + modules/desktop/regreet.nix | 1 + modules/desktop/waybar.nix | 22 +++++++++++++++++++--- 5 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 modules/desktop/autologin.nix diff --git a/modules/desktop/autologin.nix b/modules/desktop/autologin.nix new file mode 100644 index 0000000..c701678 --- /dev/null +++ b/modules/desktop/autologin.nix @@ -0,0 +1,25 @@ +{ lib, config, pkgs, ... }: + +with lib; +let + cfg = config.modules.desktop.autologin; +in { + options.modules.desktop.autologin = { + enable = mkEnableOption "Enable auto login, the quickest way to enter your desktop environment"; + }; + + config = mkIf cfg.enable { + services.displayManager.enable = true; + services.displayManager.autoLogin.enable = true; + services.displayManager.autoLogin.user = config.user.name; + + # greetd autologin kinda sucks (requires a binary to launch, not the name of a desktop file) + # but, ly has it! ly seems pretty cool and lightweight! thank goodness + # https://codeberg.org/fairyglade/ly/commit/0cf752f3b850d16283e28853bca63e994d8c5e7b + services.displayManager.ly.enable = true; + services.displayManager.ly.settings = { + auto_login_session = config.services.displayManager.defaultSession; + auto_login_user = config.user.name; + }; + }; +} diff --git a/modules/desktop/awww.nix b/modules/desktop/awww.nix index 30f86f5..bb8f643 100644 --- a/modules/desktop/awww.nix +++ b/modules/desktop/awww.nix @@ -118,11 +118,15 @@ in { PartOf = [ "awww.service" ] ++ optional cfg.backdrop "awww-backdrop.service"; }; + Install = { + WantedBy = [ "graphical-session.target" ]; + }; + Service = { Type = "oneshot"; ExecStart = "${cfg.setScript}"; Restart = "on-failure"; - RestartSec = 2; + RestartSec = 5; }; }; }) diff --git a/modules/desktop/niri.nix b/modules/desktop/niri.nix index 9533dc9..44f63c2 100644 --- a/modules/desktop/niri.nix +++ b/modules/desktop/niri.nix @@ -14,6 +14,7 @@ in { }; config = mkIf cfg.enable { + services.displayManager.defaultSession = "niri"; services.displayManager.sessionPackages = [ cfg.package ]; programs.niri = { diff --git a/modules/desktop/regreet.nix b/modules/desktop/regreet.nix index 8246def..54d370c 100644 --- a/modules/desktop/regreet.nix +++ b/modules/desktop/regreet.nix @@ -10,6 +10,7 @@ in { }; config = mkIf cfg.enable { + services.displayManager.enable = true; services.greetd = { enable = true; settings = { diff --git a/modules/desktop/waybar.nix b/modules/desktop/waybar.nix index 5e1417a..4813a79 100644 --- a/modules/desktop/waybar.nix +++ b/modules/desktop/waybar.nix @@ -18,9 +18,6 @@ in { hm.services.playerctld.enable = true; hm.programs.waybar = { enable = true; - # essentially just the service - # peculiar how this is a program - systemd.enable = true; package = cfg.package; settings = let @@ -344,5 +341,24 @@ in { ]; }; }; + + hm.systemd.user.services.waybar = { + Unit = { + Description = "Waybar, a highly customizable wayland bar for wlroots compositors"; + After = [ "graphical-session-pre.target" ]; + PartOf = [ "graphical-session.target" ]; + }; + + Install = { + WantedBy = [ "graphical-session.target" ]; + }; + + Service = { + Type = "simple"; + ExecStart = "${lib.getExe cfg.package}"; + Restart = "on-failure"; + RestartSec = 5; + }; + }; }; }