Adapted hyprland configurations for new breaking changes, and some misc adjustments
adjusted hyprland config for new breaking changes capitalized 'Description' keys in userservices altered shell aliases and added missing autosuggest option in zsh/options.nix rebuild now has dry run flags added hyprpaper to packages.nix updated check_updates service to check the upstream nixpkgs channel instead of my local flake pkgs
This commit is contained in:
@@ -7,65 +7,85 @@ pkgs.stdenv.mkDerivation {
|
||||
buildPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cat > $out/bin/checkupdates.py <<- EOF
|
||||
import os, re, json, requests, subprocess
|
||||
flakePath = os.getenv('FLAKEPATH')
|
||||
def nix_eval(expr):
|
||||
import json
|
||||
import subprocess
|
||||
import requests
|
||||
def get_packages_by_maintainer(target_maintainer):
|
||||
try:
|
||||
nix_env_command = [
|
||||
"nix-env", "--meta", "--json", "-qaP"
|
||||
]
|
||||
jq_query = (
|
||||
'to_entries[] | select(.value.meta.maintainers? // [] | '
|
||||
f'any(.github == "{target_maintainer}")) | .value'
|
||||
)
|
||||
result = subprocess.run(
|
||||
["nix", "eval", "--json", expr],
|
||||
nix_env_command,
|
||||
capture_output=True,
|
||||
text=True,
|
||||
check=True)
|
||||
return json.loads(result.stdout)
|
||||
check=True
|
||||
)
|
||||
filtered_packages = subprocess.run(
|
||||
["jq", "-r", "-c", jq_query],
|
||||
input=result.stdout,
|
||||
capture_output=True,
|
||||
text=True,
|
||||
check=True
|
||||
)
|
||||
return [json.loads(pkg) for pkg in filtered_packages.stdout.strip().split('\n') if pkg]
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(f"Error running 'nix eval' for {expr}: {e}")
|
||||
return {}
|
||||
packages = nix_eval(f"{flakePath}#pkgs.myPkgs")
|
||||
target_maintainer = 'pagedMov'
|
||||
maintained_packages = []
|
||||
for pname in packages.keys():
|
||||
maintainers_info = nix_eval(f"{flakePath}#pkgs.myPkgs.{pname}.meta.maintainers")
|
||||
for maintainer in maintainers_info:
|
||||
if maintainer.get('github') == target_maintainer:
|
||||
# Collect relevant package details
|
||||
version = nix_eval(f"{flakePath}#pkgs.myPkgs.{pname}.version") or "unknown"
|
||||
repo_url = nix_eval(f"{flakePath}#pkgs.myPkgs.{pname}.meta.homepage") or ""
|
||||
maintained_packages.append({
|
||||
'pname': pname,
|
||||
'version': version,
|
||||
'repo': repo_url,
|
||||
'maintainers': maintainers_info
|
||||
})
|
||||
break
|
||||
print(json.dumps(maintained_packages, indent=2))
|
||||
github_api_template = "https://api.github.com/repos/{owner}/{repo}/releases/latest"
|
||||
updates = []
|
||||
for package in maintained_packages:
|
||||
repo_url = package["repo"]
|
||||
current_version = package["version"]
|
||||
if "github.com" in repo_url:
|
||||
owner_repo = repo_url.split("github.com/")[1].rstrip('/')
|
||||
owner, repo = owner_repo.split('/')
|
||||
api_url = github_api_template.format(owner=owner, repo=repo)
|
||||
response = requests.get(api_url)
|
||||
if response.status_code == 200:
|
||||
latest_release = response.json()
|
||||
latest_version = latest_release.get("tag_name", "").lstrip('v')
|
||||
if latest_version and latest_version != current_version:
|
||||
updates.append({"pkg": package["pname"], "version": latest_version})
|
||||
print(f"Error running nix-env or jq: {e}")
|
||||
return []
|
||||
|
||||
def check_github_releases(maintained_packages):
|
||||
github_api_template = "https://api.github.com/repos/{owner}/{repo}/releases/latest"
|
||||
updates = []
|
||||
|
||||
for package in maintained_packages:
|
||||
pname = package.get("pname", "unknown")
|
||||
repo_url = package.get("meta", {}).get("homepage", "")
|
||||
current_version = package.get("version", "unknown")
|
||||
|
||||
if "github.com" in repo_url:
|
||||
owner_repo = repo_url.split("github.com/")[1].rstrip('/')
|
||||
owner, repo = owner_repo.split('/')
|
||||
api_url = github_api_template.format(owner=owner, repo=repo)
|
||||
|
||||
response = requests.get(api_url)
|
||||
if response.status_code == 200:
|
||||
latest_release = response.json()
|
||||
latest_version = latest_release.get("tag_name", "").lstrip('v')
|
||||
if latest_version and latest_version != current_version:
|
||||
updates.append({"pkg": pname, "version": latest_version})
|
||||
else:
|
||||
print(f"{pname} is up to date.\n")
|
||||
else:
|
||||
print(f"{package['pname']} is up to date.\n")
|
||||
print(f"Failed to check version for {pname} (HTTP {response.status_code}).\n")
|
||||
else:
|
||||
print(f"Failed to check version for {package['pname']} (HTTP {response.status_code}).\n")
|
||||
else:
|
||||
print(f"Skipping non-GitHub repository for {package['pname']}.\n")
|
||||
if updates:
|
||||
update_string = '\n'.join([f" {update['pkg']} -> {update['version']}" for update in updates])
|
||||
subprocess.run(["notify-send", "--icon=/home/pagedmov/.sysflake/assets/images/nixos-icon-generic.png",
|
||||
"Maintenance Update", f"Package updates found:\n{update_string}"])
|
||||
subprocess.run(["aplay", "-q", "-N", "/home/pagedmov/.sysflake/assets/sound/login.wav"])
|
||||
print(f"Skipping non-GitHub repository for {pname}.\n")
|
||||
return updates
|
||||
|
||||
def notify_updates(updates):
|
||||
if updates:
|
||||
update_string = '\n'.join([f" {update['pkg']} -> {update['version']}" for update in updates])
|
||||
subprocess.run([
|
||||
"notify-send",
|
||||
"--icon=/home/pagedmov/.sysflake/assets/images/nixos-icon-generic.png",
|
||||
"Maintenance Update",
|
||||
f"Package updates found:\n{update_string}"
|
||||
])
|
||||
subprocess.run(["aplay", "-q", "-N", "/home/pagedmov/.sysflake/assets/sound/login.wav"])
|
||||
|
||||
target_maintainer = "pagedMov"
|
||||
maintained_packages = get_packages_by_maintainer(target_maintainer)
|
||||
|
||||
if maintained_packages:
|
||||
updates = check_github_releases(maintained_packages)
|
||||
notify_updates(updates)
|
||||
else:
|
||||
print(f"No packages maintained by {target_maintainer} were found.")
|
||||
EOF
|
||||
'';
|
||||
buildInputs = with pkgs; [ python3Packages.requests ];
|
||||
buildInputs = with pkgs; [ python3Packages.requests jq ];
|
||||
installPhase = ":";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user