This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

tools.update-pkgs: init, run passthru.updateScript like nixpkgs' update.py

+117 -5
+2 -4
pkgs/tincr/update.sh
··· 8 8 branch=lassulus/fixes 9 9 attr=tincr 10 10 11 - pkg="$(dirname "$(realpath "$0")")/package.nix" 12 - 13 - cd "$(dirname "$(realpath "$0")")" 14 - while [ ! -e flake.nix ] && [ "$PWD" != / ]; do cd ..; done 11 + # Run by update-pkgs from the flake root ($0 is a read-only store copy). 12 + pkg=pkgs/tincr/package.nix 15 13 system=$(nix eval --raw --impure --expr 'builtins.currentSystem') 16 14 17 15 new_rev=$(curl -fsSL "https://api.github.com/repos/$owner/$repo/commits/$branch" | jq -r .sha)
+2 -1
tools/boosteroid/update.sh
··· 2 2 set -euo pipefail 3 3 4 4 url="https://boosteroid.com/linux/installer/boosteroid_portable.tar" 5 - pkg="$(dirname "$(realpath "$0")")/package.nix" 5 + # Run by update-pkgs from the flake root ($0 is a read-only store copy). 6 + pkg=tools/boosteroid/package.nix 6 7 7 8 old_hash=$(grep -oP 'hash = "\K[^"]+' "$pkg") 8 9
+108
tools/update-pkgs/flake-module.nix
··· 1 + { ... }: 2 + { 3 + perSystem = 4 + { pkgs, ... }: 5 + { 6 + # update-pkgs [attr...] (no attrs: every package with an updateScript) 7 + # 8 + # Runs passthru.updateScript the way nixpkgs' maintainers/scripts/update.py 9 + # does (UPDATE_NIX_ATTR_PATH/PNAME/OLD_VERSION/NAME, cwd = flake root), 10 + # for this flake's packages. Packages missing from the host's package set 11 + # (linux-only ones on darwin) are taken from x86_64-linux; nix-update in 12 + # their command is swapped for the host's, the rest of the command stays. 13 + packages.update-pkgs = 14 + (pkgs.writeShellApplication { 15 + name = "update-pkgs"; 16 + runtimeInputs = [ 17 + pkgs.git 18 + pkgs.jq 19 + pkgs.nix-update 20 + ]; 21 + text = '' 22 + root=$(git rev-parse --show-toplevel) 23 + cd "$root" 24 + host=$(nix eval --raw --impure --expr builtins.currentSystem) 25 + # Only update scripts written for this flake: nix-update with --flake, 26 + # or a script inside this flake. Packages wrapping nixpkgs or 27 + # flake-input packages otherwise inherit an updateScript meant for 28 + # that checkout; those follow flake.lock instead. 29 + src=$(nix flake metadata --json . | jq -r .path) 30 + 31 + # attr -> {cmd, pname, version, name}. Per package tryEval: one 32 + # package refusing to evaluate on this system must not hide the rest. 33 + scripts() { 34 + nix eval --json ".#packages.$1" --apply " 35 + ps: builtins.mapAttrs (n: p: 36 + let 37 + r = builtins.tryEval ( 38 + let 39 + u = p.passthru.updateScript or null; 40 + isOurs = s: s == \"--flake\" 41 + || builtins.substring 0 (builtins.stringLength \"$src/\") s == \"$src/\"; 42 + c = 43 + if builtins.isList u then u 44 + else if builtins.isAttrs u && u ? command then 45 + (if builtins.isList u.command then u.command else [ u.command ]) 46 + else [ u ]; 47 + v = { 48 + cmd = map toString c; 49 + pname = p.pname or n; 50 + version = p.version or \"\"; 51 + name = p.name or n; 52 + }; 53 + in 54 + if u == null || !(builtins.any isOurs v.cmd) then null else builtins.deepSeq v v 55 + ); 56 + in 57 + if r.success then r.value else null) ps" 58 + } 59 + host_scripts=$(scripts "$host") 60 + linux_scripts='{}' 61 + if [ "$host" != x86_64-linux ]; then 62 + linux_scripts=$(scripts x86_64-linux) 63 + fi 64 + # host entries win over linux ones 65 + all=$(jq -s '.[1] + .[0] | with_entries(select(.value != null))' \ 66 + <<<"$host_scripts $linux_scripts") 67 + 68 + if [ "''${1:-}" = --list ]; then 69 + jq -r 'to_entries[] | "\(.key)\t\(.value.cmd | join(" "))"' <<<"$all" 70 + exit 0 71 + fi 72 + if [ $# -gt 0 ]; then 73 + attrs=("$@") 74 + else 75 + mapfile -t attrs < <(jq -r 'keys[]' <<<"$all") 76 + fi 77 + 78 + failed=() 79 + for attr in "''${attrs[@]}"; do 80 + entry=$(jq -c --arg a "$attr" '.[$a] // empty' <<<"$all") 81 + if [ -z "$entry" ]; then 82 + echo "update-pkgs: $attr has no updateScript" >&2 83 + failed+=("$attr") 84 + continue 85 + fi 86 + mapfile -t cmd < <(jq -r '.cmd[]' <<<"$entry") 87 + case "''${cmd[0]}" in 88 + */bin/nix-update) cmd[0]=nix-update ;; 89 + esac 90 + printf '\n\033[1m== %s\033[0m\n' "$attr" >&2 91 + if ! UPDATE_NIX_ATTR_PATH=$attr \ 92 + UPDATE_NIX_PNAME=$(jq -r .pname <<<"$entry") \ 93 + UPDATE_NIX_OLD_VERSION=$(jq -r .version <<<"$entry") \ 94 + UPDATE_NIX_NAME=$(jq -r .name <<<"$entry") \ 95 + "''${cmd[@]}"; then 96 + failed+=("$attr") 97 + fi 98 + done 99 + 100 + if [ ''${#failed[@]} -gt 0 ]; then 101 + echo "update-pkgs: failed: ''${failed[*]}" >&2 102 + exit 1 103 + fi 104 + ''; 105 + }).overrideAttrs 106 + { passthru.usage = builtins.readFile ./usage.kdl; }; 107 + }; 108 + }
+5
tools/update-pkgs/usage.kdl
··· 1 + bin "update-pkgs" 2 + about "Run the passthru.updateScript of flake packages, like nixpkgs' update.py" 3 + 4 + flag "--list" help="Only list the packages with an updateScript and their command" 5 + arg "[attr]..." help="Package attributes to update (default: every package with an updateScript)" var=#true