138 lines
4.4 KiB
Nix
138 lines
4.4 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-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";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|