Files
omnixy/packages/scripts.nix
theArctesian c205ce19a0 changed naming
2025-09-24 15:39:19 -07:00

393 lines
9.9 KiB
Nix
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{ pkgs, lib, ... }:
# OmniXY utility scripts as a Nix package
pkgs.stdenv.mkDerivation rec {
pname = "omnixy-scripts";
version = "1.0.0";
# No source needed for script-only package
dontUnpack = true;
buildInputs = with pkgs; [
bash
coreutils
gnugrep
gnused
gawk
jq
curl
wget
git
fzf
ripgrep
];
installPhase = ''
mkdir -p $out/bin
# Theme management
cat > $out/bin/omnixy-theme-set << 'EOF'
#!/usr/bin/env bash
set -e
THEME="$1"
AVAILABLE_THEMES="tokyo-night catppuccin gruvbox nord everforest rose-pine kanagawa"
if [ -z "$THEME" ]; then
echo "Usage: omnixy-theme-set <theme>"
echo "Available themes: $AVAILABLE_THEMES"
exit 1
fi
if ! echo "$AVAILABLE_THEMES" | grep -qw "$THEME"; then
echo "Error: Unknown theme '$THEME'"
echo "Available themes: $AVAILABLE_THEMES"
exit 1
fi
echo "Switching to theme: $THEME"
# Update configuration
sudo sed -i "s/currentTheme = \".*\"/currentTheme = \"$THEME\"/" /etc/nixos/configuration.nix
# Rebuild system
sudo nixos-rebuild switch --flake /etc/nixos#omnixy
echo "Theme switched to $THEME successfully!"
EOF
chmod +x $out/bin/omnixy-theme-set
cat > $out/bin/omnixy-theme-list << 'EOF'
#!/usr/bin/env bash
echo "Available OmniXY themes:"
echo "========================"
echo " tokyo-night (default)"
echo " catppuccin"
echo " gruvbox"
echo " nord"
echo " everforest"
echo " rose-pine"
echo " kanagawa"
echo ""
echo "Current theme: $(grep currentTheme /etc/nixos/configuration.nix | cut -d'"' -f2)"
echo ""
echo "To change theme, run: omnixy-theme-set <theme-name>"
EOF
chmod +x $out/bin/omnixy-theme-list
# System management
cat > $out/bin/omnixy-update << 'EOF'
#!/usr/bin/env bash
set -e
echo "🔄 Updating OmniXY system..."
echo ""
# Update flake inputs
echo "📦 Updating flake inputs..."
cd /etc/nixos
sudo nix flake update
# Show what changed
echo ""
echo "📊 Changes:"
git diff flake.lock | grep -E "^\+" | head -20
# Rebuild system
echo ""
echo "🏗 Rebuilding system..."
sudo nixos-rebuild switch --flake .#omnixy
echo ""
echo " System updated successfully!"
EOF
chmod +x $out/bin/omnixy-update
cat > $out/bin/omnixy-clean << 'EOF'
#!/usr/bin/env bash
set -e
echo "🧹 Cleaning OmniXY system..."
echo ""
# Show current store size
echo "Current store size:"
du -sh /nix/store 2>/dev/null || echo "Unable to calculate"
echo ""
# Run garbage collection
echo "Running garbage collection..."
sudo nix-collect-garbage -d
# Optimize store
echo "Optimizing Nix store..."
sudo nix-store --optimise
# Show new size
echo ""
echo "New store size:"
du -sh /nix/store 2>/dev/null || echo "Unable to calculate"
echo ""
echo " Cleanup complete!"
EOF
chmod +x $out/bin/omnixy-clean
# Package management
cat > $out/bin/omnixy-search << 'EOF'
#!/usr/bin/env bash
QUERY="$1"
if [ -z "$QUERY" ]; then
echo "Usage: omnixy-search <package-name>"
exit 1
fi
echo "Searching for '$QUERY'..."
nix search nixpkgs "$QUERY" 2>/dev/null | head -50
EOF
chmod +x $out/bin/omnixy-search
cat > $out/bin/omnixy-install << 'EOF'
#!/usr/bin/env bash
set -e
PACKAGES="$*"
if [ -z "$PACKAGES" ]; then
echo "Usage: omnixy-install <package-name> [package-name...]"
exit 1
fi
echo "📦 Installing packages: $PACKAGES"
echo ""
# Add packages to configuration
CONFIG="/etc/nixos/configuration.nix"
for PKG in $PACKAGES; do
echo "Adding $PKG to configuration..."
# This would need more sophisticated editing
echo "Package $PKG needs to be manually added to $CONFIG"
done
echo ""
echo "Please edit $CONFIG and add the packages to environment.systemPackages"
echo "Then run: omnixy-rebuild"
EOF
chmod +x $out/bin/omnixy-install
# Development helpers
cat > $out/bin/omnixy-dev-shell << 'EOF'
#!/usr/bin/env bash
LANG="$1"
case "$LANG" in
rust)
echo "Starting Rust development shell..."
nix-shell -p rustc cargo rust-analyzer rustfmt clippy
;;
go)
echo "Starting Go development shell..."
nix-shell -p go gopls gotools golangci-lint
;;
python)
echo "Starting Python development shell..."
nix-shell -p python3 python3Packages.pip python3Packages.virtualenv python3Packages.ipython
;;
node|js)
echo "Starting Node.js development shell..."
nix-shell -p nodejs_20 nodePackages.pnpm nodePackages.typescript
;;
c|cpp)
echo "Starting C/C++ development shell..."
nix-shell -p gcc cmake gnumake gdb clang-tools
;;
*)
echo "Usage: omnixy-dev-shell <language>"
echo "Supported languages: rust, go, python, node/js, c/cpp"
exit 1
;;
esac
EOF
chmod +x $out/bin/omnixy-dev-shell
# Screenshot utility
cat > $out/bin/omnixy-screenshot << 'EOF'
#!/usr/bin/env bash
MODE="''${1:-region}"
OUTPUT_DIR="$HOME/Pictures/Screenshots"
mkdir -p "$OUTPUT_DIR"
FILENAME="$OUTPUT_DIR/screenshot-$(date +%Y%m%d-%H%M%S).png"
case "$MODE" in
region|area)
grim -g "$(slurp)" "$FILENAME"
;;
full|screen)
grim "$FILENAME"
;;
window)
grim -g "$(hyprctl activewindow -j | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"')" "$FILENAME"
;;
*)
echo "Usage: omnixy-screenshot [region|full|window]"
exit 1
;;
esac
if [ -f "$FILENAME" ]; then
wl-copy < "$FILENAME"
notify-send "Screenshot saved" "$FILENAME" -i "$FILENAME"
echo "$FILENAME"
fi
EOF
chmod +x $out/bin/omnixy-screenshot
# System info
cat > $out/bin/omnixy-info << 'EOF'
#!/usr/bin/env bash
echo ""
echo " OMNIXY NIXOS "
echo ""
echo ""
echo "System Information:"
echo "==================="
echo "Version: $(nixos-version)"
echo "Kernel: $(uname -r)"
echo "Theme: $(grep currentTheme /etc/nixos/configuration.nix 2>/dev/null | cut -d'"' -f2 || echo "default")"
echo "User: $USER"
echo "Shell: $SHELL"
echo "Terminal: $TERM"
echo ""
echo "Hardware:"
echo "========="
echo "CPU: $(lscpu | grep 'Model name' | cut -d':' -f2 | xargs)"
echo "Memory: $(free -h | awk '/^Mem:/ {print $2}')"
echo "Disk: $(df -h / | awk 'NR==2 {print $2}')"
echo ""
echo "Quick Commands:"
echo "=============="
echo " omnixy-help - Show help"
echo " omnixy-update - Update system"
echo " omnixy-clean - Clean system"
echo " omnixy-theme - Change theme"
EOF
chmod +x $out/bin/omnixy-info
# Help command
cat > $out/bin/omnixy-help << 'EOF'
#!/usr/bin/env bash
cat << HELP
OmniXY NixOS - Command Reference
================================
System Management:
------------------
omnixy-update Update system and flake inputs
omnixy-clean Clean and optimize Nix store
omnixy-rebuild Rebuild system configuration
omnixy-info Show system information
Package Management:
-------------------
omnixy-search Search for packages
omnixy-install Install packages (guide)
Theme Management:
-----------------
omnixy-theme-list List available themes
omnixy-theme-set Set system theme
Development:
------------
omnixy-dev-shell Start language-specific shell
dev-postgres Start PostgreSQL container
dev-redis Start Redis container
dev-mysql Start MySQL container
dev-mongodb Start MongoDB container
Utilities:
----------
omnixy-screenshot Take screenshots
Hyprland Keybindings:
---------------------
Super + Return Open terminal
Super + B Open browser
Super + E Open file manager
Super + D Application launcher
Super + Q Close window
Super + F Fullscreen
Super + Space Toggle floating
Super + 1-9 Switch workspace
Super + Shift + 1-9 Move to workspace
Print Screenshot region
Shift + Print Screenshot full
For more information: https://github.com/TheArctesian/omnixy
HELP
EOF
chmod +x $out/bin/omnixy-help
# Main omnixy command
cat > $out/bin/omnixy << 'EOF'
#!/usr/bin/env bash
CMD="''${1:-help}"
shift || true
case "$CMD" in
update|upgrade)
omnixy-update "$@"
;;
clean|gc)
omnixy-clean "$@"
;;
theme)
if [ -n "$1" ]; then
omnixy-theme-set "$@"
else
omnixy-theme-list
fi
;;
search)
omnixy-search "$@"
;;
install)
omnixy-install "$@"
;;
info|status)
omnixy-info "$@"
;;
help|--help|-h)
omnixy-help "$@"
;;
*)
echo "Unknown command: $CMD"
echo "Run 'omnixy help' for available commands"
exit 1
;;
esac
EOF
chmod +x $out/bin/omnixy
# Create rebuild alias
cat > $out/bin/omnixy-rebuild << 'EOF'
#!/usr/bin/env bash
sudo nixos-rebuild switch --flake /etc/nixos#omnixy "$@"
EOF
chmod +x $out/bin/omnixy-rebuild
'';
meta = with lib; {
description = "OmniXY utility scripts for NixOS";
license = licenses.mit;
platforms = platforms.linux;
};
}