Package: hyfetch
Version: 1.99.0-1.1
Severity: wishlist
X-Debbugs-Cc: [email protected]

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 <[email protected]>
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 <[email protected]>  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 <[email protected]>
+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

Reply via email to