diff --git a/home/common/default.nix b/home/common/default.nix index bcc2249..7a094ae 100644 --- a/home/common/default.nix +++ b/home/common/default.nix @@ -2,5 +2,6 @@ { imports = [ ./wm.nix + ./nodm.nix ]; } diff --git a/home/common/nodm.nix b/home/common/nodm.nix new file mode 100644 index 0000000..003c34b --- /dev/null +++ b/home/common/nodm.nix @@ -0,0 +1,31 @@ +{ lib, pkgs, config, osConfig ? {}, options, ... }: +let + cfg = config.nixfiles.common.nodm; +in +{ + config = let + hyprland="${config.wayland.windowManager.hyprland.finalPackage}/bin/Hyprland"; + tty="${pkgs.coreutils}/bin/tty"; + initCommands = + '' + if [[ "$(${tty})" == "/dev/tty1" && -z "''${WAYLAND_DISPLAY:+x}" ]] ; then + ${hyprland} + fi + ''; + in lib.mkIf cfg.enable { + # auto start Hyprland on tty1 + programs.zsh.initExtra = initCommands; + programs.bash.initExtra = initCommands; + }; + + options.nixfiles.common.nodm = { + enable = lib.mkOption { + type = lib.types.bool; + description = "Whether to automatically start a desktop session on TTY1, behaving like a rudimentary display manager."; + default = osConfig ? systemd + && config.nixfiles.meta.graphical + && (!(osConfig.systemd.services.display-manager.enable or false)); + example = true; + }; + }; +} diff --git a/hosts/nullbox/configuration.nix b/hosts/nullbox/configuration.nix index e19ef5b..6ec7062 100644 --- a/hosts/nullbox/configuration.nix +++ b/hosts/nullbox/configuration.nix @@ -59,6 +59,9 @@ packageSets.gaming.enable = true; }; + services.xserver.displayManager.sddm.enable = false; + services.xserver.displayManager.startx.enable = true; + # bootloader setup boot.loader = { efi = { diff --git a/hosts/slab/home.nix b/hosts/slab/home.nix index b850019..1b6ebb9 100644 --- a/hosts/slab/home.nix +++ b/hosts/slab/home.nix @@ -10,16 +10,6 @@ }; home.stateVersion = "23.11"; - # auto start Hyprland on tty1 - programs.zsh.initExtraFirst = let - hyprland="${config.wayland.windowManager.hyprland.finalPackage}/bin/Hyprland"; - tty="${pkgs.coreutils}/bin/tty"; - in lib.mkIf config.wayland.windowManager.hyprland.enable '' - if [[ "$(${tty})" == "/dev/tty1" && -z "''${WAYLAND_DISPLAY:+x}" ]] ; then - ${hyprland} - fi - ''; - wayland.windowManager.hyprland.settings = { monitor = ",preferred,auto,1.25"; };