Compare commits

..

2 commits

Author SHA1 Message Date
64ac7a6ef3
provide a microfetch package
Some checks failed
Rust / build (push) Has been cancelled
...and alias default package to it. I like this convention better
2024-08-15 21:07:58 +03:00
19672445a2
improve credits section; reorganize README 2024-08-15 21:07:40 +03:00
2 changed files with 52 additions and 16 deletions

View file

@ -41,16 +41,15 @@ than welcome to use it on your system: it's pretty [fast...](#benchmarks)
- Shell Colors - Shell Colors
- Did I mention fast? - Did I mention fast?
## Installation ## Motivation
Microfetch is packaged in [nixpkgs](https://github.com/nixos/nixpkgs). You can Fastfetch, as its name indicates, a very fast fetch tool written in C, however,
get it through the unstable channel for the time being. The Nix flake can also I am not interested in any of its additional features and I very much dislike
be used for bleeding-edge builds. the defaults. Microfetch is a fetch tool that you would normally write in Bash
and put in your `~/.bashrc` but actually _really_ fast because it opts-out of
all customization options provided by Fastfetch. Why? Because I can.
Non-Nix users will have to build Microfetch with `cargo`. I cannot re-iterate it enough, Microfetch is annoyingly fast.
Microfetch is _currently_ not available anywhere else. Though, does it _really_
have to be?
## Benchmarks ## Benchmarks
@ -61,9 +60,9 @@ benchmarks with Hyperfine on my desktop system.
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative | Written by raf? | | Command | Mean [ms] | Min [ms] | Max [ms] | Relative | Written by raf? |
| :----------- | ----------: | -------: | -------: | -------------: | --------------: | | :----------- | ----------: | -------: | -------: | -------------: | --------------: |
| `microfetch` | 1.3 ± 0.0 | 1.3 | 1.4 | 1.00 | yes | | `microfetch` | 1.3 ± 0.0 | 1.3 | 1.4 | 1.00 | yes |
| `fastfetch` | 31.9 ± 0.8 | 30.8 | 33.8 | 24.08 ± 0.98 | no |
| `pfetch` | 254.2 ± 4.8 | 246.7 | 264.9 | 191.97 ± 7.10 | no | | `pfetch` | 254.2 ± 4.8 | 246.7 | 264.9 | 191.97 ± 7.10 | no |
| `neofetch` | 735.4 ± 9.5 | 721.1 | 752.8 | 555.48 ± 19.08 | no | | `neofetch` | 735.4 ± 9.5 | 721.1 | 752.8 | 555.48 ± 19.08 | no |
| `fastfetch` | 31.9 ± 0.8 | 30.8 | 33.8 | 24.08 ± 0.98 | no |
_As far as I'm concerned, Microfetch is faster than almost every fetch tool _As far as I'm concerned, Microfetch is faster than almost every fetch tool
there is. The only downside of using Rust is introducing more "bloated" there is. The only downside of using Rust is introducing more "bloated"
@ -74,11 +73,29 @@ Nix's binary cache, though._
[Getting Started Guide]: https://bheisler.github.io/criterion.rs/book/getting_started.html [Getting Started Guide]: https://bheisler.github.io/criterion.rs/book/getting_started.html
To benchmark individual functions, [Criterion.rs] is used. See Criterion's To benchmark individual functions, [Criterion.rs] is used. See Criterion's
[Getting Started Guide] for details or just run `cargo bench` to benchmark [Getting Started Guide] for details or just run `cargo bench` to benchmark all
all features of Microfetch features of Microfetch.
## Installation
Microfetch is packaged in [nixpkgs](https://github.com/nixos/nixpkgs). You can
get it through the unstable channel for the time being. The Nix flake can also
be used for bleeding-edge builds.
Non-Nix users will have to build Microfetch with `cargo`. It is not published
anywhere but I imagine you can use `cargo install --git` to install it from
source.
```bash
cargo install --git https://github.com/notashelf/microfetch.git
```
Microfetch is _currently_ not available anywhere else. Though, does it _really_
have to be?
## Customizing ## Customizing
You can't\*. You can't.
### Why? ### Why?
@ -88,9 +105,12 @@ those increment execution time and resource consumption by a lot.
### Really? ### Really?
To be fair, you _can_ customize Microfetch by... Well, patching it. It's not the To be fair, you _can_ customize Microfetch by, well, patching it. It's not the
best way per se, but it will be the only way that does not compromise on speed. best way per se, but it will be the only way that does not compromise on speed.
The Nix package allows passing patches in a streamlined manner by passing
`.overrideAttrs` to the derivation.
## Contributing ## Contributing
I will, mostly, reject feature additions. This is not to say you should avoid I will, mostly, reject feature additions. This is not to say you should avoid
@ -98,7 +118,8 @@ them altogether, as you might have a really good idea worth discussing but as a
general rule of thumb consider talking to me before creating a feature PR. general rule of thumb consider talking to me before creating a feature PR.
Contributions that help improve performance in specific areas of Microfetch are Contributions that help improve performance in specific areas of Microfetch are
welcome. Though, prepare to be bombarded with questions. welcome. Though, prepare to be bombarded with questions if your changes are
large.
## Hacking ## Hacking
@ -111,7 +132,21 @@ Non-nix users will need `cargo` and `gcc` installed on their system, see
## Thanks ## Thanks
Huge thanks to everyone who took the time to make pull requests or nag me in Huge thanks to everyone who took the time to make pull requests or nag me in
person about current issues. person about current issues. To list a few, special thanks to:
- [@Nydragon](https://github.com/Nydragon) - For packaging Microfetch in Nixpkgs
- [@ErrorNoInternet](https://github.com/ErrorNoInternet) - Performance
improvements and code assistance
- [@SoraTenshi](https://github.com/SoraTenshi) - General tips and code
improvements
- [@bloxx12](https://github.com/bloxx12) - Performance improvements and
benchmarking plots
- [@sioodmy](https://github.com/sioodmy) - Being cute
- [@mewoocat](https://github.com/mewoocat) - The awesome NixOS logo ASCII used
in Microfetch
Additionally a big thank you to everyone who used, talked about or criticized
Microfetch. I might have missed your name here, but you have my thanks.
## License ## License

View file

@ -11,7 +11,8 @@
pkgsForEach = nixpkgs.legacyPackages; pkgsForEach = nixpkgs.legacyPackages;
in { in {
packages = forEachSystem (system: { packages = forEachSystem (system: {
default = pkgsForEach.${system}.callPackage ./nix/package.nix {}; default = self.packages.${system}.microfetch;
microfetch = pkgsForEach.${system}.callPackage ./nix/package.nix {};
}); });
devShells = forEachSystem (system: { devShells = forEachSystem (system: {