diff options
Diffstat (limited to 'pkgs/by-name/ha')
24 files changed, 803 insertions, 217 deletions
diff --git a/pkgs/by-name/ha/ha-mqtt-discoverable-cli/package.nix b/pkgs/by-name/ha/ha-mqtt-discoverable-cli/package.nix index 2087a5f410385..d9ea3eeb4787f 100644 --- a/pkgs/by-name/ha/ha-mqtt-discoverable-cli/package.nix +++ b/pkgs/by-name/ha/ha-mqtt-discoverable-cli/package.nix @@ -1,39 +1,37 @@ -{ lib -, python3 -, fetchFromGitHub +{ + lib, + fetchFromGitHub, + python3, }: python3.pkgs.buildPythonApplication rec { pname = "ha-mqtt-discoverable-cli"; - version = "0.2.1"; + version = "0.4.1"; pyproject = true; src = fetchFromGitHub { owner = "unixorn"; repo = "ha-mqtt-discoverable-cli"; rev = "refs/tags/v${version}"; - hash = "sha256-miFlrBmxVuIJjpsyYnbQt+QAGSrS4sHlJpCmxouM2Wc="; + hash = "sha256-rGRsB5kAtzI5KP4tMiQqLJQZs7z5k657V8Di0OzB6F8="; }; - nativeBuildInputs = with python3.pkgs; [ - poetry-core - ]; + pythonRelaxDeps = [ "ha-mqtt-discoverable" ]; - propagatedBuildInputs = with python3.pkgs; [ - ha-mqtt-discoverable - ]; + build-system = with python3.pkgs; [ poetry-core ]; + + + dependencies = with python3.pkgs; [ ha-mqtt-discoverable ]; # Project has no real tests doCheck = false; - pythonImportsCheck = [ - "ha_mqtt_discoverable_cli" - ]; + pythonImportsCheck = [ "ha_mqtt_discoverable_cli" ]; meta = with lib; { description = "CLI for creating Home Assistant compatible MQTT entities that will be automatically discovered"; homepage = "https://github.com/unixorn/ha-mqtt-discoverable-cli"; - changelog = "https://github.com/unixorn/ha-mqtt-discoverable-cli/releases/tag/v0.2.1"; + changelog = "https://github.com/unixorn/ha-mqtt-discoverable-cli/releases/tag/v${version}"; license = licenses.asl20; maintainers = with maintainers; [ fab ]; mainProgram = "hmd"; diff --git a/pkgs/by-name/ha/hachimarupop/package.nix b/pkgs/by-name/ha/hachimarupop/package.nix index 3ebf82409a1cc..1097bc4386205 100644 --- a/pkgs/by-name/ha/hachimarupop/package.nix +++ b/pkgs/by-name/ha/hachimarupop/package.nix @@ -22,7 +22,7 @@ stdenvNoCC.mkDerivation { meta = { homepage = "https://github.com/noriokanisawa/HachiMaruPop"; - description = "A cute, Japanese font"; + description = "Cute, Japanese font"; license = lib.licenses.ofl; maintainers = with lib.maintainers; [ AndersonTorres ]; platforms = lib.platforms.all; diff --git a/pkgs/by-name/ha/hacompanion/package.nix b/pkgs/by-name/ha/hacompanion/package.nix index eeb1cd7fe8a2c..d9ad59aeabe79 100644 --- a/pkgs/by-name/ha/hacompanion/package.nix +++ b/pkgs/by-name/ha/hacompanion/package.nix @@ -5,13 +5,13 @@ buildGoModule rec { pname = "hacompanion"; - version = "1.0.12"; + version = "1.0.15"; src = fetchFromGitHub { owner = "tobias-kuendig"; repo = "hacompanion"; rev = "v${version}"; - hash = "sha256-3uPn139e8TyP0rE9hfRKw192YyexG+f3KmlHMmgCN7A="; + hash = "sha256-FR2IowbaHXr9x/eMt+NCuGusMwX2iVxPOuWEkhH2GFM="; }; vendorHash = "sha256-ZZ8nxN+zUeFhSXyoHLMgzeFllnIkKdoVnbVK5KjrLEQ="; diff --git a/pkgs/by-name/ha/hadolint-sarif/package.nix b/pkgs/by-name/ha/hadolint-sarif/package.nix new file mode 100644 index 0000000000000..bf8f434296330 --- /dev/null +++ b/pkgs/by-name/ha/hadolint-sarif/package.nix @@ -0,0 +1,37 @@ +{ + lib, + fetchFromGitHub, + rustPlatform, + hadolint-sarif, + testers, +}: +rustPlatform.buildRustPackage rec { + pname = "hadolint-sarif"; + version = "0.4.2"; + + src = fetchFromGitHub { + owner = "psastras"; + repo = "sarif-rs"; + rev = "hadolint-sarif-v${version}"; + hash = "sha256-EzWzDeIeSJ11CVcVyAhMjYQJcKHnieRrFkULc5eXAno="; + }; + + cargoHash = "sha256-AMRL1XANyze8bJe3fdgZvBnl/NyuWP13jixixqiPmiw="; + cargoBuildFlags = [ + "--package" + "hadolint-sarif" + ]; + cargoTestFlags = cargoBuildFlags; + + passthru = { + tests.version = testers.testVersion { package = hadolint-sarif; }; + }; + + meta = { + description = "A CLI tool to convert hadolint diagnostics into SARIF"; + homepage = "https://psastras.github.io/sarif-rs"; + mainProgram = "hadolint-sarif"; + maintainers = with lib.maintainers; [ getchoo ]; + license = lib.licenses.mit; + }; +} diff --git a/pkgs/by-name/ha/halloy/Cargo.lock b/pkgs/by-name/ha/halloy/Cargo.lock index 774723b056a05..74e5fa582d6ce 100644 --- a/pkgs/by-name/ha/halloy/Cargo.lock +++ b/pkgs/by-name/ha/halloy/Cargo.lock @@ -121,6 +121,12 @@ dependencies = [ ] [[package]] +name = "anyhow" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" + +[[package]] name = "approx" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -246,6 +252,18 @@ dependencies = [ ] [[package]] +name = "async-http-proxy" +version = "1.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29faa5d4d308266048bd7505ba55484315a890102f9345b9ff4b87de64201592" +dependencies = [ + "base64 0.13.1", + "httparse", + "thiserror", + "tokio", +] + +[[package]] name = "async-io" version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -414,6 +432,12 @@ dependencies = [ [[package]] name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" @@ -923,7 +947,7 @@ dependencies = [ name = "data" version = "0.1.0" dependencies = [ - "base64", + "base64 0.21.7", "bytes", "chrono", "dirs-next", @@ -947,6 +971,7 @@ dependencies = [ "tokio", "tokio-stream", "toml", + "xdg", ] [[package]] @@ -1271,6 +1296,20 @@ dependencies = [ ] [[package]] +name = "fast-socks5" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f89f36d4ee12370d30d57b16c7e190950a1a916e7dbbb5fd5a412f5ef913fe84" +dependencies = [ + "anyhow", + "async-trait", + "log", + "thiserror", + "tokio", + "tokio-stream", +] + +[[package]] name = "fast-srgb8" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1924,7 +1963,7 @@ dependencies = [ [[package]] name = "iced" version = "0.13.0-dev" -source = "git+https://github.com/iced-rs/iced?rev=31d1d5fecbef50fa319cabd5d4194f1e4aaefa21#31d1d5fecbef50fa319cabd5d4194f1e4aaefa21" +source = "git+https://github.com/iced-rs/iced?rev=a05b8044a9a82c1802d4d97f1723e24b9d9dad9c#a05b8044a9a82c1802d4d97f1723e24b9d9dad9c" dependencies = [ "iced_core", "iced_futures", @@ -1938,7 +1977,7 @@ dependencies = [ [[package]] name = "iced_core" version = "0.13.0-dev" -source = "git+https://github.com/iced-rs/iced?rev=31d1d5fecbef50fa319cabd5d4194f1e4aaefa21#31d1d5fecbef50fa319cabd5d4194f1e4aaefa21" +source = "git+https://github.com/iced-rs/iced?rev=a05b8044a9a82c1802d4d97f1723e24b9d9dad9c#a05b8044a9a82c1802d4d97f1723e24b9d9dad9c" dependencies = [ "bitflags 2.5.0", "dark-light", @@ -1957,7 +1996,7 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.13.0-dev" -source = "git+https://github.com/iced-rs/iced?rev=31d1d5fecbef50fa319cabd5d4194f1e4aaefa21#31d1d5fecbef50fa319cabd5d4194f1e4aaefa21" +source = "git+https://github.com/iced-rs/iced?rev=a05b8044a9a82c1802d4d97f1723e24b9d9dad9c#a05b8044a9a82c1802d4d97f1723e24b9d9dad9c" dependencies = [ "futures", "iced_core", @@ -1971,7 +2010,7 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.13.0-dev" -source = "git+https://github.com/iced-rs/iced?rev=31d1d5fecbef50fa319cabd5d4194f1e4aaefa21#31d1d5fecbef50fa319cabd5d4194f1e4aaefa21" +source = "git+https://github.com/iced-rs/iced?rev=a05b8044a9a82c1802d4d97f1723e24b9d9dad9c#a05b8044a9a82c1802d4d97f1723e24b9d9dad9c" dependencies = [ "bitflags 2.5.0", "bytemuck", @@ -1992,7 +2031,7 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.13.0-dev" -source = "git+https://github.com/iced-rs/iced?rev=31d1d5fecbef50fa319cabd5d4194f1e4aaefa21#31d1d5fecbef50fa319cabd5d4194f1e4aaefa21" +source = "git+https://github.com/iced-rs/iced?rev=a05b8044a9a82c1802d4d97f1723e24b9d9dad9c#a05b8044a9a82c1802d4d97f1723e24b9d9dad9c" dependencies = [ "iced_graphics", "iced_tiny_skia", @@ -2004,7 +2043,7 @@ dependencies = [ [[package]] name = "iced_runtime" version = "0.13.0-dev" -source = "git+https://github.com/iced-rs/iced?rev=31d1d5fecbef50fa319cabd5d4194f1e4aaefa21#31d1d5fecbef50fa319cabd5d4194f1e4aaefa21" +source = "git+https://github.com/iced-rs/iced?rev=a05b8044a9a82c1802d4d97f1723e24b9d9dad9c#a05b8044a9a82c1802d4d97f1723e24b9d9dad9c" dependencies = [ "iced_core", "iced_futures", @@ -2015,7 +2054,7 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.13.0-dev" -source = "git+https://github.com/iced-rs/iced?rev=31d1d5fecbef50fa319cabd5d4194f1e4aaefa21#31d1d5fecbef50fa319cabd5d4194f1e4aaefa21" +source = "git+https://github.com/iced-rs/iced?rev=a05b8044a9a82c1802d4d97f1723e24b9d9dad9c#a05b8044a9a82c1802d4d97f1723e24b9d9dad9c" dependencies = [ "bytemuck", "cosmic-text", @@ -2030,7 +2069,7 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.13.0-dev" -source = "git+https://github.com/iced-rs/iced?rev=31d1d5fecbef50fa319cabd5d4194f1e4aaefa21#31d1d5fecbef50fa319cabd5d4194f1e4aaefa21" +source = "git+https://github.com/iced-rs/iced?rev=a05b8044a9a82c1802d4d97f1723e24b9d9dad9c#a05b8044a9a82c1802d4d97f1723e24b9d9dad9c" dependencies = [ "bitflags 2.5.0", "bytemuck", @@ -2049,7 +2088,7 @@ dependencies = [ [[package]] name = "iced_widget" version = "0.13.0-dev" -source = "git+https://github.com/iced-rs/iced?rev=31d1d5fecbef50fa319cabd5d4194f1e4aaefa21#31d1d5fecbef50fa319cabd5d4194f1e4aaefa21" +source = "git+https://github.com/iced-rs/iced?rev=a05b8044a9a82c1802d4d97f1723e24b9d9dad9c#a05b8044a9a82c1802d4d97f1723e24b9d9dad9c" dependencies = [ "iced_renderer", "iced_runtime", @@ -2063,7 +2102,7 @@ dependencies = [ [[package]] name = "iced_winit" version = "0.13.0-dev" -source = "git+https://github.com/iced-rs/iced?rev=31d1d5fecbef50fa319cabd5d4194f1e4aaefa21#31d1d5fecbef50fa319cabd5d4194f1e4aaefa21" +source = "git+https://github.com/iced-rs/iced?rev=a05b8044a9a82c1802d4d97f1723e24b9d9dad9c#a05b8044a9a82c1802d4d97f1723e24b9d9dad9c" dependencies = [ "iced_graphics", "iced_runtime", @@ -2156,7 +2195,9 @@ checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" name = "irc" version = "0.1.0" dependencies = [ + "async-http-proxy", "bytes", + "fast-socks5", "futures", "irc_proto", "rustls-native-certs", @@ -3377,7 +3418,7 @@ version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d66674f2b6fb864665eea7a3c1ac4e3dfacd2fda83cf6f935a612e01b0e3338" dependencies = [ - "base64", + "base64 0.21.7", "bytes", "encoding_rs", "futures-core", @@ -3548,7 +3589,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64", + "base64 0.21.7", ] [[package]] @@ -3557,7 +3598,7 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f48172685e6ff52a556baa527774f61fcaa884f59daf3375c62a3f1cd2549dab" dependencies = [ - "base64", + "base64 0.21.7", "rustls-pki-types", ] @@ -5302,6 +5343,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911" [[package]] +name = "xdg" +version = "2.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" + +[[package]] name = "xdg-home" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" diff --git a/pkgs/by-name/ha/halloy/package.nix b/pkgs/by-name/ha/halloy/package.nix index b38708b97423f..7075d2a4a9a52 100644 --- a/pkgs/by-name/ha/halloy/package.nix +++ b/pkgs/by-name/ha/halloy/package.nix @@ -1,34 +1,35 @@ -{ lib -, stdenv -, darwin -, fetchFromGitHub -, copyDesktopItems -, makeDesktopItem -, libxkbcommon -, openssl -, pkg-config -, rustPlatform -, vulkan-loader -, wayland -, xorg +{ + lib, + stdenv, + darwin, + fetchFromGitHub, + copyDesktopItems, + makeDesktopItem, + libxkbcommon, + openssl, + pkg-config, + rustPlatform, + vulkan-loader, + wayland, + xorg, }: rustPlatform.buildRustPackage rec { pname = "halloy"; - version = "2024.6"; + version = "2024.7"; src = fetchFromGitHub { owner = "squidowl"; repo = "halloy"; rev = "refs/tags/${version}"; - hash = "sha256-UfeGRLZ0k2hHiA6o5kTysszU1WS4JUF5AXhKmE86bDM="; + hash = "sha256-CXuodMndUvltwjIiEdJuIazCYKqD/azROgSBTM6g87A="; }; cargoLock = { lockFile = ./Cargo.lock; outputHashes = { - "iced-0.13.0-dev" = "sha256-acGN7yxf33fDoh8J8uKvwiID+Xz1oVJ7KiiWgNWDXfo="; "glyphon-0.5.0" = "sha256-e1jTuaWh9eFdk2pDE4Ov/l3b/Q7GA3hqx6dPoOde1hM="; + "iced-0.13.0-dev" = "sha256-K1B9rVkShxQC97kwebHPsqJsJmxjEsFCKpg+p2lt09U="; "winit-0.29.15" = "sha256-9i2i4KcEv7vIImJtcw2NALQ3uDb4EAZXjShG6tfmhkc="; }; }; @@ -38,26 +39,27 @@ rustPlatform.buildRustPackage rec { pkg-config ]; - buildInputs = [ - libxkbcommon - openssl - vulkan-loader - xorg.libX11 - xorg.libXcursor - xorg.libXi - xorg.libXrandr - ] ++ lib.optionals stdenv.isDarwin [ - darwin.apple_sdk.frameworks.AppKit - darwin.apple_sdk.frameworks.CoreFoundation - darwin.apple_sdk.frameworks.CoreGraphics - darwin.apple_sdk.frameworks.Cocoa - darwin.apple_sdk.frameworks.Foundation - darwin.apple_sdk.frameworks.Metal - darwin.apple_sdk.frameworks.QuartzCore - darwin.apple_sdk.frameworks.Security - ] ++ lib.optionals stdenv.isLinux [ - wayland - ]; + buildInputs = + [ + libxkbcommon + openssl + vulkan-loader + xorg.libX11 + xorg.libXcursor + xorg.libXi + xorg.libXrandr + ] + ++ lib.optionals stdenv.isDarwin [ + darwin.apple_sdk.frameworks.AppKit + darwin.apple_sdk.frameworks.CoreFoundation + darwin.apple_sdk.frameworks.CoreGraphics + darwin.apple_sdk.frameworks.Cocoa + darwin.apple_sdk.frameworks.Foundation + darwin.apple_sdk.frameworks.Metal + darwin.apple_sdk.frameworks.QuartzCore + darwin.apple_sdk.frameworks.Security + ] + ++ lib.optionals stdenv.isLinux [ wayland ]; desktopItems = [ (makeDesktopItem { @@ -67,21 +69,35 @@ rustPlatform.buildRustPackage rec { icon = "org.squidowl.halloy"; exec = pname; terminal = false; - mimeTypes = [ "x-scheme-handler/irc" "x-scheme-handler/ircs" ]; - categories = [ "Network" "IRCClient" ]; - keywords = [ "IM" "Chat" ]; + mimeTypes = [ + "x-scheme-handler/irc" + "x-scheme-handler/ircs" + ]; + categories = [ + "Network" + "IRCClient" + ]; + keywords = [ + "IM" + "Chat" + ]; startupWMClass = "org.squidowl.halloy"; }) ]; postFixup = lib.optional stdenv.isLinux ( let - rpathWayland = lib.makeLibraryPath [ wayland vulkan-loader libxkbcommon ]; + rpathWayland = lib.makeLibraryPath [ + wayland + vulkan-loader + libxkbcommon + ]; in '' rpath=$(patchelf --print-rpath $out/bin/halloy) patchelf --set-rpath "$rpath:${rpathWayland}" $out/bin/halloy - ''); + '' + ); postInstall = '' install -Dm644 assets/linux/icons/hicolor/128x128/apps/org.squidowl.halloy.png \ diff --git a/pkgs/by-name/ha/halo/package.nix b/pkgs/by-name/ha/halo/package.nix new file mode 100644 index 0000000000000..e66027b8dc7fa --- /dev/null +++ b/pkgs/by-name/ha/halo/package.nix @@ -0,0 +1,72 @@ +{ lib +, stdenv +, fetchurl +, makeWrapper + # official jre size is 500MB, but temurin-jre-bin is 100MB. +, temurin-jre-bin +}: +stdenv.mkDerivation rec { + pname = "halo"; + version = "2.16.3"; + src = fetchurl { + url = "https://github.com/halo-dev/halo/releases/download/v${version}/${pname}-${version}.jar"; + hash = "sha256-sl2b9zKugnCEMHyvEqBWZPidoANth5gRfh34NAaqg7A="; + }; + + nativeBuildInputs = [ + makeWrapper + temurin-jre-bin + ]; + + dontBuild = true; + dontConfigure = true; + + unpackPhase = '' + cp $src halo.jar + # Extract the jar file. + # Because jar vs extract, jar startup time is 4s slower than extract. + java -Djarmode=tools -jar halo.jar extract --layers --launcher + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/share/halo + find halo -type d -empty -delete + for target in halo/*; do + cp -r $target/* $out/share/halo + done + + # 'HALO_WORK_DIR' + # Set the working directory for halo, then plug-ins and other content will be stored in this directory. + # Note: that the '/' symbol is not required at the end of the path. + # default: /var/lib/halo + # 'JVM_OPTS' + # Note: 'apache.lucene' requires us to set HotspotVMOptions. + # You can override this via environment variables. + # default: -Xms256m -Xmx256m + # 'SPRING_CONFIG_LOCATION' + # Note: 'spring.config.location' is used to specify the configuration file location. + # Warning: This variable is based on "HALO_WORK_DIR", you do not need and should not set or override it. + mkdir -p $out/bin + makeWrapper ${temurin-jre-bin}/bin/java $out/bin/halo \ + --chdir $out/share/halo \ + --set-default HALO_WORK_DIR "/var/lib/halo" \ + --set-default JVM_OPTS "-Xms256m -Xmx256m" \ + --set SPRING_CONFIG_LOCATION "optional:classpath:/;optional:file:\`\$HALO_WORK_DIR\`/" \ + --add-flags "-server \$JVM_OPTS" \ + --add-flags "org.springframework.boot.loader.launch.JarLauncher" + + runHook postInstall + ''; + + meta = { + homepage = "https://www.halo.run"; + description = "Self-hosted dynamic blogging program"; + maintainers = with lib.maintainers; [ yah ]; + license = lib.licenses.gpl3Only; + platforms = [ "aarch64-linux" "x86_64-linux" ]; + mainProgram = "halo"; + sourceProvenance = with lib.sourceTypes; [ binaryBytecode ]; + }; +} diff --git a/pkgs/by-name/ha/handheld-daemon/package.nix b/pkgs/by-name/ha/handheld-daemon/package.nix index 246e3879bb5cf..ec24637dde3f7 100644 --- a/pkgs/by-name/ha/handheld-daemon/package.nix +++ b/pkgs/by-name/ha/handheld-daemon/package.nix @@ -9,14 +9,14 @@ }: python3.pkgs.buildPythonApplication rec { pname = "handheld-daemon"; - version = "2.6.4"; + version = "2.7.2"; pyproject = true; src = fetchFromGitHub { owner = "hhd-dev"; repo = "hhd"; rev = "v${version}"; - hash = "sha256-S77APtE1GGfqnv1IkZdJOSlprPOBtrqVXV60yVMvopg="; + hash = "sha256-jWLL1nmKam1iJ1R1l/OuIp+isgZ7toRhVamx1nOID/8="; }; propagatedBuildInputs = with python3.pkgs; [ diff --git a/pkgs/by-name/ha/hare/003-hardcode-qbe-and-harec.patch b/pkgs/by-name/ha/hare/003-hardcode-qbe-and-harec.patch new file mode 100644 index 0000000000000..808d75aeb1850 --- /dev/null +++ b/pkgs/by-name/ha/hare/003-hardcode-qbe-and-harec.patch @@ -0,0 +1,24 @@ +diff --git a/cmd/hare/build.ha b/cmd/hare/build.ha +index b2ac6518..417b46c6 100644 +--- a/cmd/hare/build.ha ++++ b/cmd/hare/build.ha +@@ -37,7 +37,7 @@ fn build(name: str, cmd: *getopt::command) (void | error) = { + case let ncpu: size => + yield ncpu; + }, +- version = build::get_version(os::tryenv("HAREC", "harec"))?, ++ version = build::get_version(os::tryenv("HAREC", "@harec@"))?, + arch = arch.qbe_name, + platform = build::get_platform(os::sysname())?, + ... +@@ -145,8 +145,8 @@ fn build(name: str, cmd: *getopt::command) (void | error) = { + set_arch_tags(&ctx.ctx.tags, arch); + + ctx.cmds = ["", +- os::tryenv("HAREC", "harec"), +- os::tryenv("QBE", "qbe"), ++ os::tryenv("HAREC", "@harec@"), ++ os::tryenv("QBE", "@qbe@"), + os::tryenv("AS", arch.as_cmd), + os::tryenv("LD", arch.ld_cmd), + ]; diff --git a/pkgs/by-name/ha/hare/003-use-mailcap-for-mimetypes.patch b/pkgs/by-name/ha/hare/003-use-mailcap-for-mimetypes.patch new file mode 100644 index 0000000000000..fad17d12cb9e3 --- /dev/null +++ b/pkgs/by-name/ha/hare/003-use-mailcap-for-mimetypes.patch @@ -0,0 +1,13 @@ +diff --git a/mime/system.ha b/mime/system.ha +index 73ff3496..42e7b640 100644 +--- a/mime/system.ha ++++ b/mime/system.ha +@@ -11,7 +11,7 @@ use strings; + use types; + + // Path to the system MIME database. +-export def SYSTEM_DB: str = "/etc/mime.types"; ++export def SYSTEM_DB: str = "@mailcap@/etc/mime.types"; + + @init fn init() void = { + // Done in a separate function so we can discard errors here diff --git a/pkgs/by-name/ha/hare/hook.nix b/pkgs/by-name/ha/hare/hook.nix new file mode 100644 index 0000000000000..ef8fc0219e9ef --- /dev/null +++ b/pkgs/by-name/ha/hare/hook.nix @@ -0,0 +1,56 @@ +{ + hare, + lib, + makeSetupHook, + makeWrapper, + runCommand, + stdenv, + writeShellApplication, +}: +let + arch = stdenv.targetPlatform.uname.processor; + harePropagationInputs = builtins.attrValues { inherit (hare) harec qbe; }; + hareWrappedScript = writeShellApplication { + # `name` MUST be `hare`, since its role is to replace the hare binary. + name = "hare"; + runtimeInputs = [ hare ]; + excludeShellChecks = [ "SC2086" ]; + # ''${cmd:+"$cmd"} is used on the default case to keep the same behavior as + # the hare binary: If "$cmd" is passed directly and it's empty, the hare + # binary will treat it as an unrecognized command. + text = '' + readonly cmd="$1" + shift + case "$cmd" in + "test"|"run"|"build") exec hare "$cmd" $NIX_HAREFLAGS "$@" ;; + *) exec hare ''${cmd:+"$cmd"} "$@" + esac + ''; + }; + hareWrapper = runCommand "hare-wrapper" { nativeBuildInputs = [ makeWrapper ]; } '' + mkdir -p $out/bin + install ${lib.getExe hareWrappedScript} $out/bin/hare + makeWrapper ${lib.getExe hare} $out/bin/hare-native \ + --inherit-argv0 \ + --unset AR \ + --unset LD \ + --unset CC + ''; +in +makeSetupHook { + name = "hare-hook"; + # The propagation of `qbe` and `harec` (harePropagationInputs) is needed for + # build frameworks like `haredo`, which set the HAREC and QBE env vars to + # `harec` and `qbe` respectively. We use the derivations from the `hare` + # package to assure that there's no different behavior between the `hareHook` + # and `hare` packages. + propagatedBuildInputs = [ hareWrapper ] ++ harePropagationInputs; + substitutions = { + hare_unconditional_flags = "-q -a${arch}"; + hare_stdlib = "${hare}/src/hare/stdlib"; + }; + meta = { + description = "Setup hook for the Hare compiler"; + inherit (hare.meta) badPlatforms platforms; + }; +} ./setup-hook.sh diff --git a/pkgs/by-name/ha/hare/mime-module-test.nix b/pkgs/by-name/ha/hare/mime-module-test.nix new file mode 100644 index 0000000000000..073ae09e35570 --- /dev/null +++ b/pkgs/by-name/ha/hare/mime-module-test.nix @@ -0,0 +1,28 @@ +{ + hare, + runCommandNoCC, + writeText, +}: +let + mainDotHare = writeText "main.ha" '' + use fmt; + use mime; + export fn main() void = { + const ext = "json"; + match(mime::lookup_ext(ext)) { + case let mime: const *mime::mimetype => + fmt::printfln("Found mimetype for extension `{}`: {}", ext, mime.mime)!; + case null => + fmt::fatalf("Could not find mimetype for `{}`", ext); + }; + }; + ''; +in +runCommandNoCC "mime-module-test" { nativeBuildInputs = [ hare ]; } '' + HARECACHE="$(mktemp -d)" + export HARECACHE + readonly binout="test-bin" + hare build -qRo "$binout" ${mainDotHare} + ./$binout + : 1>$out +'' diff --git a/pkgs/by-name/ha/hare/package.nix b/pkgs/by-name/ha/hare/package.nix index 49e4d91db7f5a..80c30e89a2b6c 100644 --- a/pkgs/by-name/ha/hare/package.nix +++ b/pkgs/by-name/ha/hare/package.nix @@ -1,71 +1,89 @@ -{ lib -, stdenv -, fetchFromSourcehut -, binutils-unwrapped -, harec -, makeWrapper -, qbe -, gitUpdater -, scdoc -, tzdata -, substituteAll -, fetchpatch -, callPackage -, enableCrossCompilation ? (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.is64bit) -, pkgsCross -, x86_64PkgsCrossToolchain ? pkgsCross.gnu64 -, aarch64PkgsCrossToolchain ? pkgsCross.aarch64-multiplatform -, riscv64PkgsCrossToolchain ? pkgsCross.riscv64 +{ + lib, + stdenv, + fetchFromSourcehut, + harec, + gitUpdater, + scdoc, + tzdata, + mailcap, + substituteAll, + fetchpatch, + callPackage, + enableCrossCompilation ? (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.is64bit), + pkgsCross, + x86_64PkgsCrossToolchain ? pkgsCross.gnu64, + aarch64PkgsCrossToolchain ? pkgsCross.aarch64-multiplatform, + riscv64PkgsCrossToolchain ? pkgsCross.riscv64, }: # There's no support for `aarch64` or `riscv64` for freebsd nor for openbsd on nix. # See `lib.systems.doubles.aarch64` and `lib.systems.doubles.riscv64`. -assert let - inherit (stdenv.hostPlatform) isLinux is64bit; - inherit (lib) intersectLists platforms concatStringsSep; - workingPlatforms = intersectLists platforms.linux (with platforms; x86_64 ++ aarch64 ++ riscv64); -in -(enableCrossCompilation -> !(isLinux && is64bit)) +assert + let + inherit (stdenv.hostPlatform) isLinux is64bit; + inherit (lib) intersectLists platforms concatStringsSep; + workingPlatforms = intersectLists platforms.linux (with platforms; x86_64 ++ aarch64 ++ riscv64); + in + (enableCrossCompilation -> !(isLinux && is64bit)) -> builtins.throw '' - The cross-compilation toolchains may only be enabled on the following platforms: - ${concatStringsSep "\n" workingPlatforms} -''; + The cross-compilation toolchains may only be enabled on the following platforms: + ${concatStringsSep "\n" workingPlatforms} + ''; let + inherit (harec) qbe; + buildArch = stdenv.buildPlatform.uname.processor; arch = stdenv.hostPlatform.uname.processor; - qbePlatform = { - x86_64 = "amd64_sysv"; - aarch64 = "arm64"; - riscv64 = "rv64"; - }.${arch}; platform = lib.toLower stdenv.hostPlatform.uname.system; + qbePlatform = + { + x86_64 = "amd64_sysv"; + aarch64 = "arm64"; + riscv64 = "rv64"; + } + .${arch}; embeddedOnBinaryTools = let - genToolsFromToolchain = toolchain: + genPaths = + toolchain: let - crossTargetPrefix = toolchain.stdenv.cc.targetPrefix; - toolchainArch = toolchain.stdenv.hostPlatform.uname.processor; - absOrRelPath = toolDrv: toolBasename: - if arch == toolchainArch then toolBasename - else lib.getExe' toolDrv "${crossTargetPrefix}${toolBasename}"; + inherit (toolchain.stdenv.cc) targetPrefix; + inherit (toolchain.stdenv.targetPlatform.uname) processor; in { - "ld" = absOrRelPath toolchain.buildPackages.binutils "ld"; - "as" = absOrRelPath toolchain.buildPackages.binutils "as"; - "cc" = absOrRelPath toolchain.stdenv.cc "cc"; + "${processor}" = { + "ld" = lib.getExe' toolchain.buildPackages.binutils "${targetPrefix}ld"; + "as" = lib.getExe' toolchain.buildPackages.binutils "${targetPrefix}as"; + "cc" = lib.getExe' toolchain.stdenv.cc "${targetPrefix}cc"; + }; }; in - { - x86_64 = genToolsFromToolchain x86_64PkgsCrossToolchain; - aarch64 = genToolsFromToolchain aarch64PkgsCrossToolchain; - riscv64 = genToolsFromToolchain riscv64PkgsCrossToolchain; - }; + builtins.foldl' (acc: elem: acc // (genPaths elem)) { } [ + x86_64PkgsCrossToolchain + aarch64PkgsCrossToolchain + riscv64PkgsCrossToolchain + ]; + crossCompMakeFlags = builtins.filter (x: !(lib.hasPrefix (lib.toUpper buildArch) x)) [ + "RISCV64_AS=${embeddedOnBinaryTools.riscv64.as}" + "RISCV64_CC=${embeddedOnBinaryTools.riscv64.cc}" + "RISCV64_LD=${embeddedOnBinaryTools.riscv64.ld}" + "AARCH64_AS=${embeddedOnBinaryTools.aarch64.as}" + "AARCH64_CC=${embeddedOnBinaryTools.aarch64.cc}" + "AARCH64_LD=${embeddedOnBinaryTools.aarch64.ld}" + "X86_64_AS=${embeddedOnBinaryTools.x86_64.as}" + "X86_64_CC=${embeddedOnBinaryTools.x86_64.cc}" + "X86_64_LD=${embeddedOnBinaryTools.x86_64.ld}" + ]; in stdenv.mkDerivation (finalAttrs: { pname = "hare"; version = "0.24.0"; - outputs = [ "out" "man" ]; + outputs = [ + "out" + "man" + ]; src = fetchFromSourcehut { owner = "~sircmpwn"; @@ -88,20 +106,33 @@ stdenv.mkDerivation (finalAttrs: { # Don't build haredoc since it uses the build `hare` bin, which breaks # cross-compilation. ./002-dont-build-haredoc.patch + # Hardcode harec and qbe. + (substituteAll { + src = ./003-hardcode-qbe-and-harec.patch; + harec = lib.getExe harec; + qbe = lib.getExe qbe; + }) + # Display toolchains when using `hare version -v`. + (fetchpatch { + url = "https://git.sr.ht/~sircmpwn/hare/commit/e35f2284774436f422e06f0e8d290b173ced1677.patch"; + hash = "sha256-A59bGO/9tOghV8/MomTxd8xRExkHVdoMom2d+HTfQGg="; + }) + # Use mailcap `/etc/mime.types` for Hare's mime module + (substituteAll { + src = ./003-use-mailcap-for-mimetypes.patch; + inherit mailcap; + }) ]; nativeBuildInputs = [ harec - makeWrapper qbe scdoc ]; buildInputs = [ - binutils-unwrapped harec qbe - tzdata ]; makeFlags = [ @@ -110,23 +141,15 @@ stdenv.mkDerivation (finalAttrs: { "ARCH=${arch}" "VERSION=${finalAttrs.version}-nixpkgs" "QBEFLAGS=-t${qbePlatform}" - "CC=${stdenv.cc.targetPrefix}cc" "AS=${stdenv.cc.targetPrefix}as" "LD=${stdenv.cc.targetPrefix}ld" + "${lib.toUpper buildArch}_AS=${embeddedOnBinaryTools.${buildArch}.as}" + "${lib.toUpper buildArch}_CC=${embeddedOnBinaryTools.${buildArch}.cc}" + "${lib.toUpper buildArch}_LD=${embeddedOnBinaryTools.${buildArch}.ld}" # Strip the variable of an empty $(SRCDIR)/hare/third-party, since nix does # not follow the FHS. "HAREPATH=$(SRCDIR)/hare/stdlib" - ] ++ lib.optionals enableCrossCompilation [ - "RISCV64_AS=${embeddedOnBinaryTools.riscv64.as}" - "RISCV64_CC=${embeddedOnBinaryTools.riscv64.cc}" - "RISCV64_LD=${embeddedOnBinaryTools.riscv64.ld}" - "AARCH64_AS=${embeddedOnBinaryTools.aarch64.as}" - "AARCH64_CC=${embeddedOnBinaryTools.aarch64.cc}" - "AARCH64_LD=${embeddedOnBinaryTools.aarch64.ld}" - "x86_64_AS=${embeddedOnBinaryTools.x86_64.as}" - "x86_64_CC=${embeddedOnBinaryTools.x86_64.cc}" - "x86_64_LD=${embeddedOnBinaryTools.x86_64.ld}" - ]; + ] ++ lib.optionals enableCrossCompilation crossCompMakeFlags; enableParallelBuilding = true; @@ -141,20 +164,17 @@ stdenv.mkDerivation (finalAttrs: { ln -s configs/${platform}.mk config.mk ''; - postFixup = '' - wrapProgram $out/bin/hare \ - --prefix PATH : ${lib.makeBinPath [binutils-unwrapped harec qbe]} - ''; - - setupHook = ./setup-hook.sh; - passthru = { updateScript = gitUpdater { }; - tests = lib.optionalAttrs enableCrossCompilation { - crossCompilation = callPackage ./cross-compilation-tests.nix { - hare = finalAttrs.finalPackage; + tests = + lib.optionalAttrs enableCrossCompilation { + crossCompilation = callPackage ./cross-compilation-tests.nix { hare = finalAttrs.finalPackage; }; + } + // lib.optionalAttrs (stdenv.buildPlatform.canExecute stdenv.hostPlatform) { + mimeModule = callPackage ./mime-module-test.nix { hare = finalAttrs.finalPackage; }; }; - }; + # To be propagated by `hareHook`. + inherit harec qbe; }; meta = { diff --git a/pkgs/by-name/ha/hare/setup-hook.sh b/pkgs/by-name/ha/hare/setup-hook.sh index d2d2c34354d65..3a427fd70328f 100644 --- a/pkgs/by-name/ha/hare/setup-hook.sh +++ b/pkgs/by-name/ha/hare/setup-hook.sh @@ -1,9 +1,36 @@ -addHarepath () { - for haredir in third-party stdlib; do - if [[ -d "$1/src/hare/$haredir" ]]; then - addToSearchPath HAREPATH "$1/src/hare/$haredir" - fi - done +# shellcheck disable=SC2154,SC2034,SC2016 + +addHarepath() { + local -r thirdparty="${1-}/src/hare/third-party" + if [[ -d "$thirdparty" ]]; then + addToSearchPath HAREPATH "$thirdparty" + fi } +# Hare's stdlib should come after its third party libs, since the latter may +# expand or shadow the former. +readonly hareSetStdlibPhase=' +addToSearchPath HAREPATH "@hare_stdlib@" +' +readonly hareInfoPhase=' +echoCmd "HARECACHE" "$HARECACHE" +echoCmd "HAREPATH" "$HAREPATH" +echoCmd "hare" "$(command -v hare)" +echoCmd "hare-native" "$(command -v hare-native)" +' +prePhases+=("hareSetStdlibPhase" "hareInfoPhase") + +readonly hare_unconditional_flags="@hare_unconditional_flags@" +case "${hareBuildType:-"release"}" in +"release") export NIX_HAREFLAGS="-R $hare_unconditional_flags" ;; +"debug") export NIX_HAREFLAGS="$hare_unconditional_flags" ;; +*) + printf -- 'Invalid hareBuildType: "%s"\n' "${hareBuildType-}" + exit 1 + ;; +esac + +HARECACHE="$(mktemp -d)" +export HARECACHE + addEnvHooks "$hostOffset" addHarepath diff --git a/pkgs/by-name/ha/harec/package.nix b/pkgs/by-name/ha/harec/package.nix index e95ad7ed7095f..f0534064be3c8 100644 --- a/pkgs/by-name/ha/harec/package.nix +++ b/pkgs/by-name/ha/harec/package.nix @@ -1,17 +1,20 @@ -{ lib -, stdenv -, fetchFromSourcehut -, qbe -, gitUpdater +{ + fetchFromSourcehut, + gitUpdater, + lib, + qbe, + stdenv, }: let platform = lib.toLower stdenv.hostPlatform.uname.system; arch = stdenv.hostPlatform.uname.processor; - qbePlatform = { - x86_64 = "amd64_sysv"; - aarch64 = "arm64"; - riscv64 = "rv64"; - }.${arch}; + qbePlatform = + { + x86_64 = "amd64_sysv"; + aarch64 = "arm64"; + riscv64 = "rv64"; + } + .${arch}; in stdenv.mkDerivation (finalAttrs: { pname = "harec"; @@ -24,13 +27,9 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-NOfoCT/wKZ3CXYzXZq7plXcun+MXQicfzBOmetXN7Qs="; }; - nativeBuildInputs = [ - qbe - ]; + nativeBuildInputs = [ qbe ]; - buildInputs = [ - qbe - ]; + buildInputs = [ qbe ]; makeFlags = [ "PREFIX=${builtins.placeholder "out"}" @@ -54,6 +53,8 @@ stdenv.mkDerivation (finalAttrs: { passthru = { updateScript = gitUpdater { }; + # To be kept in sync with the hare package. + inherit qbe; }; meta = { @@ -65,7 +66,8 @@ stdenv.mkDerivation (finalAttrs: { # The upstream developers do not like proprietary operating systems; see # https://harelang.org/platforms/ # UPDATE: https://github.com/hshq/harelang provides a MacOS port - platforms = with lib.platforms; + platforms = + with lib.platforms; lib.intersectLists (freebsd ++ openbsd ++ linux) (aarch64 ++ x86_64 ++ riscv64); badPlatforms = lib.platforms.darwin; }; diff --git a/pkgs/by-name/ha/haredo/001-use-nix-store-sh.patch b/pkgs/by-name/ha/haredo/001-use-nix-store-sh.patch new file mode 100644 index 0000000000000..4bd6507d7ea45 --- /dev/null +++ b/pkgs/by-name/ha/haredo/001-use-nix-store-sh.patch @@ -0,0 +1,20 @@ +diff --git a/src/haredo.ha b/src/haredo.ha +index c2e56e6..304c9ad 100644 +--- a/src/haredo.ha ++++ b/src/haredo.ha +@@ -280,12 +280,12 @@ fn try_do( + const tmpfilepath = strings::concat(ctx.tmpdir, "/", tmpfilename); + + const cmd = if (ctx.verbose) { +- fmt::errorln("* sh -ev", dopaths.do, dopaths.target, ++ fmt::errorln("* @bash@/bin/sh -ev", dopaths.do, dopaths.target, + dopaths.basename, tmpfilepath)?; +- yield exec::cmd("sh", "-ev", dopaths.do, dopaths.target, ++ yield exec::cmd("@bash@/bin/sh", "-ev", dopaths.do, dopaths.target, + dopaths.basename, tmpfilepath)?; + } else { +- yield exec::cmd("sh", "-e", dopaths.do, dopaths.target, ++ yield exec::cmd("@bash@/bin/sh", "-e", dopaths.do, dopaths.target, + dopaths.basename, tmpfilepath)?; + }; + diff --git a/pkgs/by-name/ha/haredo/package.nix b/pkgs/by-name/ha/haredo/package.nix index e31ae96c7832d..a6ef926c85b99 100644 --- a/pkgs/by-name/ha/haredo/package.nix +++ b/pkgs/by-name/ha/haredo/package.nix @@ -1,17 +1,22 @@ -{ stdenv -, lib -, fetchFromSourcehut -, hare -, scdoc -, nix-update-script -, makeWrapper -, bash +{ + stdenv, + lib, + fetchFromSourcehut, + hareHook, + scdoc, + nix-update-script, + makeWrapper, + bash, + substituteAll, }: stdenv.mkDerivation (finalAttrs: { pname = "haredo"; version = "1.0.5"; - outputs = [ "out" "man" ]; + outputs = [ + "out" + "man" + ]; src = fetchFromSourcehut { owner = "~autumnull"; @@ -20,28 +25,33 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-gpui5FVRw3NKyx0AB/4kqdolrl5vkDudPOgjHc/IE4U="; }; + patches = [ + # Use nix store's bash instead of sh. `@bash@/bin/sh` is used, since haredo expects a posix shell. + (substituteAll { + src = ./001-use-nix-store-sh.patch; + inherit bash; + }) + ]; + nativeBuildInputs = [ - hare + hareHook makeWrapper scdoc ]; enableParallelChecking = true; - doCheck = true; + env.PREFIX = builtins.placeholder "out"; - dontConfigure = true; + doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; - preBuild = '' - HARECACHE="$(mktemp -d --tmpdir harecache.XXXXXXXX)" - export HARECACHE - export PREFIX=${builtins.placeholder "out"} - ''; + dontConfigure = true; buildPhase = '' runHook preBuild - ./bootstrap.sh + hare build -o bin/haredo ./src + scdoc <doc/haredo.1.scd >doc/haredo.1 runHook postBuild ''; @@ -57,26 +67,24 @@ stdenv.mkDerivation (finalAttrs: { installPhase = '' runHook preInstall - ./bootstrap.sh install + mkdir -p $out/bin + mkdir -p $out/share/man/man1 + cp ./bin/haredo $out/bin + cp ./doc/haredo.1 $out/share/man/man1 runHook postInstall ''; - postFixup = '' - wrapProgram $out/bin/haredo \ - --prefix PATH : "${lib.makeBinPath [bash]}" - ''; - setupHook = ./setup-hook.sh; passthru.updateScript = nix-update-script { }; meta = { - description = "A simple and unix-idiomatic build automator"; + description = "Simple and unix-idiomatic build automator"; homepage = "https://sr.ht/~autumnull/haredo/"; license = lib.licenses.wtfpl; maintainers = with lib.maintainers; [ onemoresuza ]; mainProgram = "haredo"; - inherit (hare.meta) platforms badPlatforms; + inherit (hareHook.meta) platforms badPlatforms; }; }) diff --git a/pkgs/by-name/ha/haredoc/package.nix b/pkgs/by-name/ha/haredoc/package.nix index 2476e7d937c50..773b226316aee 100644 --- a/pkgs/by-name/ha/haredoc/package.nix +++ b/pkgs/by-name/ha/haredoc/package.nix @@ -1,33 +1,31 @@ -{ lib -, stdenv -, scdoc -, hare +{ + lib, + stdenv, + scdoc, + hare, + hareHook, }: -let - arch = stdenv.hostPlatform.uname.processor; -in stdenv.mkDerivation { pname = "haredoc"; - outputs = [ "out" "man" ]; + outputs = [ + "out" + "man" + ]; inherit (hare) version src; - strictDeps = true; - enableParallelBuilding = true; - nativeBuildInputs = [ scdoc - hare + hareHook ]; - preBuild = '' - HARECACHE="$(mktemp -d)" - export HARECACHE - ''; + strictDeps = true; + + enableParallelBuilding = true; buildPhase = '' runHook preBuild - hare build -qR -a ${arch} -o haredoc ./cmd/haredoc + hare build -o haredoc ./cmd/haredoc scdoc <docs/haredoc.1.scd >haredoc.1 scdoc <docs/haredoc.5.scd >haredoc.5 @@ -50,6 +48,6 @@ stdenv.mkDerivation { license = lib.licenses.gpl3Only; maintainers = with lib.maintainers; [ onemoresuza ]; mainProgram = "haredoc"; - inherit (hare.meta) platforms badPlatforms; + inherit (hareHook.meta) platforms badPlatforms; }; } diff --git a/pkgs/by-name/ha/harmonia/package.nix b/pkgs/by-name/ha/harmonia/package.nix new file mode 100644 index 0000000000000..a8f4c4b09d6bb --- /dev/null +++ b/pkgs/by-name/ha/harmonia/package.nix @@ -0,0 +1,52 @@ +{ lib +, boost +, fetchFromGitHub +, libsodium +, nixVersions +, pkg-config +, rustPlatform +, stdenv +, nix-update-script +, nixosTests +}: + +rustPlatform.buildRustPackage rec { + pname = "harmonia"; + version = "0.8.0"; + + src = fetchFromGitHub { + owner = "nix-community"; + repo = pname; + rev = "refs/tags/${pname}-v${version}"; + hash = "sha256-+V0V/l9Q7HR3J0aH1UWc1qHrpGiRWd6B4R+3MECFORg="; + }; + + cargoHash = "sha256-3Nx1YXjbYVOD7pYgI9Cp5Vsxv1j1XeX6pCl4+Q1OtVs="; + + doCheck = false; + + nativeBuildInputs = [ + pkg-config nixVersions.nix_2_21 + ]; + + buildInputs = [ + boost + libsodium + nixVersions.nix_2_21 + ]; + + passthru = { + updateScript = nix-update-script { + extraArgs = [ "--version-regex" "harmonia-v(.*)" ]; + }; + tests = { inherit (nixosTests) harmonia; }; + }; + + meta = with lib; { + description = "Nix binary cache"; + homepage = "https://github.com/nix-community/harmonia"; + license = licenses.mit; + maintainers = with maintainers; [ mic92 ]; + mainProgram = "harmonia"; + }; +} diff --git a/pkgs/by-name/ha/hatch/package.nix b/pkgs/by-name/ha/hatch/package.nix new file mode 100644 index 0000000000000..c3c760abafec5 --- /dev/null +++ b/pkgs/by-name/ha/hatch/package.nix @@ -0,0 +1,91 @@ +{ lib +, stdenv +, fetchPypi +, python3 +, cargo +, git +, uv +}: + +python3.pkgs.buildPythonApplication rec { + pname = "hatch"; + version = "1.12.0"; + format = "pyproject"; + + src = fetchPypi { + inherit pname version; + hash = "sha256-roBHjRAxLfK0TWWck7wu1NM67N3OS3Y3gjG9+ByL9q0="; + }; + + nativeBuildInputs = with python3.pkgs; [ + hatchling + hatch-vcs + uv + ]; + + propagatedBuildInputs = with python3.pkgs; [ + click + hatchling + httpx + hyperlink + keyring + packaging + pexpect + platformdirs + rich + shellingham + tomli-w + tomlkit + userpath + virtualenv + zstandard + ]; + + nativeCheckInputs = [ + cargo + ] ++ (with python3.pkgs; [ + binary + git + pytestCheckHook + pytest-mock + pytest-xdist + setuptools + ]); + + preCheck = '' + export HOME=$(mktemp -d); + ''; + + disabledTests = [ + # AssertionError: assert (1980, 1, 2, 0, 0, 0) == (2020, 2, 2, 0, 0, 0) + "test_default" + # Loosen hatchling runtime version dependency + "test_core" + # New failing + "test_guess_variant" + "test_open" + "test_no_open" + "test_uv_env" + "test_pyenv" + "test_pypirc" + ] ++ lib.optionals stdenv.isDarwin [ + # https://github.com/NixOS/nixpkgs/issues/209358 + "test_scripts_no_environment" + + # This test assumes it is running on macOS with a system shell on the PATH. + # It is not possible to run it in a nix build using a /nix/store shell. + # See https://github.com/pypa/hatch/pull/709 for the relevant code. + "test_populate_default_popen_kwargs_executable" + ] ++ lib.optionals stdenv.isAarch64 [ + "test_resolve" + ]; + + meta = with lib; { + description = "Modern, extensible Python project manager"; + mainProgram = "hatch"; + homepage = "https://hatch.pypa.io/latest/"; + changelog = "https://github.com/pypa/hatch/blob/hatch-v${version}/docs/history/hatch.md"; + license = licenses.mit; + maintainers = with maintainers; [ onny ]; + }; +} diff --git a/pkgs/by-name/ha/hatsu/package.nix b/pkgs/by-name/ha/hatsu/package.nix new file mode 100644 index 0000000000000..65759ec9ec3f7 --- /dev/null +++ b/pkgs/by-name/ha/hatsu/package.nix @@ -0,0 +1,40 @@ +{ cmake +, fetchFromGitHub +, gitUpdater +, lib +, openssl +, pkg-config +, rustPlatform +}: +rustPlatform.buildRustPackage rec { + pname = "hatsu"; + version = "0.2.1"; + + src = fetchFromGitHub { + owner = "importantimport"; + repo = "hatsu"; + rev = "v${version}"; + hash = "sha256-4x41Ez2Rq4Bs39LN4qRluDieHx+9bS+GCjvS/cQK84Y="; + }; + + cargoHash = "sha256-hOQ8/m4TY18ZFmLFxxnXUX1yr52tKNmebx6H0uIIGUo="; + + nativeBuildInputs = [ cmake pkg-config ]; + buildInputs = [ openssl ]; + + env = { OPENSSL_NO_VENDOR = true; }; + + passthru.updateScript = gitUpdater { + rev-prefix = "v"; + ignoredVersions = "beta"; + }; + + meta = { + description = "Self-hosted and fully-automated ActivityPub bridge for static sites"; + homepage = "https://github.com/importantimport/hatsu"; + license = lib.licenses.agpl3Only; + mainProgram = "hatsu"; + maintainers = with lib.maintainers; [ kwaa ]; + platforms = lib.platforms.linux; + }; +} diff --git a/pkgs/by-name/ha/havn/package.nix b/pkgs/by-name/ha/havn/package.nix new file mode 100644 index 0000000000000..81f0f37190fe5 --- /dev/null +++ b/pkgs/by-name/ha/havn/package.nix @@ -0,0 +1,37 @@ +{ + lib, + fetchFromGitHub, + rustPlatform, +}: + +rustPlatform.buildRustPackage rec { + pname = "havn"; + version = "0.1.12"; + + src = fetchFromGitHub { + owner = "mrjackwills"; + repo = "havn"; + rev = "refs/tags/v${version}"; + hash = "sha256-BCg572435CdQMOldm3Ao4D+sDxbXUlDxMWmxa+aqTY0="; + }; + + cargoHash = "sha256-JaAlWiaOUoXSV6O4wmU7zCR5h5olO2zkB5WEGk2/ZdE="; + + checkFlags = [ + # Skip tests that require network access + "--skip=scanner::tests::test_scanner_1000_80_443" + "--skip=scanner::tests::test_scanner_all_80" + "--skip=scanner::tests::test_scanner_port_80" + "--skip=terminal::print::tests::test_terminal_monochrome_false" + ]; + + meta = { + homepage = "https://github.com/mrjackwills/havn"; + description = "Fast configurable port scanner with reasonable defaults"; + changelog = "https://github.com/mrjackwills/havn/blob/v${version}/CHANGELOG.md"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ luftmensch-luftmensch ]; + mainProgram = "havn"; + platforms = lib.platforms.linux; + }; +} diff --git a/pkgs/by-name/ha/havoc/package.nix b/pkgs/by-name/ha/havoc/package.nix index ed9f77ec56562..b37550240386e 100644 --- a/pkgs/by-name/ha/havoc/package.nix +++ b/pkgs/by-name/ha/havoc/package.nix @@ -46,7 +46,7 @@ stdenv.mkDerivation (finalAttrs: { meta = { homepage = "https://github.com/ii8/havoc"; - description = "A minimal terminal emulator for Wayland"; + description = "Minimal terminal emulator for Wayland"; license = with lib.licenses; [ mit publicDomain ]; mainProgram = "havoc"; maintainers = with lib.maintainers; [ AndersonTorres ]; diff --git a/pkgs/by-name/ha/hayabusa/package.nix b/pkgs/by-name/ha/hayabusa/package.nix index c8064e982c4c0..ed7487766bbab 100644 --- a/pkgs/by-name/ha/hayabusa/package.nix +++ b/pkgs/by-name/ha/hayabusa/package.nix @@ -40,7 +40,7 @@ rustPlatform.buildRustPackage { ''; meta = { - description = "A swift rust fetch program"; + description = "Swift rust fetch program"; homepage = "https://github.com/notarin/hayabusa"; license = lib.licenses.cc-by-nc-nd-40; maintainers = with lib.maintainers; [ eclairevoyant ]; |