diff --git a/assets/pkg/nix/lidm.nix b/assets/pkg/nix/lidm.nix index 8c368ca..7753eb5 100644 --- a/assets/pkg/nix/lidm.nix +++ b/assets/pkg/nix/lidm.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ...}: pkgs.stdenv.mkDerivation rec { +{ config, pkgs, lib, ...}: pkgs.stdenv.mkDerivation rec { pname = "lidm"; version = config.version; src = config.src; @@ -12,13 +12,11 @@ makeFlags = [ "DESTDIR=$(out)" "PREFIX=" - ]; - - installPhase = '' - make install DESTDIR=$out PREFIX= - mkdir -p $out/etc/systemd/system/ - make install-service-systemd DESTDIR=$out PREFIX= - ''; + ] + ++ lib.optional (config.xsessions != null) + "CPPFLAGS+=-DSESSIONS_XSESSIONS=\\\"${config.xsessions}\\\"" + ++ lib.optional (config.wayland-sessions != null) + "CPPFLAGS+=-DSESSIONS_WAYLAND=\\\"${config.wayland-sessions}\\\""; fixupPhase = '' rm -rf $out/etc diff --git a/assets/pkg/nix/module.nix b/assets/pkg/nix/module.nix new file mode 100644 index 0000000..69b013d --- /dev/null +++ b/assets/pkg/nix/module.nix @@ -0,0 +1,47 @@ +{ config, lib, pkgs, ... }: + +let + dmcfg = config.services.displayManager; + desktops = dmcfg.sessionData.desktops; + + version = "1.2.1"; + lidmPkg = pkgs.callPackage ./lidm.nix { + inherit pkgs; + config = { + inherit version lib; + src = pkgs.fetchFromGitHub { + owner = "javalsai"; + repo = "lidm"; + rev = "v${version}"; + sha256 = "sha256-3CgUI8PUs4c1bfBrykPw87SSa4lzrh4E4Hug7cGRKFk="; + }; + + xsessions = "${desktops}/share/xsessions"; + wayland-sessions = "${desktops}/share/wayland-sessions"; + }; + }; +in +{ + config = { + services.displayManager.defaultSession = "lidm"; + + systemd.services.lidm = { + description = "TUI display manager"; + aliases = [ "display-manager.service" ]; + after = [ + "systemd-user-sessions.service" + "plymouth-quit-wait.service" + ]; + serviceConfig = { + Type = "idle"; + ExecStart = "${lidmPkg}/bin/lidm 7"; + StandardInput = "tty"; + StandardOutput = "tty"; + StandardError = "tty"; + TTYPath = "/dev/tty7"; + TTYReset = "yes"; + TTYVHangup = "yes"; + }; + }; + }; +} diff --git a/assets/services/systemd.service b/assets/services/systemd.service index 39ef026..c34e89d 100644 --- a/assets/services/systemd.service +++ b/assets/services/systemd.service @@ -5,9 +5,9 @@ After=systemd-user-sessions.service plymouth-quit-wait.service [Service] Type=idle ExecStart=/usr/bin/lidm 7 -StandardError=journal StandardInput=tty StandardOutput=tty +StandardError=tty TTYPath=/dev/tty7 TTYReset=yes TTYVHangup=yes diff --git a/flake.nix b/flake.nix index 96838e5..95f8e3c 100644 --- a/flake.nix +++ b/flake.nix @@ -20,7 +20,13 @@ lidm = pkgs.callPackage assets/pkg/nix/lidm.nix { inherit pkgs; - config = { inherit version; src = ./.; }; + lib = pkgs.lib; + config = { + inherit version; + src = ./.; + xsessions = null; + wayland-sessions = null; + }; }; in rec { @@ -28,5 +34,7 @@ defaultPackage = lidm; devShell = pkgs.mkShell { buildInputs = lidm.nativeBuildInputs ++ [ pkgs.clang-tools ]; }; } - ); + ) // { + nixosModules.lidm = assets/pkg/nix/module.nix; + }; }