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:
2024-11-15 12:10:21 -05:00
parent 6d9e054a7a
commit 2431e4361b
8 changed files with 156 additions and 135 deletions

View File

@@ -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 = ":";
}