diff --git a/nixos/doc/manual/development/settings-options.section.md b/nixos/doc/manual/development/settings-options.section.md index 35973153b249..c46c9fac3606 100644 --- a/nixos/doc/manual/development/settings-options.section.md +++ b/nixos/doc/manual/development/settings-options.section.md @@ -358,6 +358,37 @@ have a predefined type and string generator already declared under : Outputs the xml with header. +`pkgs.formats.pythonVars` { } + +: A function taking an empty attribute set (for future extensibility) + and returning a set with python variable specific attributes `type`, `lib`, and + `generate` as specified [below](#pkgs-formats-result). + + The `lib` attribute contains functions to be used in settings, for + generating special Python values: + + `mkRaw pythonCode` + + : Outputs the given string as raw Python code + + `_imports` + + `_imports` is a special value you can set to specify additional modules to be + imported on top of the file. + + `Example usage:` + + ```nix + let + format = pkgs.formats.pythonVars { }; + in { + _imports = [ "re" ]; + + conditional = format.lib.mkRaw "1 if True else 2"; + function_result = format.lib.mkRaw "re.findall(r'\\bf[a-z]*', 'which foot or hand fell fastest')"; + } + ``` + `pkgs.formats.cdn` { } : A function taking an empty attribute set (for future extensibility) diff --git a/nixos/modules/services/desktop-managers/pantheon.nix b/nixos/modules/services/desktop-managers/pantheon.nix index 2384cda86c50..5b24304b4993 100644 --- a/nixos/modules/services/desktop-managers/pantheon.nix +++ b/nixos/modules/services/desktop-managers/pantheon.nix @@ -321,6 +321,7 @@ in elementary-code elementary-files elementary-mail + elementary-maps elementary-music elementary-photos elementary-screenshot diff --git a/pkgs/by-name/cl/clifm/package.nix b/pkgs/by-name/cl/clifm/package.nix index 744b1b5e487e..87440b66df19 100644 --- a/pkgs/by-name/cl/clifm/package.nix +++ b/pkgs/by-name/cl/clifm/package.nix @@ -13,13 +13,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "clifm"; - version = "1.26"; + version = "1.26.3"; src = fetchFromGitHub { owner = "leo-arch"; repo = "clifm"; tag = "v${finalAttrs.version}"; - hash = "sha256-eNgghfK2NSSrzn0X1XNcaE+jErlLG5rhg4+RLjERsFU="; + hash = "sha256-lYeYElTeQpOnptL/c/06OWpsmI/Jkd7rlKGw0mKc9/c="; }; buildInputs = [ diff --git a/pkgs/by-name/de/deco/package.nix b/pkgs/by-name/de/deco/package.nix index d23229c09197..c6fbf6b5a1c7 100644 --- a/pkgs/by-name/de/deco/package.nix +++ b/pkgs/by-name/de/deco/package.nix @@ -5,17 +5,18 @@ scsh, feh, xorg, + xdg-user-dirs, }: stdenv.mkDerivation { pname = "deco"; - version = "unstable-2019-04-03"; + version = "0-unstable-2025-07-07"; src = fetchFromGitHub { - owner = "ebzzry"; + owner = "vedatechnologiesinc"; repo = "deco"; - rev = "dd8ec7905bc85d085eb2ee3bddabea451054288c"; - sha256 = "sha256-/3GeNvWOCRPOYTUbodXDUxR5QVDEyx6x2Jt5PxsPdvk="; + rev = "2fd28241ed28c07b9d641061d4e1bf3cacfcc7a0"; + hash = "sha256-kjXEvgYO1p/dX9nXQ3HHcXmJdtxDM6xzKqDQu3yM4Tw="; }; installPhase = '' @@ -25,17 +26,18 @@ stdenv.mkDerivation { ''; postFixup = '' - substituteInPlace $out/bin/deco --replace "/usr/bin/env scsh" "${scsh}/bin/scsh" - substituteInPlace $out/bin/deco --replace "feh" "${feh}/bin/feh" - substituteInPlace $out/bin/deco --replace "xdpyinfo" "${xorg.xdpyinfo}/bin/xdpyinfo" + substituteInPlace $out/bin/deco --replace-fail "/usr/bin/env scsh" "${scsh}/bin/scsh" + substituteInPlace $out/bin/deco --replace-fail "feh" "${feh}/bin/feh" + substituteInPlace $out/bin/deco --replace-fail "xdpyinfo" "${xorg.xdpyinfo}/bin/xdpyinfo" + substituteInPlace $out/bin/deco --replace-fail "xdg-user-dir" "${xdg-user-dirs}/bin/xdg-user-dir" ''; - meta = with lib; { - homepage = "https://github.com/ebzzry/deco"; + meta = { + homepage = "https://github.com/vedatechnologiesinc/deco"; description = "Simple root image setter"; - license = licenses.mit; - maintainers = [ maintainers.ebzzry ]; - platforms = platforms.unix; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.ebzzry ]; + platforms = lib.platforms.unix; mainProgram = "deco"; }; diff --git a/pkgs/by-name/de/devenv/package.nix b/pkgs/by-name/de/devenv/package.nix index 89197cbe96a5..18bcab716b2e 100644 --- a/pkgs/by-name/de/devenv/package.nix +++ b/pkgs/by-name/de/devenv/package.nix @@ -15,7 +15,7 @@ }: let - version = "1.9"; + version = "1.9.1"; devenvNixVersion = "2.30.4"; devenv_nix = @@ -42,10 +42,10 @@ rustPlatform.buildRustPackage { owner = "cachix"; repo = "devenv"; tag = "v${version}"; - hash = "sha256-MG+c0mo4g9UHSuqibX3OVkiADWmMn/PWDfVhD4U29PM="; + hash = "sha256-v86pQGIWHJPkRryglJSXOp0aEoU6ZtURuURsXLqfqSE="; }; - cargoHash = "sha256-7uB9oC0jHWBFeUtIyVpTjeximU6eSxSCiBzo/whoKxQ="; + cargoHash = "sha256-41VmzZvoRd2pL5/o6apHztpS2XrL4HGPIJPBkUbPL1I="; buildAndTestSubdir = "devenv"; diff --git a/pkgs/by-name/ju/jujutsu/package.nix b/pkgs/by-name/ju/jujutsu/package.nix index 6fb2d51b1597..ac1bdb377641 100644 --- a/pkgs/by-name/ju/jujutsu/package.nix +++ b/pkgs/by-name/ju/jujutsu/package.nix @@ -14,16 +14,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "jujutsu"; - version = "0.33.0"; + version = "0.34.0"; src = fetchFromGitHub { owner = "jj-vcs"; repo = "jj"; tag = "v${finalAttrs.version}"; - hash = "sha256-EKYM18UavIbZeI5/F5OKUzyjQip0yb6WPt6BZ2YpYww="; + hash = "sha256-OW8kSDBBSZr0G3U27AAkZ3cH3TJmSARbg9Pc4qZ6tA0="; }; - cargoHash = "sha256-iIMmtuf4uDe2PX/X3UW8sDt3kPTij8Nlh/SU92abvUw="; + cargoHash = "sha256-/zC2z0evYs8VKta0uClTtl4l3tbDRcsVedGF2jtfQGA="; nativeBuildInputs = [ installShellFiles diff --git a/pkgs/by-name/mo/mozillavpn/package.nix b/pkgs/by-name/mo/mozillavpn/package.nix index 0a967c749795..a854164749f2 100644 --- a/pkgs/by-name/mo/mozillavpn/package.nix +++ b/pkgs/by-name/mo/mozillavpn/package.nix @@ -22,13 +22,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "mozillavpn"; - version = "2.31.0"; + version = "2.31.1"; src = fetchFromGitHub { owner = "mozilla-mobile"; repo = "mozilla-vpn-client"; tag = "v${finalAttrs.version}"; fetchSubmodules = true; - hash = "sha256-++j3BMTkg5TG09hmsUGDcKbkvTGrd9u0FaRebbOsI3s="; + hash = "sha256-+Aexwj/iNIhriiUrMhtj2c9S3e5jGN7OvREXUzi/03s="; }; patches = [ ]; diff --git a/pkgs/by-name/os/ossia-score/package.nix b/pkgs/by-name/os/ossia-score/package.nix index 5900c5d8766d..5d2ee5b936a5 100644 --- a/pkgs/by-name/os/ossia-score/package.nix +++ b/pkgs/by-name/os/ossia-score/package.nix @@ -44,13 +44,13 @@ clangStdenv.mkDerivation (finalAttrs: { pname = "ossia-score"; - version = "3.7.0"; + version = "3.7.1"; src = fetchFromGitHub { owner = "ossia"; repo = "score"; tag = "v${finalAttrs.version}"; - hash = "sha256-r5JoOzUa70nn5pj9pcuAC4okpnRWTafyukz+ij0VQno="; + hash = "sha256-+RUspDEAQPL6M0/f4lb/SuTD1wdmwE9+8GXQKUClgdE="; fetchSubmodules = true; }; diff --git a/pkgs/by-name/sc/scsh/package.nix b/pkgs/by-name/sc/scsh/package.nix index 7199980aa06a..6d4c81da43be 100644 --- a/pkgs/by-name/sc/scsh/package.nix +++ b/pkgs/by-name/sc/scsh/package.nix @@ -31,6 +31,9 @@ stdenv.mkDerivation { nativeBuildInputs = [ autoreconfHook ]; buildInputs = [ scheme48 ]; configureFlags = [ "--with-scheme48=${scheme48}" ]; + makeFlags = [ + "SCHEME48VERSION=${scheme48.version}" + ]; passthru.updateScript = unstableGitUpdater { }; diff --git a/pkgs/by-name/we/wemeet/package.nix b/pkgs/by-name/we/wemeet/package.nix index 53f9dcc3522b..6fbf70d6335d 100644 --- a/pkgs/by-name/we/wemeet/package.nix +++ b/pkgs/by-name/we/wemeet/package.nix @@ -189,6 +189,7 @@ stdenv.mkDerivation { mkdir -p $out/app cp -r opt/wemeet $out/app/wemeet cp -r usr/share $out/share + # bundled libcurl depends on openssl 1.1 which is not available in nixpkgs rm -f $out/app/wemeet/lib/libcurl.so substituteInPlace $out/share/applications/wemeetapp.desktop \ --replace-fail "/opt/wemeet/wemeetapp.sh" "wemeet" \ @@ -200,8 +201,7 @@ stdenv.mkDerivation { ln -s $out/app/wemeet/bin/raw/xcast.conf $out/app/wemeet/bin/xcast.conf ln -s $out/app/wemeet/plugins $out/app/wemeet/lib/plugins ln -s $out/app/wemeet/resources $out/app/wemeet/lib/resources - mkdir -p $out/app/wemeet/lib/translations - ln -s $out/app/wemeet/translations/qtwebengine_locales $out/app/wemeet/lib/translations/qtwebengine_locales + ln -s $out/app/wemeet/translations $out/app/wemeet/lib/translations runHook postInstall ''; @@ -217,9 +217,9 @@ stdenv.mkDerivation { "--set QT_STYLE_OVERRIDE fusion" "--set IBUS_USE_PORTAL 1" "--set XKB_CONFIG_ROOT ${xkeyboard_config}/share/X11/xkb" - "--prefix LD_LIBRARY_PATH : $out/lib:$out/translations:${xorg.libXext}/lib:${xorg.libXdamage}/lib:${opencv4WithoutCuda}/lib:${xorg.libXrandr}/lib" - "--prefix PATH : $out/bin" - "--prefix QT_PLUGIN_PATH : $out/plugins" + "--prefix LD_LIBRARY_PATH : $out/app/wemeet/lib:$out/translations:${xorg.libXext}/lib:${xorg.libXdamage}/lib:${opencv4WithoutCuda}/lib:${xorg.libXrandr}/lib" + "--prefix PATH : $out/app/wemeet/bin" + "--prefix QT_PLUGIN_PATH : $out/app/wemeet/plugins" ]; commonWrapperArgs = baseWrapperArgs ++ [ "--prefix LD_PRELOAD : ${libwemeetwrap}/lib/libwemeetwrap.so" diff --git a/pkgs/desktops/pantheon/apps/elementary-maps/default.nix b/pkgs/desktops/pantheon/apps/elementary-maps/default.nix new file mode 100644 index 000000000000..f6fb16c8e54f --- /dev/null +++ b/pkgs/desktops/pantheon/apps/elementary-maps/default.nix @@ -0,0 +1,64 @@ +{ + stdenv, + lib, + fetchFromGitHub, + glib, + meson, + ninja, + pkg-config, + vala, + wrapGAppsHook4, + geoclue2, + geocode-glib_2, + granite7, + gtk4, + libadwaita, + libshumate, + nix-update-script, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "elementary-maps"; + version = "8.1.0"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = "maps"; + tag = finalAttrs.version; + hash = "sha256-tS8UnW/oNjLaUZ1XgGuAmeMrHEa2jbtBc0xMcTKki1k="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + glib + meson + ninja + pkg-config + vala + wrapGAppsHook4 + ]; + + buildInputs = [ + geoclue2 + geocode-glib_2 + glib + granite7 + gtk4 + libadwaita + libshumate + ]; + + passthru = { + updateScript = nix-update-script { }; + }; + + meta = { + homepage = "https://github.com/elementary/maps"; + description = "Map viewer designed for elementary OS"; + license = lib.licenses.gpl3Plus; + platforms = lib.platforms.linux; + teams = [ lib.teams.pantheon ]; + mainProgram = "io.elementary.maps"; + }; +}) diff --git a/pkgs/desktops/pantheon/default.nix b/pkgs/desktops/pantheon/default.nix index 04050a28e6d1..3d15f9b9f72b 100644 --- a/pkgs/desktops/pantheon/default.nix +++ b/pkgs/desktops/pantheon/default.nix @@ -74,6 +74,8 @@ lib.makeScope pkgs.newScope ( elementary-mail = callPackage ./apps/elementary-mail { }; + elementary-maps = callPackage ./apps/elementary-maps { }; + elementary-music = callPackage ./apps/elementary-music { }; elementary-photos = callPackage ./apps/elementary-photos { }; diff --git a/pkgs/desktops/pantheon/libraries/granite/7/default.nix b/pkgs/desktops/pantheon/libraries/granite/7/default.nix index c749c9262053..a1c65b89f474 100644 --- a/pkgs/desktops/pantheon/libraries/granite/7/default.nix +++ b/pkgs/desktops/pantheon/libraries/granite/7/default.nix @@ -2,7 +2,6 @@ lib, stdenv, fetchFromGitHub, - fetchpatch, nix-update-script, meson, ninja, @@ -10,6 +9,7 @@ vala, pkg-config, libgee, + libshumate, gtk4, glib, gettext, @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { pname = "granite"; - version = "7.6.0"; + version = "7.7.0"; outputs = [ "out" @@ -31,18 +31,9 @@ stdenv.mkDerivation rec { owner = "elementary"; repo = "granite"; rev = version; - sha256 = "sha256-bv2rOq16xg9lCWfcLzAFN4LjBTJBxPhXvEJzutkdYzs="; + sha256 = "sha256-ypSkzz9BaVweR1C0OkkfwDl8tehMK1S5iExL14LuKmI="; }; - patches = [ - # Init: Avoid crash with Gtk >= 4.17 - # https://github.com/elementary/granite/pull/893 - (fetchpatch { - url = "https://github.com/elementary/granite/commit/60cb8c4119b579592e6c7f3b1476e4d729f58699.patch"; - hash = "sha256-6NB/Tu3mdmiBd77SOi4twdY/HidyhMn7mNN+54iFLIc="; - }) - ]; - nativeBuildInputs = [ gettext gobject-introspection @@ -54,6 +45,10 @@ stdenv.mkDerivation rec { wrapGAppsHook4 ]; + buildInputs = [ + libshumate # demo + ]; + propagatedBuildInputs = [ glib gsettings-desktop-schemas # is_clock_format_12h uses "org.gnome.desktop.interface clock-format" diff --git a/pkgs/development/libraries/mesa/common.nix b/pkgs/development/libraries/mesa/common.nix index 2730ab54e558..79aeadb8d9c3 100644 --- a/pkgs/development/libraries/mesa/common.nix +++ b/pkgs/development/libraries/mesa/common.nix @@ -5,14 +5,14 @@ # nix build .#legacyPackages.x86_64-darwin.mesa .#legacyPackages.aarch64-darwin.mesa rec { pname = "mesa"; - version = "25.2.3"; + version = "25.2.4"; src = fetchFromGitLab { domain = "gitlab.freedesktop.org"; owner = "mesa"; repo = "mesa"; rev = "mesa-${version}"; - hash = "sha256-3URQ9ZZ22vdZpToZqpWbcpsAI4e8a5X35/5HWOprbPM="; + hash = "sha256-75bJyFGaLc8H9w83O1WXIrFFFP7/O5HNzabdqkWI/hQ="; }; meta = { diff --git a/pkgs/development/tools/ocaml/ocp-indent/default.nix b/pkgs/development/tools/ocaml/ocp-indent/default.nix index 73c834c6624f..21ff45f76d0d 100644 --- a/pkgs/development/tools/ocaml/ocp-indent/default.nix +++ b/pkgs/development/tools/ocaml/ocp-indent/default.nix @@ -7,19 +7,17 @@ }: buildDunePackage rec { - version = "1.8.2"; + version = "1.9.0"; pname = "ocp-indent"; - duneVersion = "3"; - src = fetchFromGitHub { owner = "OCamlPro"; repo = "ocp-indent"; - rev = version; - sha256 = "sha256-IyvURw/6R0eKrnahV1fqLV0iIeypykrmxDbliECgbLc="; + tag = version; + hash = "sha256-71dbZ8c842MYZfHad6RT0E48JlgzJSHnQgLVA5dGLv8="; }; - minimalOCamlVersion = "4.03"; + minimalOCamlVersion = "4.08"; buildInputs = [ cmdliner ]; propagatedBuildInputs = [ findlib ]; diff --git a/pkgs/pkgs-lib/formats.nix b/pkgs/pkgs-lib/formats.nix index acbc088e28e1..58eda45da319 100644 --- a/pkgs/pkgs-lib/formats.nix +++ b/pkgs/pkgs-lib/formats.nix @@ -988,6 +988,14 @@ optionalAttrs allowAliases aliases }; in attrsOf valueType; + + lib = { + mkRaw = value: { + inherit value; + _type = "raw"; + }; + }; + generate = name: value: pkgs.callPackage ( @@ -1002,16 +1010,43 @@ optionalAttrs allowAliases aliases python3 black ]; - value = builtins.toJSON value; + imports = builtins.toJSON (value._imports or [ ]); + value = builtins.toJSON (removeAttrs value [ "_imports" ]); pythonGen = '' import json import os + def recursive_repr(value: any) -> str: + if type(value) is list: + return '\n'.join([ + "[", + *[recursive_repr(x) + "," for x in value], + "]", + ]) + elif type(value) is dict and value.get("_type") == "raw": + return value.get("value") + elif type(value) is dict: + return '\n'.join([ + "{", + *[f"'{k.replace('\''', '\\\''')}': {recursive_repr(v)}," for k, v in value.items()], + "}", + ]) + else: + return repr(value) + + with open(os.environ["importsPath"], "r") as f: + imports = json.load(f) + if imports is not None: + for i in imports: + print(f"import {i}") + print() + with open(os.environ["valuePath"], "r") as f: for key, value in json.load(f).items(): - print(f"{key} = {repr(value)}") + print(f"{key} = {recursive_repr(value)}") ''; passAsFile = [ + "imports" "value" "pythonGen" ]; diff --git a/pkgs/pkgs-lib/tests/formats.nix b/pkgs/pkgs-lib/tests/formats.nix index 9b1ab396a3fe..9afd9d783b65 100644 --- a/pkgs/pkgs-lib/tests/formats.nix +++ b/pkgs/pkgs-lib/tests/formats.nix @@ -904,6 +904,63 @@ runBuildTests { ''; }; + pythonVars = shouldPass ( + let + format = formats.pythonVars { }; + in + { + inherit format; + input = { + _imports = [ + "re" + "a.b.c" + ]; + + int = 10; + float = 3.141; + bool = true; + str = "foo"; + str_special = "foo\ntesthello'''"; + null = null; + list = [ + null + 1 + "str" + true + (format.lib.mkRaw "1 if True else 2") + ]; + attrs = { + foo = null; + conditional = format.lib.mkRaw "1 if True else 2"; + }; + func = format.lib.mkRaw "re.findall(r'\\bf[a-z]*', 'which foot or hand fell fastest')"; + }; + expected = '' + import re + import a.b.c + + attrs = { + "conditional": 1 if True else 2, + "foo": None, + } + bool = True + float = 3.141 + func = re.findall(r"\bf[a-z]*", "which foot or hand fell fastest") + int = 10 + list = [ + None, + 1, + "str", + True, + 1 if True else 2, + ] + null = None + str = "foo" + str_special = "foo\ntesthello''''" + ''; + } + ); + phpReturn = shouldPass { format = formats.php { }; input = { diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 65a83ed52762..26705fa05982 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -2831,7 +2831,7 @@ mapAliases { openbsdCross = openbsd; # Added 2024-09-06 # LLVM packages for (integration) testing that should not be used inside Nixpkgs: - llvmPackages_latest = llvmPackages_20; + llvmPackages_latest = llvmPackages_21; /* If these are in the scope of all-packages.nix, they cause collisions