diff --git a/doc/doc-support/header.html b/doc/doc-support/header.html new file mode 100644 index 000000000000..1c42f4adcf11 --- /dev/null +++ b/doc/doc-support/header.html @@ -0,0 +1,7 @@ +
+ + Nixpkgs Manual +
diff --git a/doc/doc-support/package.nix b/doc/doc-support/package.nix index f2c37df39132..728bbe334501 100644 --- a/doc/doc-support/package.nix +++ b/doc/doc-support/package.nix @@ -119,6 +119,8 @@ stdenvNoCC.mkDerivation ( --script ./anchor-use.js \ --sidebar-depth 3 \ --nav ./nav.json \ + --header ${./header.html}\ + --no-navheader \ manual.md \ out/index.html diff --git a/doc/style.css b/doc/style.css index 8b426e72de24..9410d39e54be 100644 --- a/doc/style.css +++ b/doc/style.css @@ -23,14 +23,14 @@ body { @media screen and (min-width: 992px) { .book, .appendix { - max-width: 60rem; + max-width: 55rem; } } @media screen and (min-width: 1200px) { .book, .appendix { - max-width: 73rem; + max-width: 55rem; } } @@ -398,6 +398,7 @@ div.appendix .variablelist .term { :root { --sidebar-width: 20rem; + --header-height: 3rem; --background: #fff; --main-text-color: #000; --link-color: #405d99; @@ -528,7 +529,7 @@ nav.toc-sidebar summary { min-height: 0; display: grid; grid-template-columns: minmax(0, 1fr); - grid-template-rows: auto minmax(0, 1fr); + grid-template-rows: var(--header-height) auto minmax(0, 1fr); } body:has(> nav.toc-sidebar) { @@ -537,7 +538,7 @@ nav.toc-sidebar summary { .navheader { grid-column: 1 / -1; - grid-row: 1; + grid-row: 2; } nav.toc-sidebar { @@ -548,7 +549,7 @@ nav.toc-sidebar summary { /* */ margin: 0; grid-column: 1; - grid-row: 2; + grid-row: 3; max-height: none; overflow-y: auto; border: none; @@ -562,7 +563,7 @@ nav.toc-sidebar summary { main.content { grid-column: 1 / -1; - grid-row: 2; + grid-row: 3; overflow-y: auto; padding: 0 1rem; } @@ -571,3 +572,73 @@ nav.toc-sidebar summary { grid-column: 2; } } + +.manual-header { + background-color: var(--background); + border-bottom: 0.0625rem solid #d8d8d8; + display: flex; + flex-direction: column; +} + +.manual-header--title { + order: -1; + padding: 0.5rem 1rem 0; + font-size: 0.875rem; + font-weight: 500; + color: var(--small-heading-color); + text-align: center; +} + +.manual-header--tabs { + display: flex; + align-items: stretch; + justify-content: space-around; + margin: 0; + padding: 0; +} + +.manual-header--tab { + display: flex; + align-items: center; + padding: 0 1rem; + font-size: 0.875rem; + font-weight: 500; + color: var(--main-text-color); + text-decoration: none; + border-bottom: 0.1875rem solid transparent; + border-top: 0.1875rem solid transparent; + transition: border-bottom-color 0.15s ease; +} + +.manual-header--tab:hover { + border-bottom-color: var(--heading-color); + color: var(--main-text-color); +} + +.manual-header--tab-active { + border-bottom-color: var(--heading-color); + color: var(--heading-color); + font-weight: 700; +} + +@media screen and (min-width: 768px) { + .manual-header { + height: var(--header-height); + flex-direction: row; + align-items: stretch; + grid-column: 1 / -1; + grid-row: 1; + } + + .manual-header--title { + order: 0; + margin-left: auto; + padding: 0 1rem; + align-self: center; + } + + .manual-header--tabs { + justify-content: flex-start; + padding: 0 1rem; + } +} diff --git a/nixos/doc/manual/default.nix b/nixos/doc/manual/default.nix index cf5c28358097..78f44ad9ad74 100644 --- a/nixos/doc/manual/default.nix +++ b/nixos/doc/manual/default.nix @@ -202,6 +202,8 @@ rec { --script ./anchor.min.js \ --script ./anchor-use.js \ --sidebar-depth 2 \ + --header ${./header.html}\ + --no-navheader \ ./manual.md \ $dst/${common.indexPath} diff --git a/nixos/doc/manual/header.html b/nixos/doc/manual/header.html new file mode 100644 index 000000000000..acc029f5c3e4 --- /dev/null +++ b/nixos/doc/manual/header.html @@ -0,0 +1,7 @@ +
+ + Nixos Manual +
diff --git a/pkgs/applications/emulators/libretro/cores/play.nix b/pkgs/applications/emulators/libretro/cores/play.nix index f777c18941ff..26b3d48ea660 100644 --- a/pkgs/applications/emulators/libretro/cores/play.nix +++ b/pkgs/applications/emulators/libretro/cores/play.nix @@ -14,13 +14,13 @@ }: mkLibretroCore { core = "play"; - version = "0-unstable-2026-06-22"; + version = "0-unstable-2026-07-11"; src = fetchFromGitHub { owner = "jpd002"; repo = "Play-"; - rev = "1e4f393f3c52581cdec7867ddadc47f6b4d20cec"; - hash = "sha256-a02AsJg7mm/fUBN/5IC2Q6NexLYsBYp74bfqfJosaxc="; + rev = "50aedca2639521bc498ace0b2be1ea012801a86a"; + hash = "sha256-ywqwy8HwxigRG/2GfvfpewNjTIeunXH9NtyAH5iUfa8="; fetchSubmodules = true; }; diff --git a/pkgs/by-name/bi/bisq1/package.nix b/pkgs/by-name/bi/bisq1/package.nix index 8895ec305994..e5ca6ad35ec8 100644 --- a/pkgs/by-name/bi/bisq1/package.nix +++ b/pkgs/by-name/bi/bisq1/package.nix @@ -36,7 +36,10 @@ }: let - version = "1.10.2"; + # This is separated into its own file so it's easier for `update.sh`. + sources = import ./sources.nix; + + version = sources.version; # JDK 21 is the toolchain required by docs/build.md. enableJavaFX is not # strictly required (Bisq bundles its own JavaFX jars), but mirrors the @@ -86,17 +89,17 @@ let publicKey = { "E222AA02" = fetchurl { url = "https://github.com/bisq-network/bisq/releases/download/v${version}/E222AA02.asc"; - hash = "sha256-Ue/UmS6F440/ybEEIAR+pdPEIksAt6QSMN6G5TZVWzc="; + hash = sources."key-E222AA02-hash"; }; "4A133008" = fetchurl { url = "https://github.com/bisq-network/bisq/releases/download/v${version}/4A133008.asc"; - hash = "sha256-UijG3DkJNNTakVJd2wl30mDepa27n6R/Xxfl4sjt0sk="; + hash = sources."key-4A133008-hash"; }; "387C8307" = fetchurl { url = "https://github.com/bisq-network/bisq/releases/download/v${version}/387C8307.asc"; - hash = "sha256-PrRYZLT0xv82dUscOBgQGKNf6zwzWUDhriAffZbNpmI="; + hash = sources."key-387C8307-hash"; }; }; @@ -133,7 +136,7 @@ stdenv.mkDerivation (finalAttrs: { src = fetchurl { url = "https://github.com/bisq-network/bisq/releases/download/v${version}/Bisq-64bit-${version}.deb"; - hash = "sha256-e7rPUhA6KF3Tz3zlYqEfM9G0owe9hAUFDifKseRvb6A="; + hash = sources."deb-hash"; # Verify the upstream Debian package's detached PGP signature prior to use. # This ensures that a successful build of this Nix package requires the @@ -158,7 +161,7 @@ stdenv.mkDerivation (finalAttrs: { signature = fetchurl { url = "https://github.com/bisq-network/bisq/releases/download/v${version}/Bisq-64bit-${version}.deb.asc"; - hash = "sha256-kBRaOXuP22DvXMkJ1XQatwvTmu/Ds8FvmUgYnRT7Vg0="; + hash = sources."sig-hash"; }; nativeBuildInputs = [ @@ -241,6 +244,8 @@ stdenv.mkDerivation (finalAttrs: { runHook postInstall ''; + passthru.updateScript = ./update.sh; + meta = { description = "Decentralized bitcoin exchange network (Bisq 1)"; homepage = "https://bisq.network"; diff --git a/pkgs/by-name/bi/bisq1/sources.nix b/pkgs/by-name/bi/bisq1/sources.nix new file mode 100644 index 000000000000..8b9f276e8cf1 --- /dev/null +++ b/pkgs/by-name/bi/bisq1/sources.nix @@ -0,0 +1,9 @@ +# Generated by ./update.sh - do not update manually! +{ + version = "1.10.3"; + deb-hash = "sha256-kzLtadq8gfX6j9XU3PD5kNV43wLDoICPlXdJqULkAWE="; + sig-hash = "sha256-+51j+SBp7buukop1T4Gz0YDUga6540BVxDRoU2YE3pY="; + key-E222AA02-hash = "sha256-Ue/UmS6F440/ybEEIAR+pdPEIksAt6QSMN6G5TZVWzc="; + key-4A133008-hash = "sha256-UijG3DkJNNTakVJd2wl30mDepa27n6R/Xxfl4sjt0sk="; + key-387C8307-hash = "sha256-PrRYZLT0xv82dUscOBgQGKNf6zwzWUDhriAffZbNpmI="; +} diff --git a/pkgs/by-name/bi/bisq1/update.sh b/pkgs/by-name/bi/bisq1/update.sh new file mode 100755 index 000000000000..c162a4e6190b --- /dev/null +++ b/pkgs/by-name/bi/bisq1/update.sh @@ -0,0 +1,79 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash --pure --keep GITHUB_TOKEN -p nix git curl cacert jq + +set -euo pipefail + +cd "$(dirname "${BASH_SOURCE[0]}")" + +# Fetch the latest release version from GitHub +payload=$(curl -sL https://api.github.com/repos/bisq-network/bisq/releases/latest) +version=$(jq -r .tag_name <<< "$payload" | sed 's/^v//') + +echo "Updating bisq1 to version $version" + +# URLs for the new version +deb_url="https://github.com/bisq-network/bisq/releases/download/v${version}/Bisq-64bit-${version}.deb" +sig_url="https://github.com/bisq-network/bisq/releases/download/v${version}/Bisq-64bit-${version}.deb.asc" + +# Fetch and compute hashes using nix-prefetch-url and convert to SRI format +echo "Prefetching .deb package..." +deb_hash_raw=$(nix-prefetch-url "$deb_url" 2>/dev/null) +deb_hash=$(nix --extra-experimental-features nix-command hash convert --to sri --hash-algo sha256 "$deb_hash_raw") +echo " deb hash: $deb_hash" + +echo "Prefetching signature..." +sig_hash_raw=$(nix-prefetch-url "$sig_url" 2>/dev/null) +sig_hash=$(nix --extra-experimental-features nix-command hash convert --to sri --hash-algo sha256 "$sig_hash_raw") +echo " signature hash: $sig_hash" + +# Fetch and compute hashes for public keys (these may not exist in all releases) +get_key_hash() { + local key_name=$1 + local url="https://github.com/bisq-network/bisq/releases/download/v${version}/${key_name}.asc" + local hash_raw + if hash_raw=$(nix-prefetch-url "$url" 2>/dev/null); then + nix --extra-experimental-features nix-command hash convert --to sri --hash-algo sha256 "$hash_raw" + else + echo "" # Return empty if key doesn't exist + fi +} + +echo "Prefetching public keys..." +key_E222AA02_hash=$(get_key_hash "E222AA02") +if [ -n "$key_E222AA02_hash" ]; then + echo " E222AA02 hash: $key_E222AA02_hash" +else + echo " E222AA02: not found in this release, keeping old hash" + key_E222AA02_hash=$(grep 'key-E222AA02-hash' sources.nix | sed 's/.*= "\(.*\)".*/\1/') +fi + +key_4A133008_hash=$(get_key_hash "4A133008") +if [ -n "$key_4A133008_hash" ]; then + echo " 4A133008 hash: $key_4A133008_hash" +else + echo " 4A133008: not found in this release, keeping old hash" + key_4A133008_hash=$(grep 'key-4A133008-hash' sources.nix | sed 's/.*= "\(.*\)".*/\1/') +fi + +key_387C8307_hash=$(get_key_hash "387C8307") +if [ -n "$key_387C8307_hash" ]; then + echo " 387C8307 hash: $key_387C8307_hash" +else + echo " 387C8307: not found in this release, keeping old hash" + key_387C8307_hash=$(grep 'key-387C8307-hash' sources.nix | sed 's/.*= "\(.*\)".*/\1/') +fi + +# Write sources.nix (only include keys that exist) +cat >sources.nix <