git.iko.soy/typeable/nixpkgs
on master help sign in
swaytools: init at 0.1.0
commite93bb42cd7cbf0b5a296dac6a22fb9fb10108b53 authorÁtila Saraiva <atilasaraiva@gmail.com> dateMon 14 Feb 2022, 23:18 (5 years ago) parenta31699d
3 files changed+82
pkgs/tools/wayland/swaytools/default.nix+22 pkgs/tools/wayland/swaytools/update.py+58 pkgs/top-level/all-packages.nix+2
pkgs/tools/wayland/swaytools/default.nixnew file+22
@@ -0,0 +1,22 @@
1+{ lib, python3Packages, slurp }:
2+
3+python3Packages.buildPythonApplication rec {
4+ pname = "swaytools";
5+ version = "0.1.0";
6+
7+ src = python3Packages.fetchPypi {
8+ inherit pname version;
9+ sha256 = "1eb89259cbe027a0fa6bfc06ecf94e89b15e6f7b4965104e5b661c916ce7408c";
10+ };
11+
12+ propagatedBuildInputs = [ slurp ];
13+
14+ passthru.updateScript = ./update.py;
15+
16+ meta = with lib; {
17+ homepage = "https://github.com/tmccombs/swaytools";
18+ description = "Collection of simple tools for sway (and i3)";
19+ license = licenses.gpl3Only;
20+ maintainers = with maintainers; [ atila ];
21+ };
22+}
pkgs/tools/wayland/swaytools/update.pynew file+58
@@ -0,0 +1,58 @@
1+#!/usr/bin/env nix-shell
2+#!nix-shell -i python -p python39Packages.requests python39Packages.pip python39Packages.packaging
3+
4+import requests
5+import json
6+import subprocess
7+try:
8+ from packaging.version import parse
9+except ImportError:
10+ from pip._vendor.packaging.version import parse
11+
12+
13+URL_PATTERN = 'https://pypi.python.org/pypi/{package}/json'
14+
15+def findLine(key,derivation):
16+ count = 0
17+ lines = []
18+ for line in derivation:
19+ if key in line:
20+ lines.append(count)
21+ count += 1
22+ return lines
23+
24+def get_version(package, url_pattern=URL_PATTERN):
25+ """Return version of package on pypi.python.org using json."""
26+ req = requests.get(url_pattern.format(package=package))
27+ version = parse('0')
28+ if req.status_code == requests.codes.ok:
29+ j = json.loads(req.text.encode(req.encoding))
30+ releases = j.get('releases', [])
31+ for release in releases:
32+ ver = parse(release)
33+ if not ver.is_prerelease:
34+ if ver > version:
35+ version = ver
36+ sha256 = j["releases"][release][-1]["digests"]["sha256"]
37+ return version, sha256
38+
39+
40+if __name__ == '__main__':
41+
42+ nixpkgs = subprocess.check_output(["git", "rev-parse", "--show-toplevel"]).decode("utf-8").strip('\n')
43+ swaytoolsFolder = "/pkgs/tools/wayland/swaytools/"
44+ with open(nixpkgs + swaytoolsFolder + "default.nix", 'r') as arq:
45+ derivation = arq.readlines()
46+
47+ version, sha256 = get_version('swaytools')
48+
49+ key = "version = "
50+ line = findLine(key,derivation)[0]
51+ derivation[line] = f' version = "{version}";\n'
52+
53+ key = "sha256 = "
54+ line = findLine(key,derivation)[0]
55+ derivation[line] = f' sha256 = "{sha256}";\n'
56+
57+ with open(nixpkgs + swaytoolsFolder + "default.nix", 'w') as arq:
58+ arq.writelines(derivation)
pkgs/top-level/all-packages.nix+2
@@ -2642,6 +2642,8 @@ with pkgs;
26422642
26432643 swayr = callPackage ../tools/wayland/swayr { };
26442644
2645+ swaytools = callPackage ../tools/wayland/swaytools { };
2646+
26452647 wayland-utils = callPackage ../tools/wayland/wayland-utils { };
26462648
26472649 wayland-proxy-virtwl = callPackage ../tools/wayland/wayland-proxy-virtwl { };