Files
Aurora/config/aurora-greeter/default.nix
2026-04-11 20:01:47 -05:00

168 lines
5.3 KiB
Nix

{ 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-greeter-init}/bin/aurora-greeter-init
misc {
disable_hyprland_logo = false
disable_splash_rendering = true
force_default_wallpaper = 0
}
ecosystem {
no_update_news = true
no_donation_nag = true
}
'';
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
'');
aurora-greeter-init = (pkgs.writeShellScriptBin "aurora-greeter-init" ''
if [[ ! -d /tmp/aurora ]]; then
mkdir /tmp/aurora
fi
hyprctl --batch "\
dispatch exec ${pkgs.swww}/bin/swww-daemon ;\
dispatch exec ${self'.packages.aurora-set-wallpaper}/bin/aurora-set-wallpaper;\
setcursor Bibata-Modern-Classic 16"
sleep 3
hyprctl reload
${self'.packages.aurora-greeter}/bin/aurora-greeter
rm ~/.config/wal/colorschemes/dark/wallpaper*
hyprctl dispatch exit
'');
};
};
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-greeter-init
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";
};
};
};
};
};
}