# Nerdfetch: https://github.com/ThatOneCalculator/NerdFetch { pkgs, config, ... }: let nerdfetch = pkgs.writeShellScriptBin "nerdfetch" '' ostype="$(uname)" version=8.1.1 font=nerd distrotype=none osi="" ki="" ri="󰍛" pi="󰏔" ui="󰅶" ci="" case $1 in "-p") font=phosphor osi="" ki="" ri="" pi="" ui="" ci="" ;; "-c") font=cozette ki="♥" ri="" pi="" ui="" ci="" ;; "-e") font=emoji osi="🐧" ki="💓" ri="🐐" pi="📦" ui="☕" ci="🎨" ;; "-v") echo "NerdFetch $version" exit ;; "-h") echo "Flags: -c: Cozette font -p: Phosphor font -e: Emoji font -v: Version" exit ;; esac if command -v getprop 1>/dev/null; then distrotype=android fi kernel="$(echo $(uname -r) | cut -d'-' -f1-1)" case $ostype in *"Linux"*) if [ $distrotype = android ]; then host="$(hostname)" USER="$(whoami)" os="Android $(getprop ro.build.version.release)" case $font in phosphor) osi="" ;; emoji) osi="🤖" ;; *) osi="󰀲" ;; esac else host="$(cat /proc/sys/kernel/hostname)" . /etc/os-release if [ -f /bedrock/etc/bedrock-release ]; then os="$(brl version)" else os="''${PRETTY_NAME}" if [ $font = nerd ]; then case $(echo $ID | sed 's/ .*//') in debian) osi="" ;; arch) osi="󰣇" ;; endeavouros) osi="" ;; fedora) osi="" ;; gentoo) osi="" ;; rhel) osi="" ;; slackware) osi="" ;; void) osi="" ;; alpine) osi="" ;; nixos) osi="󱄅" ;; artix) osi="" ;; exherbo) osi="󰆚" ;; mageia) osi="" ;; manjaro) osi="" ;; opensuse) osi="" ;; solus) osi="" ;; ubuntu) osi="" ;; mint) osi="󰣭" ;; trisquel) osi="" ;; puppy) osi="" ;; coreos) osi="" ;; mx) osi="" ;; vanilla) osi="" ;; pop_os) osi="" ;; raspbian) osi="" ;; deepin) osi="" ;; almalinux) osi="" ;; garuda) osi="" ;; centos) osi="" ;; rocky) osi="" ;; esac elif [ $font = cozette ]; then case $(echo $ID | sed 's/ .*//') in debian) osi="" ;; arch) osi="" ;; fedora) osi="" ;; gentoo) osi="" ;; slackware) osi="" ;; void) osi="" ;; alpine) osi="" ;; nixos) osi="" ;; mageia) osi="" ;; manjaro) osi="" ;; opensuse) osi="" ;; ubuntu) osi="" ;; mint) osi="" ;; coreos) osi="" ;; centos) osi="" ;; esac fi fi fi shell=$(basename "$SHELL") ;; *"Darwin"*) host="$(hostname -f | sed -e 's/^[^.]*\.//')" mac_product="$(/usr/libexec/PlistBuddy -c "Print:ProductName" /System/Library/CoreServices/SystemVersion.plist)" mac_version="$(/usr/libexec/PlistBuddy -c "Print:ProductVersion" /System/Library/CoreServices/SystemVersion.plist)" os="''${mac_product} ''${mac_version}" case $font in nerd) osi="" ;; phosphor) osi="" ;; cozette) osi="" ;; emoji) osi="🍎" ;; esac ;; *"FreeBSD"*) host="$(hostname)" distrotype=bsd os="FreeBSD $(freebsd-version | sed 's/-.*//')" case $font in nerd) osi="" ;; phosphor) osi="" ;; cozette) osi="" ;; emoji) osi="😈" ;; esac ;; *"OpenBSD"*) host="$(hostname)" distrotype=bsd os="OpenBSD $(uname -r)" case $font in nerd) osi="" ;; phosphor) osi="" ;; cozette) osi="⌘" ;; emoji) osi="🐡" ;; esac ;; *"NetBSD"*) host="$(hostname)" distrotype=netbsd os="NetBSD $(uname -r)" case $font in nerd) osi="󰉀" ;; phosphor) osi="" ;; cozette) osi="" ;; emoji) osi="🚩" ;; esac ;; *) os="Unix-like" host="host" ;; esac ## PACKAGE MANAGER AND PACKAGES DETECTION MANAGER=$(which nix-env pkg flatpak yum zypper dnf rpm dpkg-query brew port pacman xbps-query emerge cave apk kiss pmm /usr/sbin/slackpkg bulge birb yay paru pacstall cpm pmm eopkg getprop 2>/dev/null) manager=$(basename "$MANAGER") if [ $distrotype = netbsd ]; then manager="pkg_info-netbsd" fi case $manager in cpm) packages="$(cpm C)" ;; flatpak) packages="$(flatpak list --app | wc -l)" ;; brew) packages="$(printf '%s\n' "$(brew --cellar)/"* | wc -l)" ;; port) packages="$(port installed | wc -l)" ;; dpkg-query) packages="$(dpkg-query -f '${ "binary:Package" }\n' -W | wc -l)" ;; rpm) packages="$(rpm -qa --last | wc -l)" ;; yum) packages="$(yum list installed | wc -l)" ;; dnf) packages="$(dnf list installed | wc -l)" ;; zypper) packages="$(zypper se | wc -l)" ;; pacman) packages="$(pacman -Q | wc -l)" ;; yay) packages="$(yay -Q | wc -l)" ;; paru) packages="$(paru -Q | wc -l)" ;; pacstall) packages="$(pacstall -L | wc -l)" ;; kiss) packages="$(kiss list | wc -l)" ;; emerge) packages="$(qlist -I | wc -l)" ;; pkg) packages="$(pkg info | wc -l | tr -d ' ')" ;; cave) packages="$(cave show installed-slots | wc -l)" ;; xbps-query) packages="$(xbps-query -l | wc -l)" ;; nix-env) packages="$(nix-store -q --requisites /run/current-system/sw | wc -l)" ;; apk) packages="$(apk list --installed | wc -l)" ;; pmm) packages="$(/bedrock/libexec/pmm pacman pmm -Q 2>/dev/null | wc -l)" ;; eopkg) packages="$(eopkg li | wc -l)" ;; /usr/sbin/slackpkg) packages="$(ls /var/log/packages | wc -l)" ;; bulge) packages="$(bulge list | wc -l)" ;; birb) packages="$(birb --list-installed | wc -l)" ;; pkg_info) packages="$(pkg_info -A | wc -l)" manager="pkg" ;; pkg_info-netbsd) packages="$(pkg_info -a | wc -l)" manager="pkg" ;; *) if [ $distrotype = android ]; then packages="$(dpkg-query -f '${"binary:Package"}\n' -W | wc -l)" manager="dpkg" else packages="$(ls /usr/bin | wc -l)" manager="bin" fi ;; esac packages="''${packages#"''${packages%%[![:space:]]*}"}" manager=$(echo $manager | sed "s/-query//; s/\/usr\/.*\///") ## UPTIME DETECTION if [ $distrotype = android ]; then uptime="$(echo $(uptime -p) | cut -c 4-)" elif [ $distrotype = bsd ] || [ $distrotype = netbsd ]; then uptime="$(uptime | sed -e 's/.* up //; s/, [0-9]* user.*//')" else case $ostype in *"Linux"*) IFS=. read -r s _ /dev/null 2>&1; then mempercent="($(expr $(expr ''${mem_used} \* 100 / ''${mem_full}))%)" fi ## DEFINE COLORS bold='' black='' red='' green='' yellow='' blue='' magenta='' cyan='' white='' grey='' reset='' ## USER VARIABLES -- YOU CAN CHANGE THESE lc="$reset$bold''$${config.theme.colors.primary-ansi-16}" # labels nc="$reset$bold''$${config.theme.colors.primary-ansi-16}" # labels hn="$reset$bold''$${config.theme.colors.primary-ansi-16}" # labels ic="$reset$white" # info c0="$reset$grey" # first color c1="$reset$white" # second color c2="$reset$yellow" # third color ## OUTPUT echo """ ''${c0} ___ ''${nc}''${USER}''${grey}@''${reset}''${hn}''${host}''${reset} ''${c0} (''${c1}.. ''${c0}\ ''${lc}''${osi} ''${ic}''${os}''${reset} ''${c0} (''${c2}<> ''${c0}| ''${lc}''${ki} ''${ic}''${kernel}''${reset} ''${c0} /''${c1}/ \\ ''${c0}\\ ''${lc}''${ri} ''${ic}''${RAM}''${memstat} ''${mempercent} ''${c0} ( ''${c1}| | ''${c0}/| ''${lc}''${pi} ''${ic}''${packages} (''${manager})''${reset} ''${c2} _''${c0}/\\ ''${c1}__)''${c0}/''${c2}_''${c0}) ''${lc}''${ui} ''${ic}''${uptime}''${reset} ''${c2} \/''${c0}-____''${c2}\/''${reset} ''${lc}''${ci} ''${red}███''${green}███''${yellow}███''${blue}███''${magenta}███''${cyan}███''${reset} """ ''; in { home.packages = with pkgs; [ nerdfetch ]; }