From 59032852f02dcb7fd6974e021bcc4a73a5581da0 Mon Sep 17 00:00:00 2001 From: Andreas Schaafsma Date: Tue, 12 Nov 2024 22:54:06 +0100 Subject: [PATCH] add sample hello package (copied from nixpkgs) --- packages/hello/default.nix | 68 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 packages/hello/default.nix diff --git a/packages/hello/default.nix b/packages/hello/default.nix new file mode 100644 index 0000000..f3b8f7a --- /dev/null +++ b/packages/hello/default.nix @@ -0,0 +1,68 @@ +{ + # Snowfall Lib provides a customized `lib` instance with access to your flake's library + # as well as the libraries available from your flake's inputs. + lib, + # You also have access to your flake's inputs. + inputs, + + # The namespace used for your flake, defaulting to "internal" if not set. + namespace, + + # All other arguments come from NixPkgs. You can use `pkgs` to pull packages or helpers + # programmatically or you may add the named attributes as arguments here. + stdenv, + fetchurl, + nixos, + testers, + versionCheckHook, + hello, + ... +}: +stdenv.mkDerivation (finalAttrs: { + pname = "hello"; + version = "2.12.1"; + + src = fetchurl { + url = "mirror://gnu/hello/hello-${finalAttrs.version}.tar.gz"; + hash = "sha256-jZkUKv2SV28wsM18tCqNxoCZmLxdYH2Idh9RLibH2yA="; + }; + + # The GNU Hello `configure` script detects how to link libiconv but fails to actually make use of that. + # Unfortunately, this cannot be a patch to `Makefile.am` because `autoreconfHook` causes a gettext + # infrastructure mismatch error when trying to build `hello`. + env = lib.optionalAttrs stdenv.hostPlatform.isDarwin { + NIX_LDFLAGS = "-liconv"; + }; + + doCheck = true; + + doInstallCheck = true; + nativeInstallCheckInputs = [ + versionCheckHook + ]; + + # Give hello some install checks for testing purpose. + postInstallCheck = '' + stat "''${!outputBin}/bin/${finalAttrs.meta.mainProgram}" + ''; + + passthru.tests = { + version = testers.testVersion { package = hello; }; + }; + + passthru.tests.run = callPackage ./test.nix { hello = finalAttrs.finalPackage; }; + + meta = { + description = "Program that produces a familiar, friendly greeting"; + longDescription = '' + GNU Hello is a program that prints "Hello, world!" when you run it. + It is fully customizable. + ''; + homepage = "https://www.gnu.org/software/hello/manual/"; + changelog = "https://git.savannah.gnu.org/cgit/hello.git/plain/NEWS?h=v${finalAttrs.version}"; + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ stv0g ]; + mainProgram = "hello"; + platforms = lib.platforms.all; + }; +}) \ No newline at end of file