{ self, ... }: { perSystem = { self', pkgs, system, ... }: { packages = { aurora-greeter = pkgs.writeShellScriptBin "aurora-greeter" '' ${pkgs.quickshell}/bin/quickshell -p ${self'.packages.aurora-greeter-dots}/share/shell.qml ''; aurora-greeter-dots = pkgs.stdenv.mkDerivation { name = "aurora-greeter-dots"; src = ./.; buildInputs = []; buildPhase = '' ''; installPhase = '' mkdir -p $out/share cp -r $src/* $out/share ''; }; aurora-greeter-hypr-conf = pkgs.writeText "greeter-conf" '' exec-once=${self'.packages.aurora-set-wallpaper}/bin/aurora-set-wallpaper exec-once=${self'.packages.aurora-greeter}/bin/aurora-greeter; hyprctl dispatch exit ''; aurora-change-colors = (pkgs.writeShellScriptBin "aurora-change-colors" '' img=''$(realpath "''$1") alpha=''${2:-80} if [[ ''$alpha -lt 0 ]]; then alpha=0 elif [[ ''$alpha -gt 100 ]]; then alpha=100 fi if [[ -f ~/.config/wal/colorschemes/dark/''$(basename "''$img")-''$alpha.json ]]; then ${pkgs.pywal16}/bin/wal -n -f "''$(basename "''$img")-''$alpha" else ${pkgs.pywal16}/bin/wal -n -i "''$img" -a "''$alpha" --cols16 -p "''$(basename "''$img")-''$alpha" fi ''); aurora-set-wallpaper = (pkgs.writeShellScriptBin "aurora-set-wallpaper" '' if [[ ! -d /tmp/aurora/wallpaper ]]; then mkdir -p /tmp/aurora/wallpaper fi src=''$(realpath "''${1:-$(find /tmp/aurora/wallpaper/*)}") n=''$(basename "''$src") ext="''${n''\#''\#*.}" out=''${3:-/dev/null} if [[ ! -z $1 ]]; then rm -rf /tmp/aurora/wallpaper/* cp ''$src /tmp/aurora/wallpaper/wallpaper.$ext chmod 666 /tmp/aurora/wallpaper/wallpaper.$ext fi img="/tmp/aurora/wallpaper/wallpaper.$ext" if [[ ''$ext == "gif" || ''$ext == "mp4" ]]; then yes | ${pkgs.ffmpeg}/bin/ffmpeg -i "''$img" -vframes 1 /tmp/aurora/tmp.jpg >> ''$out pidof mpvpaper >> $out && pkill mpvpaper ${pkgs.swww}/bin/swww img /tmp/aurora/tmp.jpg -t wipe >> ''$out sleep 0.6 hyprctl dispatch exec "${pkgs.mpvpaper}/bin/mpvpaper ALL ''$img -o loop" >> ''$out else yes | ${pkgs.ffmpeg}/bin/ffmpeg -i "''$img" /tmp/aurora/tmp.jpg >> ''$out pidof mpvpaper >> $out && pkill mpvpaper hyprctl dispatch exec "${pkgs.swww}/bin/swww img ''$img -t wipe" >> ''$out fi ${self'.packages.aurora-change-colors}/bin/aurora-change-colors "''$src" "''$2" >> ''$out ''); }; }; flake.nixosModules.default = { config, lib, pkgs, ... }: { options.services.aurora-greeter = with lib; { enable = mkEnableOption "aurora-greeter"; }; config = let cfg = config.services.aurora-greeter; system = pkgs.stdenv.hostPlatform.system; in { users.users.aurora = { createHome = true; home = "/tmp/aurora/home"; packages = with pkgs; [ self.packages.${system}.aurora-greeter self.packages.${system}.aurora-set-wallpaper swww mpvpaper ffmpeg ]; isNormalUser = true; group = "aurora"; }; users.groups.aurora = {}; services.greetd = { enable = cfg.enable; settings = { default_session = { command = "start-hyprland -- -c ${self.packages.${system}.aurora-greeter-hypr-conf}"; user = "aurora"; }; }; }; }; }; }