nixpkgs/pkgs/by-name/ni/nix-weather/package.nix
Artturin e0464e4788 treewide: replace stdenv.is with stdenv.hostPlatform.is
In preparation for the deprecation of `stdenv.isX`.

These shorthands are not conducive to cross-compilation because they
hide the platforms.

Darwin might get cross-compilation for which the continued usage of `stdenv.isDarwin` will get in the way

One example of why this is bad and especially affects compiler packages
https://www.github.com/NixOS/nixpkgs/pull/343059

There are too many files to go through manually but a treewide should
get users thinking when they see a `hostPlatform.isX` in a place where it
doesn't make sense.

```
fd --type f "\.nix" | xargs sd --fixed-strings "stdenv.is" "stdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "stdenv'.is" "stdenv'.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "clangStdenv.is" "clangStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "gccStdenv.is" "gccStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "stdenvNoCC.is" "stdenvNoCC.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "inherit (stdenv) is" "inherit (stdenv.hostPlatform) is"
fd --type f "\.nix" | xargs sd --fixed-strings "buildStdenv.is" "buildStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "effectiveStdenv.is" "effectiveStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "originalStdenv.is" "originalStdenv.hostPlatform.is"
```
2024-09-25 00:04:37 +03:00

85 lines
2.1 KiB
Nix

{
lib,
stdenv,
fetchFromGitHub,
rustPlatform,
pkg-config,
openssl,
darwin,
libiconv,
installShellFiles,
nix-update-script,
}:
rustPlatform.buildRustPackage rec {
pname = "nix-weather";
version = "0.0.4";
# fetch from GitHub and not upstream forgejo because cafkafk doesn't want to
# pay for bandwidth
src = fetchFromGitHub {
owner = "cafkafk";
repo = "nix-weather";
rev = "v${version}";
hash = "sha256-15FUA4fszbAVXop3IyOHfxroyTt9/SkWZsSTUh9RtwY=";
};
cargoHash = "sha256-vMeljXNWfFRyeQ4ZQ/Qe1vcW5bg5Y14aEH5HgEwOX3Q=";
cargoExtraArgs = "-p nix-weather";
nativeBuildInputs = [ pkg-config ];
buildInputs =
[
openssl
installShellFiles
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
libiconv
darwin.apple_sdk.frameworks.Security
darwin.apple_sdk.frameworks.SystemConfiguration
];
outputs = [
"out"
"man"
];
# This is where `build.rs` puts manpages
MAN_OUT = "./man";
postInstall = ''
cd crates/nix-weather
installManPage man/nix-weather.1
installShellCompletion \
--fish man/nix-weather.fish \
--bash man/nix-weather.bash \
--zsh man/_nix-weather
mkdir -p $out
cd ../..
'';
# We are the only distro that will ever package this, thus ryanbot will not
# be able to find updates through repology and we need this.
passthru.updateScript = nix-update-script { };
meta = with lib; {
description = "Check Cache Availablility of NixOS Configurations";
longDescription = ''
Fast rust tool to check availability of your entire system in caches. It
so to speak "checks the weather" before going to update. Useful for
debugging cache utilization and timing updates and deployments.
Heavily inspired by guix weather.
'';
homepage = "https://git.fem.gg/cafkafk/nix-weather";
changelog = "https://git.fem.gg/cafkafk/nix-weather/releases/tag/v${version}";
license = licenses.eupl12;
mainProgram = "nix-weather";
maintainers = with maintainers; [
cafkafk
freyacodes
];
platforms = platforms.all;
};
}