#1122839 please package the new upstream version

Package:
hyfetch
Source:
hyfetch
Submitter:
Johannes Schauer Marin Rodrigues
Date:
2026-02-02 18:27:02 UTC
Severity:
normal
#1122839#5
Date:
2025-12-12 23:17:14 UTC
From:
To:
Hi Cat and thank you for maintaining hyfetch!

After filing my other bugs I found out that hyfetch was rewritten in
Rust and my other bugs maybe do not even apply anymore once the new
upstream version is packaged. So I looked into doing that and saw in my
IRC logs that you asked in #debian-rust how to best package this back in
September 2025.

I tried to create a proof-of-concept and attached a possible patch to
the end of this mail. For this to work the rust crate called bpaf needs
to be packaged first. Unfortunately I ran into issues with that and am
still waiting for somebody in #debian-rust to help me with it.

Nevertheless, since I'll be quite busy in the coming days, I thought I
better dump what I have here so that it does not get lost. Feel free to
do with it whatever you like. Maybe (hopefully) I come back to it and
finish it up.

Thanks!

cheers, josch


From cd26f4e054cebbed99f398d2116edbc6cb002794 Mon Sep 17 00:00:00 2001
From: Johannes Schauer Marin Rodrigues <josch@mister-muffin.de>
Date: Sat, 13 Dec 2025 00:14:05 +0100
Subject: [PATCH] wip
---
 debian/changelog                |   5 ++
 debian/control                  |  74 +++++++++++++++++
 debian/patches/relax-deps.patch | 143 ++++++++++++++++++++++++++++++++
 debian/patches/series           |   1 +
 debian/rules                    |  30 +++++++
 debian/source/format            |   1 +
 6 files changed, 254 insertions(+)
 create mode 100644 debian/changelog
 create mode 100644 debian/control
 create mode 100644 debian/patches/relax-deps.patch
 create mode 100644 debian/patches/series
 create mode 100755 debian/rules
 create mode 100644 debian/source/format

diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 00000000..d3a6aaf2
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,5 @@
+hyfetch (2.0.5-1) UNRELEASED; urgency=medium
+
+  * Initial release. (Closes: #XXXXXX)
+
+ -- Johannes Schauer Marin Rodrigues <josch@debian.org>  Fri, 12 Dec 2025 13:45:35 +0100
diff --git a/debian/control b/debian/control
new file mode 100644
index 00000000..e8a8176e
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,74 @@
+Source: hyfetch
+Section: utils
+Priority: optional
+Maintainer: Cat Kasin <cat@auluyca.gay>
+Build-Depends:
+ debhelper-compat (= 13),
+ bash-completion,
+ dh-exec,
+ dh-python,
+ dh-sequence-bash-completion,
+ python3,
+ python3-setuptools,
+ cargo:native,
+ dh-cargo (>= 25),
+ rustc:native,
+ libstd-rust-dev,
+ librust-indexmap-dev,
+ librust-regex-dev,
+ librust-unicode-normalization-dev,
+ librust-fs-extra-dev,
+ librust-serde-dev,
+ librust-serde-json-dev,
+ librust-anyhow-dev,
+ librust-heck-dev,
+ librust-shell-words-dev,
+ librust-deranged-dev,
+ librust-tempfile-dev,
+ librust-aho-corasick-dev,
+ librust-crossterm-dev,
+ librust-ansi-colours-dev,
+ librust-terminal-size-dev,
+ librust-thiserror-dev,
+ librust-which-dev,
+ librust-directories-dev,
+ librust-itertools-dev,
+ librust-palette-dev,
+ librust-unicode-segmentation-dev,
+ librust-tracing-dev,
+ librust-strum-dev,
+Standards-Version: 4.7.0
+Vcs-Git: https://salsa.debian.org/Catumin/hyfetch.git
+Vcs-Browser: https://salsa.debian.org/Catumin/hyfetch
+Homepage: https://github.com/hykilpikonna/hyfetch
+Rules-Requires-Root: no
+
+Package: hyfetch
+Architecture: any
+Depends:
+ ${python3:Depends},
+ ${misc:Depends},
+ neowofetch
+Recommends: pciutils
+Description: Command-line Tool that Presents System Info
+ HyFetch is a command line script to display information about
+ your Linux system, such as amount of installed packages, OS
+ and kernel version, active GTK theme, CPU info, and used/available
+ memory. It is a fork of neofetch, and adds pride flag coloration
+ to the OS logo.
+ .
+ Hyfetch also has the ability to integrate with other system info
+ tools, such as fastfetch, to use them to gather info that is then
+ displayed through hyfetch.
+
+Package: neowofetch
+Architecture: all
+Depends: ${misc:Depends}
+Multi-Arch: foreign
+Recommends: chafa, caca-utils, imagemagick, jp2a, libsixel-bin, w3m-img, pciutils
+Description: Shows Linux System Information with Distribution Logo
+ Neowofetch is a fork of Neofetch, the cross-platform and
+ easy-to-use system information command line script that collects
+ your Linux system information and displays it on the terminal
+ next to animage, either your distribution logo or any ascii art
+ of your choice.
diff --git a/debian/patches/relax-deps.patch b/debian/patches/relax-deps.patch
new file mode 100644
index 00000000..ea6ba0cf
--- /dev/null
+++ b/debian/patches/relax-deps.patch
@@ -0,0 +1,143 @@
+--- a/crates/hyfetch/Cargo.toml
++++ b/crates/hyfetch/Cargo.toml
+@@ -12,31 +12,31 @@ default-run = "hyfetch"
+ [dependencies]
+ aho-corasick = { workspace = true, features = ["perf-literal", "std"] }
+ ansi_colours = { workspace = true, features = [] }
+-anstream = { workspace = true, features = [], optional = true }
++#anstream = { workspace = true, features = [], optional = true }
+ anyhow = { workspace = true, features = ["std"] }
+-bpaf = { workspace = true, features = [] }
++#bpaf = { workspace = true, features = [] }
+ crossterm = { workspace = true, features = [] }
+ deranged = { workspace = true, features = ["serde", "std"] }
+ directories = { workspace = true, features = [] }
+-enterpolation = { workspace = true, features = ["bspline", "std"] }
+-fastrand = { workspace = true, features = ["std"] }
++#enterpolation = { workspace = true, features = ["bspline", "std"] }
++#fastrand = { workspace = true, features = ["std"] }
+ indexmap = { workspace = true, features = ["serde", "std"] }
+ itertools = { workspace = true, features = ["use_std"] }
+ palette = { workspace = true, features = ["std"] }
+ serde = { workspace = true, features = ["derive", "std"] }
+ serde_json = { workspace = true, features = ["std"] }
+-serde_path_to_error = { workspace = true, features = [] }
++#serde_path_to_error = { workspace = true, features = [] }
+ shell-words = { workspace = true, features = ["std"] }
+ strum = { workspace = true, features = ["derive", "std"] }
+-supports-color = { workspace = true, features = [] }
++#supports-color = { workspace = true, features = [] }
+ tempfile = { workspace = true, features = [] }
+-terminal-colorsaurus = { workspace = true, features = [] }
++#terminal-colorsaurus = { workspace = true, features = [] }
+ terminal_size = { workspace = true, features = [] }
+ thiserror = { workspace = true, features = [] }
+-time = { workspace = true, features = ["local-offset", "std"] }
+-toml_edit = { workspace = true, features = [], optional = true }
++#time = { workspace = true, features = ["local-offset", "std"] }
++#toml_edit = { workspace = true, features = [], optional = true }
+ tracing = { workspace = true, features = ["attributes", "std"] }
+-tracing-subscriber = { workspace = true, features = ["ansi", "fmt", "smallvec", "std", "tracing-log"] }
++#tracing-subscriber = { workspace = true, features = ["ansi", "fmt", "smallvec", "std", "tracing-log"] }
+ unicode-segmentation = { workspace = true, features = [] }
+ which = { workspace = true, features = [] }
+
+@@ -50,17 +50,18 @@ serde_json = { workspace = true, feature
+ anyhow = { workspace = true, features = ["std"] }
+ heck = "0.5.0"
+
+-[target.'cfg(windows)'.dependencies]
+-enable-ansi-support = { workspace = true, features = [] }
+-normpath = { workspace = true, features = [] }
+-same-file = { workspace = true, features = [] }
+-crossterm = { workspace = true, features = ["windows"] }
++#[target.'cfg(windows)'.dependencies]
++#enable-ansi-support = { workspace = true, features = [] }
++#normpath = { workspace = true, features = [] }
++#same-file = { workspace = true, features = [] }
++#crossterm = { workspace = true, features = ["windows"] }
+
+ [features]
+-default = ["autocomplete", "color", "macchina"]
+-autocomplete = ["bpaf/autocomplete"]
+-color = ["bpaf/dull-color"]
+-macchina = ["dep:anstream", "dep:toml_edit", "toml_edit/display"]
++default = []
++#default = ["autocomplete", "color", "macchina"]
++#autocomplete = ["bpaf/autocomplete"]
++#color = ["bpaf/dull-color"]
++#macchina = ["dep:anstream", "dep:toml_edit", "toml_edit/display"]
+
+ [lints]
+ workspace = true
+--- a/Cargo.toml
++++ b/Cargo.toml
+@@ -14,38 +14,38 @@ license = "MIT"
+ [workspace.dependencies]
+ aho-corasick = { version = "1.1.3", default-features = false }
+ ansi_colours = { version = "1.2.2", default-features = false }
+-anstream = { version = "0.6.14", default-features = false }
++#anstream = { version = "0.6.14", default-features = false }
+ anyhow = { version = "1.0.86", default-features = false }
+-bpaf = { version = "0.9.12", default-features = false }
+-crossterm = { version = "0.29.0", default-features = false }
++#bpaf = { version = "0.9.12", default-features = false }
++crossterm = { version = ">=0.28.0", default-features = false }
+ deranged = { version = "0.3.11", default-features = false }
+-directories = { version = "6.0.0", default-features = false }
+-enable-ansi-support = { version = "0.2.1", default-features = false }
+-enterpolation = { version = "0.2.1", default-features = false }
+-fastrand = { version = "2.1.0", default-features = false }
++directories = { version = ">=5.0.0", default-features = false }
++#enable-ansi-support = { version = "0.2.1", default-features = false }
++#enterpolation = { version = "0.2.1", default-features = false }
++#fastrand = { version = "2.1.0", default-features = false }
+ indexmap = { version = "2.2.6", default-features = false }
+-itertools = { version = "0.14.0", default-features = false }
+-normpath = { version = "1.2.0", default-features = false }
++itertools = { version = ">=0.13.0", default-features = false }
++#normpath = { version = "1.2.0", default-features = false }
+ palette = { version = "0.7.6", default-features = false }
+ regex = { version = "1.10.5", default-features = false }
+-same-file = { version = "1.0.6", default-features = false }
++#same-file = { version = "1.0.6", default-features = false }
+ serde = { version = "1.0.203", default-features = false }
+ serde_json = { version = "1.0.118", default-features = false }
+-serde_path_to_error = { version = "0.1.16", default-features = false }
++#serde_path_to_error = { version = "0.1.16", default-features = false }
+ shell-words = { version = "1.1.0", default-features = false }
+-strum = { version = "0.27.2", default-features = false }
+-supports-color = { version = "3.0.0", default-features = false }
++strum = { version = ">=0.26.0", default-features = false }
++#supports-color = { version = "3.0.0", default-features = false }
+ tempfile = { version = "3.10.1", default-features = false }
+-terminal-colorsaurus = { version = "1.0.0", default-features = false }
+-terminal_size = { version = "0.4.3", default-features = false }
++#terminal-colorsaurus = { version = "1.0.0", default-features = false }
++terminal_size = { version = ">=0.4.2", default-features = false }
+ thiserror = { version = "1.0.61", default-features = false }
+-time = { version = "0.3.36", default-features = false }
+-toml_edit = { version = "0.23.6", default-features = false }
++#time = { version = "0.3.36", default-features = false }
++#toml_edit = { version = "0.23.6", default-features = false }
+ tracing = { version = "0.1.40", default-features = false }
+-tracing-subscriber = { version = "0.3.18", default-features = false }
++#tracing-subscriber = { version = "0.3.18", default-features = false }
+ unicode-normalization = { version = "0.1.23", default-features = false }
+ unicode-segmentation = { version = "1.11.0", default-features = false }
+-which = { version = "7.0.1", default-features = false }
++which = { version = ">=7.0.1", default-features = false }
+
+ [workspace.lints.clippy]
+ arithmetic_side_effects = "warn"
+--- a/crates/hyfetch/src/neofetch_util.rs
++++ b/crates/hyfetch/src/neofetch_util.rs
+@@ -30,7 +30,7 @@ use strum::AsRefStr;
+ use toml_edit::{value, DocumentMut, Item, Table};
+ use tracing::debug;
+ use unicode_segmentation::UnicodeSegmentation as _;
+-use which::which;
++use which;
+ use crate::ascii::{RawAsciiArt, RecoloredAsciiArt};
+ use crate::color_util::{printc, NeofetchAsciiIndexedColor, PresetIndexedColor};
+ use crate::distros::Distro;
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 00000000..bdddf05a
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1 @@
+relax-deps.patch
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 00000000..6ea45b06
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,30 @@
+#!/usr/bin/make -f
+#
+# https://wiki.debian.org/Gnome/Rust_Packaging
+
+
+export DEB_BUILD_MAINT_OPTIONS = hardening=+all
+DPKG_EXPORT_BUILDFLAGS = 1
+include /usr/share/dpkg/default.mk
+include /usr/share/rustc/architecture.mk
+export DEB_HOST_RUST_TYPE
+export PATH:=/usr/share/cargo/bin:$(PATH)
+export CARGO=/usr/share/cargo/bin/cargo
+export CARGO_HOME=$(CURDIR)/debian/cargo_home
+export CARGO_REGISTRY=$(CURDIR)/debian/cargo_registry
+export DEB_CARGO_CRATE=$(DEB_SOURCE)_$(DEB_VERSION_UPSTREAM)
+
+%:
+	dh $@ --buildsystem=cargo # --sourcedirectory=crates/hyfetch/
+
+execute_after_dh_auto_clean:
+	$(CARGO) clean
+	rm -rf $(CARGO_HOME)
+	rm -rf $(CARGO_REGISTRY)
+	rm -f debian/cargo-checksum.json
+
+execute_before_dh_auto_configure:
+	$(CARGO) prepare-debian $(CARGO_REGISTRY) --link-from-system
+	rm -f Cargo.lock
+	touch debian/cargo-checksum.json
+
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 00000000..163aaf8d
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
-- 
2.47.3

#1122839#10
Date:
2026-02-02 18:24:50 UTC
From:
To:
Hi Johannes,

Super sorry about missing this and the other bugs, apparently there's a typo
in my email address for this package. I've also just finished moving country
and lost track of basically everything for several months and am now catching
up. I'll be working through the reports and especially the Rust update as
quickly as I can.

Thank you,Cat