lol

Merge staging-next into staging

authored by

github-actions[bot] and committed by
GitHub
cecfbb28 166a5ba0

+522 -59
+10
maintainers/maintainer-list.nix
··· 10805 10805 fingerprint = "8CE3 2906 516F C4D8 D373 308A E189 648A 55F5 9A9F"; 10806 10806 }]; 10807 10807 }; 10808 + mib = { 10809 + name = "mib"; 10810 + email = "mib@kanp.ai"; 10811 + matrix = "@mib:kanp.ai"; 10812 + github = "mibmo"; 10813 + githubId = 87388017; 10814 + keys = [{ 10815 + fingerprint = "AB0D C647 B2F7 86EB 045C 7EFE CF6E 67DE D6DC 1E3F"; 10816 + }]; 10817 + }; 10808 10818 mic92 = { 10809 10819 email = "joerg@thalheim.io"; 10810 10820 matrix = "@mic92:nixos.dev";
+76 -16
nixos/modules/services/networking/syncthing.nix
··· 29 29 folder.enable 30 30 ) cfg.settings.folders); 31 31 32 - updateConfig = pkgs.writers.writeDash "merge-syncthing-config" '' 32 + jq = "${pkgs.jq}/bin/jq"; 33 + updateConfig = pkgs.writers.writeBash "merge-syncthing-config" ('' 33 34 set -efu 34 35 35 36 # be careful not to leak secrets in the filesystem or in process listings 36 - 37 37 umask 0077 38 38 39 39 # get the api key by parsing the config.xml ··· 51 51 --retry 1000 --retry-delay 1 --retry-all-errors \ 52 52 "$@" 53 53 } 54 + '' + 54 55 55 - # query the old config 56 - old_cfg=$(curl ${cfg.guiAddress}/rest/config) 57 - 58 - # generate the new config by merging with the NixOS config options 59 - new_cfg=$(printf '%s\n' "$old_cfg" | ${pkgs.jq}/bin/jq -c ${escapeShellArg ''. * ${builtins.toJSON cleanedConfig} * { 60 - "devices": ('${escapeShellArg (builtins.toJSON devices)}'${optionalString (cfg.settings.devices == {} || ! cfg.overrideDevices) " + .devices"}), 61 - "folders": ('${escapeShellArg (builtins.toJSON folders)}'${optionalString (cfg.settings.folders == {} || ! cfg.overrideFolders) " + .folders"}) 62 - }''}) 63 - 64 - # send the new config 65 - curl -X PUT -d "$new_cfg" ${cfg.guiAddress}/rest/config 66 - 56 + /* Syncthing's rest API for the folders and devices is almost identical. 57 + Hence we iterate them using lib.pipe and generate shell commands for both at 58 + the sime time. */ 59 + (lib.pipe { 60 + # The attributes below are the only ones that are different for devices / 61 + # folders. 62 + devs = { 63 + new_conf_IDs = map (v: v.id) devices; 64 + GET_IdAttrName = "deviceID"; 65 + override = cfg.overrideDevices; 66 + conf = devices; 67 + baseAddress = "${cfg.guiAddress}/rest/config/devices"; 68 + }; 69 + dirs = { 70 + new_conf_IDs = map (v: v.id) folders; 71 + GET_IdAttrName = "id"; 72 + override = cfg.overrideFolders; 73 + conf = folders; 74 + baseAddress = "${cfg.guiAddress}/rest/config/folders"; 75 + }; 76 + } [ 77 + # Now for each of these attributes, write the curl commands that are 78 + # identical to both folders and devices. 79 + (mapAttrs (conf_type: s: 80 + # We iterate the `conf` list now, and run a curl -X POST command for each, that 81 + # should update that device/folder only. 82 + lib.pipe s.conf [ 83 + # Quoting https://docs.syncthing.net/rest/config.html: 84 + # 85 + # > PUT takes an array and POST a single object. In both cases if a 86 + # given folder/device already exists, it’s replaced, otherwise a new 87 + # one is added. 88 + # 89 + # What's not documented, is that using PUT will remove objects that 90 + # don't exist in the array given. That's why we use here `POST`, and 91 + # only if s.override == true then we DELETE the relevant folders 92 + # afterwards. 93 + (map (new_cfg: '' 94 + curl -d ${lib.escapeShellArg (builtins.toJSON new_cfg)} -X POST ${s.baseAddress} 95 + '')) 96 + (lib.concatStringsSep "\n") 97 + ] 98 + /* If we need to override devices/folders, we iterate all currently configured 99 + IDs, via another `curl -X GET`, and we delete all IDs that are not part of 100 + the Nix configured list of IDs 101 + */ 102 + + lib.optionalString s.override '' 103 + old_conf_${conf_type}_ids="$(curl -X GET ${s.baseAddress} | ${jq} --raw-output '.[].${s.GET_IdAttrName}')" 104 + for id in ''${old_conf_${conf_type}_ids}; do 105 + if echo ${lib.concatStringsSep " " s.new_conf_IDs} | grep -q $id; then 106 + continue 107 + else 108 + curl -X DELETE ${s.baseAddress}/$id 109 + fi 110 + done 111 + '' 112 + )) 113 + builtins.attrValues 114 + (lib.concatStringsSep "\n") 115 + ]) + 116 + /* Now we update the other settings defined in cleanedConfig which are not 117 + "folders" or "devices". */ 118 + (lib.pipe cleanedConfig [ 119 + builtins.attrNames 120 + (lib.subtractLists ["folders" "devices"]) 121 + (map (subOption: '' 122 + curl -X PUT -d ${lib.escapeShellArg (builtins.toJSON cleanedConfig.${subOption})} \ 123 + ${cfg.guiAddress}/rest/config/${subOption} 124 + '')) 125 + (lib.concatStringsSep "\n") 126 + ]) + '' 67 127 # restart Syncthing if required 68 128 if curl ${cfg.guiAddress}/rest/config/restart-required | 69 - ${pkgs.jq}/bin/jq -e .requiresRestart > /dev/null; then 129 + ${jq} -e .requiresRestart > /dev/null; then 70 130 curl -X POST ${cfg.guiAddress}/rest/system/restart 71 131 fi 72 - ''; 132 + ''); 73 133 in { 74 134 ###### interface 75 135 options = {
+1 -1
pkgs/build-support/go/module.nix
··· 54 54 55 55 goModules = if (vendorHash == null) then "" else 56 56 (stdenv.mkDerivation { 57 - name = "${name}-goModules"; 57 + name = "${name}-go-modules"; 58 58 59 59 nativeBuildInputs = (args.nativeBuildInputs or [ ]) ++ [ go git cacert ]; 60 60
+25
pkgs/development/compilers/otus-lisp/default.nix
··· 1 + { lib, stdenv, fetchFromGitHub, xxd }: 2 + 3 + stdenv.mkDerivation rec { 4 + pname = "otus-lisp"; 5 + version = "2.4"; 6 + 7 + src = fetchFromGitHub { 8 + owner = "yuriy-chumak"; 9 + repo = "ol"; 10 + rev = version; 11 + sha256 = "sha256-+6qH1BhvMkuG2rUOfo9qMjMjhCib9KONQTBWS27c3Ts="; 12 + }; 13 + 14 + nativeBuildInputs = [ xxd ]; 15 + 16 + makeFlags = [ "PREFIX=$(out)" ]; 17 + 18 + meta = { 19 + description = "A purely functional dialect of Lisp"; 20 + homepage = "https://yuriy-chumak.github.io/ol/"; 21 + license = with lib.licenses; [ mit lgpl3Only ]; # dual licensed 22 + platforms = lib.platforms.unix; 23 + maintainers = with lib.maintainers; [ nagy ]; 24 + }; 25 + }
+2 -2
pkgs/development/libraries/ctranslate2/default.nix
··· 17 17 in 18 18 stdenv.mkDerivation rec { 19 19 pname = "ctranslate2"; 20 - version = "3.16.1"; 20 + version = "3.17.1"; 21 21 22 22 src = fetchFromGitHub { 23 23 owner = "OpenNMT"; 24 24 repo = "CTranslate2"; 25 25 rev = "v${version}"; 26 - hash = "sha256-6K4TQnm9va+oxwWuKfV+txF7rRBRzE6PoUEDA2v3lEM="; 26 + hash = "sha256-aSYE8+vhCsgZf1gBqJFRK8cn91AxrRutJc3LzHQQHVc="; 27 27 fetchSubmodules = true; 28 28 }; 29 29
+2 -2
pkgs/development/libraries/webkitgtk/default.nix
··· 71 71 72 72 stdenv.mkDerivation (finalAttrs: { 73 73 pname = "webkitgtk"; 74 - version = "2.40.3"; 74 + version = "2.40.4"; 75 75 name = "${finalAttrs.pname}-${finalAttrs.version}+abi=${if lib.versionAtLeast gtk3.version "4.0" then "6.0" else "4.${if lib.versions.major libsoup.version == "2" then "0" else "1"}"}"; 76 76 77 77 outputs = [ "out" "dev" "devdoc" ]; ··· 82 82 83 83 src = fetchurl { 84 84 url = "https://webkitgtk.org/releases/webkitgtk-${finalAttrs.version}.tar.xz"; 85 - hash = "sha256-zAqoP0DbxkwcauQuxrha9L4qnb9STPy5X4mjZ/tQmN0="; 85 + hash = "sha256-jRYzeSl6L39RtFUSf5mDbZ/hVyKJ93tjD/PWOiywbaw="; 86 86 }; 87 87 88 88 patches = lib.optionals stdenv.isLinux [
+2 -2
pkgs/development/python-modules/faster-whisper/default.nix
··· 15 15 16 16 buildPythonPackage rec { 17 17 pname = "faster-whisper"; 18 - version = "0.6.0"; 18 + version = "0.7.0"; 19 19 format = "setuptools"; 20 20 21 21 src = fetchFromGitHub { 22 22 owner = "guillaumekln"; 23 23 repo = "faster-whisper"; 24 24 rev = "v${version}"; 25 - hash = "sha256-tBajxrAhV7R9VnAzUr7ONAYH9h8Uh/UUeu2YZAAotBo="; 25 + hash = "sha256-p8BJ+Bdvn+AQSUS6b2GeYNh2l4KXfPx3o0kImu7xVgw="; 26 26 }; 27 27 28 28 postPatch = ''
+72
pkgs/development/python-modules/ninja/default.nix
··· 1 + { lib 2 + , buildPythonPackage 3 + , fetchFromGitHub 4 + , fetchurl 5 + , cmake 6 + , setuptools-scm 7 + , scikit-build 8 + , pytestCheckHook 9 + , pytest-virtualenv 10 + }: 11 + let 12 + # these must match NinjaUrls.cmake 13 + ninja_src_url = "https://github.com/Kitware/ninja/archive/v1.11.1.g95dee.kitware.jobserver-1.tar.gz"; 14 + ninja_src_sha256 = "7ba84551f5b315b4270dc7c51adef5dff83a2154a3665a6c9744245c122dd0db"; 15 + ninja_src = fetchurl { 16 + url = ninja_src_url; 17 + sha256 = ninja_src_sha256; 18 + }; 19 + in 20 + buildPythonPackage rec { 21 + pname = "ninja"; 22 + version = "1.11.1"; 23 + format = "pyproject"; 24 + 25 + src = fetchFromGitHub { 26 + owner = "scikit-build"; 27 + repo = "ninja-python-distributions"; 28 + rev = version; 29 + hash = "sha256-scCYsSEyN+u3qZhNhWYqHpJCl+JVJJbKz+T34gOXGJM="; 30 + }; 31 + patches = [ 32 + # make sure cmake doesn't try to download the ninja sources 33 + ./no-download.patch 34 + ]; 35 + 36 + inherit ninja_src; 37 + postUnpack = '' 38 + # assume that if the hash matches, the source should be fine 39 + if ! grep "${ninja_src_sha256}" $sourceRoot/NinjaUrls.cmake; then 40 + echo "ninja_src_sha256 doesn't match the hash in NinjaUrls.cmake!" 41 + exit 1 42 + fi 43 + mkdir -p "$sourceRoot/Ninja-src" 44 + pushd "$sourceRoot/Ninja-src" 45 + tar -xavf ${ninja_src} --strip-components 1 46 + popd 47 + ''; 48 + 49 + postPatch = '' 50 + sed -i '/cov/d' setup.cfg 51 + ''; 52 + 53 + dontUseCmakeConfigure = true; 54 + 55 + nativeBuildInputs = [ 56 + setuptools-scm 57 + scikit-build 58 + cmake 59 + ]; 60 + 61 + nativeCheckInputs = [ 62 + pytestCheckHook 63 + pytest-virtualenv 64 + ]; 65 + 66 + meta = with lib; { 67 + description = "A small build system with a focus on speed"; 68 + homepage = "https://github.com/scikit-build/ninja-python-distributions"; 69 + license = licenses.asl20; 70 + maintainers = with maintainers; [ _999eagle ]; 71 + }; 72 + }
+10
pkgs/development/python-modules/ninja/no-download.patch
··· 1 + --- a/CMakeLists.txt 2 + +++ b/CMakeLists.txt 3 + @@ -64,6 +64,7 @@ 4 + # Download selected source archive 5 + ExternalProject_add(download_ninja_source 6 + SOURCE_DIR ${Ninja_SOURCE_DIR} 7 + + DOWNLOAD_COMMAND "" 8 + URL ${${src_archive}_url} 9 + URL_HASH SHA256=${${src_archive}_sha256} 10 + DOWNLOAD_DIR ${ARCHIVE_DOWNLOAD_DIR}
+57
pkgs/development/python-modules/picosvg/default.nix
··· 1 + { lib 2 + , stdenv 3 + , buildPythonPackage 4 + , fetchFromGitHub 5 + , fetchpatch 6 + , setuptools-scm 7 + , absl-py 8 + , lxml 9 + , skia-pathops 10 + , pytestCheckHook 11 + }: 12 + buildPythonPackage rec { 13 + pname = "picosvg"; 14 + version = "0.22.0"; 15 + 16 + src = fetchFromGitHub { 17 + owner = "googlefonts"; 18 + repo = pname; 19 + rev = "v${version}"; 20 + hash = "sha256-J06ijF1c3ZKPqKiQha6yqfj8EjFZoZzA6i6UCCrexi8="; 21 + }; 22 + 23 + patches = [ 24 + # see https://github.com/googlefonts/picosvg/issues/299 25 + # this patch fixed a failing test case after the update to skia-pathops 0.8 26 + # as soon as skia-pathops in nixpkgs is updated to 0.8, this patch should be removed 27 + (fetchpatch { 28 + url = "https://github.com/googlefonts/picosvg/commit/4e971ed6cd9afb412b2845d29296a0c24f086562.patch"; 29 + hash = "sha256-OZEipNPCSuuqcy4XggBiuGv4HN604dI4N9wlznyAwF0="; 30 + revert = true; 31 + }) 32 + ]; 33 + 34 + nativeBuildInputs = [ 35 + setuptools-scm 36 + ]; 37 + 38 + propagatedBuildInputs = [ 39 + absl-py 40 + lxml 41 + skia-pathops 42 + ]; 43 + 44 + nativeCheckInputs = [ 45 + pytestCheckHook 46 + ]; 47 + 48 + # a few tests are failing on aarch64 49 + doCheck = !stdenv.isAarch64; 50 + 51 + meta = with lib; { 52 + description = "Tool to simplify SVGs"; 53 + homepage = "https://github.com/googlefonts/picosvg"; 54 + license = licenses.asl20; 55 + maintainers = with maintainers; [ _999eagle ]; 56 + }; 57 + }
+36
pkgs/development/python-modules/ucsmsdk/default.nix
··· 1 + { lib 2 + , buildPythonPackage 3 + , fetchFromGitHub 4 + , pyparsing 5 + , six 6 + }: 7 + 8 + buildPythonPackage rec { 9 + pname = "ucsmsdk"; 10 + version = "0.9.14"; 11 + format = "setuptools"; 12 + 13 + src = fetchFromGitHub { 14 + owner = "CiscoUcs"; 15 + repo = "ucsmsdk"; 16 + rev = "v${version}"; 17 + hash = "sha256-lSkURvKRgW+qV1A8OT4WYsMGlxxIqaFnxQ3Rnlixdw0="; 18 + }; 19 + 20 + propagatedBuildInputs = [ 21 + pyparsing 22 + six 23 + ]; 24 + 25 + # most tests are broken 26 + doCheck = false; 27 + 28 + pythonImportsCheck = [ "ucsmsdk" ]; 29 + 30 + meta = with lib; { 31 + description = "Python SDK for Cisco UCS"; 32 + homepage = "https://github.com/CiscoUcs/ucsmsdk"; 33 + license = licenses.asl20; 34 + maintainers = with maintainers; [ SuperSandro2000 ]; 35 + }; 36 + }
+41 -21
pkgs/development/tools/godot/4/default.nix
··· 36 36 assert lib.asserts.assertOneOf "withPrecision" withPrecision [ "single" "double" ]; 37 37 38 38 let 39 - options = { 40 - # Options from 'godot/SConstruct' 41 - platform = withPlatform; 42 - target = withTarget; 43 - precision = withPrecision; # Floating-point precision level 44 - 45 - # Options from 'godot/platform/linuxbsd/detect.py' 46 - pulseaudio = withPulseaudio; # Use PulseAudio 47 - dbus = withDbus; # Use D-Bus to handle screensaver and portal desktop settings 48 - speechd = withSpeechd; # Use Speech Dispatcher for Text-to-Speech support 49 - fontconfig = withFontconfig; # Use fontconfig for system fonts support 50 - udev = withUdev; # Use udev for gamepad connection callbacks 51 - touch = withTouch; # Enable touch events 52 - }; 39 + mkSconsFlagsFromAttrSet = lib.mapAttrsToList (k: v: 40 + if builtins.isString v 41 + then "${k}=${v}" 42 + else "${k}=${builtins.toJSON v}"); 53 43 in 54 44 stdenv.mkDerivation rec { 55 45 pname = "godot"; 56 46 version = "4.1-stable"; 47 + commitHash = "970459615f6b2b4151742ec6d7ef8559f87fd5c5"; 57 48 58 49 src = fetchFromGitHub { 59 50 owner = "godotengine"; 60 51 repo = "godot"; 61 - rev = version; 52 + rev = commitHash; 62 53 hash = "sha256-v9qKrPYQz4c+xkSu/2ru7ZE5EzKVyXhmrxyHZQkng2U="; 63 54 }; 64 55 ··· 96 87 97 88 enableParallelBuilding = true; 98 89 99 - # Options from 'godot/SConstruct' and 'godot/platform/linuxbsd/detect.py' 100 - sconsFlags = [ "production=true" ]; 90 + # Set the build name which is part of the version. In official downloads, this 91 + # is set to 'official'. When not specified explicitly, it is set to 92 + # 'custom_build'. Other platforms packaging Godot (Gentoo, Arch, Flatpack 93 + # etc.) usually set this to their name as well. 94 + # 95 + # See also 'methods.py' in the Godot repo and 'build' in 96 + # https://docs.godotengine.org/en/stable/classes/class_engine.html#class-engine-method-get-version-info 97 + BUILD_NAME = "nixpkgs"; 98 + 99 + # Required for the commit hash to be included in the version number. 100 + # 101 + # `methods.py` reads the commit hash from `.git/HEAD` and manually follows 102 + # refs. Since we just write the hash directly, there is no need to emulate any 103 + # other parts of the .git directory. 104 + # 105 + # See also 'hash' in 106 + # https://docs.godotengine.org/en/stable/classes/class_engine.html#class-engine-method-get-version-info 101 107 preConfigure = '' 102 - sconsFlags+=" ${ 103 - lib.concatStringsSep " " 104 - (lib.mapAttrsToList (k: v: "${k}=${builtins.toJSON v}") options) 105 - }" 108 + mkdir -p .git 109 + echo ${commitHash} > .git/HEAD 106 110 ''; 111 + 112 + sconsFlags = mkSconsFlagsFromAttrSet { 113 + # Options from 'SConstruct' 114 + production = true; # Set defaults to build Godot for use in production 115 + platform = withPlatform; 116 + target = withTarget; 117 + precision = withPrecision; # Floating-point precision level 118 + 119 + # Options from 'platform/linuxbsd/detect.py' 120 + pulseaudio = withPulseaudio; # Use PulseAudio 121 + dbus = withDbus; # Use D-Bus to handle screensaver and portal desktop settings 122 + speechd = withSpeechd; # Use Speech Dispatcher for Text-to-Speech support 123 + fontconfig = withFontconfig; # Use fontconfig for system fonts support 124 + udev = withUdev; # Use udev for gamepad connection callbacks 125 + touch = withTouch; # Enable touch events 126 + }; 107 127 108 128 outputs = [ "out" "man" ]; 109 129
+2 -2
pkgs/os-specific/linux/kernel/linux-5.15.nix
··· 3 3 with lib; 4 4 5 5 buildLinux (args // rec { 6 - version = "5.15.120"; 6 + version = "5.15.121"; 7 7 8 8 # modDirVersion needs to be x.y.z, will automatically add .0 if needed 9 9 modDirVersion = versions.pad 3 version; ··· 13 13 14 14 src = fetchurl { 15 15 url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz"; 16 - sha256 = "1xl3nrykbxdwv5a9rk0xnb7l61dsyjvkm1ryrdii09vbmsg0i6b4"; 16 + sha256 = "07f3a68r1yb4p19z1azjwp2vhjb3ayh31hz9hfb4a98dn2ywxq07"; 17 17 }; 18 18 } // (args.argsOverride or { }))
+2 -2
pkgs/os-specific/linux/kernel/linux-6.1.nix
··· 3 3 with lib; 4 4 5 5 buildLinux (args // rec { 6 - version = "6.1.39"; 6 + version = "6.1.40"; 7 7 8 8 # modDirVersion needs to be x.y.z, will automatically add .0 if needed 9 9 modDirVersion = versions.pad 3 version; ··· 13 13 14 14 src = fetchurl { 15 15 url = "mirror://kernel/linux/kernel/v6.x/linux-${version}.tar.xz"; 16 - sha256 = "1f45j3ch1ljbacjlg8q45iva9lvwys938rdg0s516mznzlifxpac"; 16 + sha256 = "1w474pia4pxz4qbfai27ary1y1h2fnn7kvx7yz7wszd0jwhzrsj3"; 17 17 }; 18 18 } // (args.argsOverride or { }))
+2 -2
pkgs/os-specific/linux/kernel/linux-6.4.nix
··· 3 3 with lib; 4 4 5 5 buildLinux (args // rec { 6 - version = "6.4.4"; 6 + version = "6.4.5"; 7 7 8 8 # modDirVersion needs to be x.y.z, will automatically add .0 if needed 9 9 modDirVersion = versions.pad 3 version; ··· 13 13 14 14 src = fetchurl { 15 15 url = "mirror://kernel/linux/kernel/v6.x/linux-${version}.tar.xz"; 16 - sha256 = "0apzfnn04w6jda9yw5cbgj8784frvqrryb1iw5ad390lwwmlmg4w"; 16 + sha256 = "1dz9inr1bf7jx5s9n0dfa0srfzrwnz1zmdq42bbxyl9w8q3jqkip"; 17 17 }; 18 18 } // (args.argsOverride or { }))
+2 -2
pkgs/servers/home-automation/evcc/default.nix
··· 16 16 17 17 buildGoModule rec { 18 18 pname = "evcc"; 19 - version = "0.118.9"; 19 + version = "0.118.10"; 20 20 21 21 src = fetchFromGitHub { 22 22 owner = "evcc-io"; 23 23 repo = pname; 24 24 rev = version; 25 - hash = "sha256-y92kxFCKsLZmLVvgTjYsIVo8qVA/QRMGSChMtY8Go2g="; 25 + hash = "sha256-A79l8tA73EeRp+BlJnIz/qtiBk33D4KvbJegqrgNvbg="; 26 26 }; 27 27 28 28 vendorHash = "sha256-0NTOit1nhX/zxQjHwU7ZOY1GsoIu959/KICCEWyfIQ4=";
+3 -3
pkgs/servers/tailscale/default.nix
··· 1 1 { lib, stdenv, buildGoModule, fetchFromGitHub, makeWrapper, iptables, iproute2, procps, shadow, getent }: 2 2 3 3 let 4 - version = "1.44.0"; 4 + version = "1.46.0"; 5 5 in 6 6 buildGoModule { 7 7 pname = "tailscale"; ··· 11 11 owner = "tailscale"; 12 12 repo = "tailscale"; 13 13 rev = "v${version}"; 14 - hash = "sha256-/SiQFkhVseLkjK7ePNzNyBs0r3XE3kHJ6CDTFjdCXec="; 14 + hash = "sha256-JA4mTxVlDpD1U360mvLYQv2inZg6VnljAYtVc21Qmfc="; 15 15 }; 16 - vendorHash = "sha256-fgCrmtJs1svFz0Xn7iwLNrbBNlcO6V0yqGPMY0+V1VQ="; 16 + vendorHash = "sha256-yORh/jxBApu+XeAWczw7BLijNdF9DdoK8CfICBuCitU="; 17 17 18 18 nativeBuildInputs = lib.optionals stdenv.isLinux [ makeWrapper ]; 19 19
+4 -4
pkgs/tools/admin/balena-cli/default.nix
··· 15 15 }.${system} or throwSystem; 16 16 17 17 sha256 = { 18 - x86_64-linux = "sha256-yNyQ3cmy0Rc2+8EygMJwB/kmmmOiyq5V+7dyFFHyaVA="; 19 - x86_64-darwin = "sha256-sODceZObYQned+opKQ4BgRZxlJQ12c2D01+FG8JF2N0="; 20 - aarch64-darwin = "sha256-sODceZObYQned+opKQ4BgRZxlJQ12c2D01+FG8JF2N0="; 18 + x86_64-linux = "sha256-/Die6tpidmt3dTzW7mEnQJG5vlxue4sT44PcAa7lrgk="; 19 + x86_64-darwin = "sha256-VB5075VfQRtlLoG3lfkVz8ASoODiwleTYC2JJR51LtI="; 20 + aarch64-darwin = "sha256-VB5075VfQRtlLoG3lfkVz8ASoODiwleTYC2JJR51LtI="; 21 21 }.${system} or throwSystem; 22 22 23 - version = "16.6.2"; 23 + version = "16.7.5"; 24 24 src = fetchzip { 25 25 url = "https://github.com/balena-io/balena-cli/releases/download/v${version}/balena-cli-v${version}-${plat}-standalone.zip"; 26 26 inherit sha256;
+49
pkgs/tools/games/slipstream/default.nix
··· 1 + { lib, fetchFromGitHub, stdenv, makeWrapper, buildMaven, maven, jdk }: 2 + let 3 + mavenWithJdk = maven.override { inherit jdk; }; 4 + in 5 + mavenWithJdk.buildMavenPackage rec { 6 + pname = "slipstream"; 7 + version = "1.9.1"; 8 + 9 + src = fetchFromGitHub { 10 + owner = "Vhati"; 11 + repo = "Slipstream-Mod-Manager"; 12 + rev = "v${version}"; 13 + hash = "sha256-F+o94Oh9qxVdfgwdmyOv+WZl1BjQuzhQWaVrAgScgIU="; 14 + }; 15 + 16 + mvnHash = "sha256-oDtUitsfZPiDtyfzzw1yMNBCKyP6rHczKZT/SPPJYGE="; 17 + 18 + nativeBuildInputs = [ mavenWithJdk makeWrapper ]; 19 + 20 + installPhase = '' 21 + runHook preInstall 22 + 23 + mkdir -p $out/share/java 24 + install -Dm644 target/ftl-mod-manager-${version}.jar $out/share/java 25 + install -Dm644 target/modman.jar $out/share/java 26 + 27 + # slipstream is very finniky about having specific 28 + # folders at startup, so wrapper creates them for it. 29 + # this is because slipstream expects to be started from 30 + # archive it comes from, but we can't do that since 31 + # we need the mods directory to be writable. 32 + # see: https://github.com/Vhati/Slipstream-Mod-Manager/blob/85cad4ffbef8583d908b189204d7d22a26be43f8/src/main/java/net/vhati/modmanager/cli/SlipstreamCLI.java#L105 33 + makeWrapper ${jdk}/bin/java $out/bin/${pname} \ 34 + --run '_dir="''${XDG_DATA_HOME:-$HOME/.local/share}/slipstream"' \ 35 + --run 'mkdir -p $_dir/{mods,backup}' \ 36 + --run 'cd $_dir' \ 37 + --append-flags "-jar $out/share/java/modman.jar" 38 + 39 + runHook postInstall 40 + ''; 41 + 42 + meta = with lib; { 43 + description = "A mod manager for FTL: Faster Than Light"; 44 + homepage = "https://github.com/Vhati/Slipstream-Mod-Manager"; 45 + license = licenses.gpl2; 46 + maintainers = with maintainers; [ mib ]; 47 + platforms = platforms.all; 48 + }; 49 + }
+72
pkgs/tools/misc/nanoemoji/default.nix
··· 1 + { lib 2 + , python3 3 + , fetchFromGitHub 4 + , resvg 5 + , pngquant 6 + }: 7 + python3.pkgs.buildPythonApplication rec { 8 + pname = "nanoemoji"; 9 + version = "0.15.1"; 10 + 11 + src = fetchFromGitHub { 12 + owner = "googlefonts"; 13 + repo = pname; 14 + rev = "v${version}"; 15 + hash = "sha256-P/lT0PnjTdYzyttICzszu4OL5kj+X8GHZ8doL3tpXQM="; 16 + }; 17 + patches = [ 18 + # this is necessary because the tests clear PATH/PYTHONPATH otherwise 19 + ./test-pythonpath.patch 20 + # minor difference in the test output, most likely due to different dependency versions 21 + ./fix-test.patch 22 + ]; 23 + 24 + nativeBuildInputs = with python3.pkgs; [ 25 + setuptools-scm 26 + pythonRelaxDepsHook 27 + 28 + pngquant 29 + resvg 30 + ]; 31 + 32 + # these two packages are just prebuilt wheels containing the respective binaries 33 + pythonRemoveDeps = [ "pngquant-cli" "resvg-cli" ]; 34 + 35 + propagatedBuildInputs = with python3.pkgs; [ 36 + absl-py 37 + fonttools 38 + lxml 39 + ninja-python 40 + picosvg 41 + pillow 42 + regex 43 + toml 44 + tomlkit 45 + ufo2ft 46 + ufoLib2 47 + zopfli 48 + ]; 49 + 50 + nativeCheckInputs = with python3.pkgs; [ 51 + pytestCheckHook 52 + 53 + ninja-python 54 + picosvg 55 + ]; 56 + 57 + makeWrapperArgs = [ 58 + "--prefix PATH : ${lib.makeBinPath [ pngquant resvg ]}" 59 + ]; 60 + 61 + preCheck = '' 62 + # make sure the built binaries (nanoemoji/maximum_color) can be found by the test 63 + export PATH="$out/bin:$PATH" 64 + ''; 65 + 66 + meta = with lib; { 67 + description = "A wee tool to build color fonts"; 68 + homepage = "https://github.com/googlefonts/nanoemoji"; 69 + license = licenses.asl20; 70 + maintainers = with maintainers; [ _999eagle ]; 71 + }; 72 + }
+24
pkgs/tools/misc/nanoemoji/fix-test.patch
··· 1 + --- a/tests/proportional_cbdt.ttx 2 + +++ b/tests/proportional_cbdt.ttx 3 + @@ -13,7 +13,7 @@ 4 + <mtx name=".notdef" width="0" lsb="5"/> 5 + <mtx name=".space" width="0" lsb="0"/> 6 + <mtx name="e000" width="110" lsb="0"/> 7 + - <mtx name="e001" width="73" lsb="0"/> 8 + + <mtx name="e001" width="74" lsb="0"/> 9 + </hmtx> 10 + 11 + <cmap> 12 + @@ -79,10 +79,10 @@ 13 + <cbdt_bitmap_format_17 name="e001"> 14 + <SmallGlyphMetrics> 15 + <height value="128"/> 16 + - <width value="85"/> 17 + + <width value="86"/> 18 + <BearingX value="0"/> 19 + <BearingY value="104"/> 20 + - <Advance value="85"/> 21 + + <Advance value="86"/> 22 + </SmallGlyphMetrics> 23 + <extfileimagedata value="e001.png"/> 24 + </cbdt_bitmap_format_17>
+14
pkgs/tools/misc/nanoemoji/test-pythonpath.patch
··· 1 + --- a/tests/test_helper.py 2 + +++ b/tests/test_helper.py 3 + @@ -269,9 +269,9 @@ 4 + print("subprocess:", " ".join(cmd)) # very useful on failure 5 + env = { 6 + # We may need to find nanoemoji and other pip-installed cli tools 7 + - "PATH": str(Path(shutil.which("nanoemoji")).parent), 8 + + "PATH": str(Path(shutil.which("nanoemoji")).parent) + ":" + os.environ["PATH"], 9 + # We may need to find test modules 10 + - "PYTHONPATH": os.pathsep.join((str(Path(__file__).parent),)), 11 + + "PYTHONPATH": os.pathsep.join((str(Path(__file__).parent),)) + ":" + os.environ["PYTHONPATH"], 12 + } 13 + # Needed for windows CI to function; ref https://github.com/appveyor/ci/issues/1995 14 + if "SYSTEMROOT" in os.environ:
+8
pkgs/top-level/all-packages.nix
··· 1856 1856 1857 1857 sitespeed-io = callPackage ../tools/networking/sitespeed-io { }; 1858 1858 1859 + slipstream = callPackage ../tools/games/slipstream { 1860 + jdk = jdk8; 1861 + }; 1862 + 1859 1863 sorted-grep = callPackage ../tools/text/sorted-grep { }; 1860 1864 1861 1865 smb3-foundry = callPackage ../applications/misc/smb3-foundry { }; ··· 3121 3125 oggvideotools = callPackage ../tools/misc/oggvideotools { }; 3122 3126 3123 3127 owl-lisp = callPackage ../development/compilers/owl-lisp { }; 3128 + 3129 + otus-lisp = callPackage ../development/compilers/otus-lisp { }; 3124 3130 3125 3131 ascii = callPackage ../tools/text/ascii { }; 3126 3132 ··· 9857 9863 nagstamon = callPackage ../tools/misc/nagstamon { 9858 9864 pythonPackages = python3Packages; 9859 9865 }; 9866 + 9867 + nanoemoji = python3Packages.callPackage ../tools/misc/nanoemoji { }; 9860 9868 9861 9869 nagelfar = callPackage ../development/tools/nagelfar { }; 9862 9870
+6
pkgs/top-level/python-packages.nix
··· 7015 7015 7016 7016 nine = callPackage ../development/python-modules/nine { }; 7017 7017 7018 + ninja-python = callPackage ../development/python-modules/ninja { }; 7019 + 7018 7020 nipy = callPackage ../development/python-modules/nipy { }; 7019 7021 7020 7022 nipype = callPackage ../development/python-modules/nipype { ··· 7874 7876 picobox = callPackage ../development/python-modules/picobox { }; 7875 7877 7876 7878 picos = callPackage ../development/python-modules/picos { }; 7879 + 7880 + picosvg = callPackage ../development/python-modules/picosvg { }; 7877 7881 7878 7882 piccolo-theme = callPackage ../development/python-modules/piccolo-theme { }; 7879 7883 ··· 12997 13001 uasiren = callPackage ../development/python-modules/uasiren { }; 12998 13002 12999 13003 uc-micro-py = callPackage ../development/python-modules/uc-micro-py { }; 13004 + 13005 + ucsmsdk = callPackage ../development/python-modules/ucsmsdk { }; 13000 13006 13001 13007 udatetime = callPackage ../development/python-modules/udatetime { }; 13002 13008