From 360829c7499387d9e311b7f7d9bfe59fae11d290 Mon Sep 17 00:00:00 2001 From: "Travis A. Everett" Date: Fri, 28 Jan 2022 20:03:20 -0600 Subject: [PATCH] yadm: use resholvePackage (#154190) --- .../version-management/yadm/default.nix | 102 +++++++++++++++++- 1 file changed, 97 insertions(+), 5 deletions(-) diff --git a/pkgs/applications/version-management/yadm/default.nix b/pkgs/applications/version-management/yadm/default.nix index e0e26b804f58..ffd5fdaab7c0 100644 --- a/pkgs/applications/version-management/yadm/default.nix +++ b/pkgs/applications/version-management/yadm/default.nix @@ -1,18 +1,43 @@ -{ lib, stdenv, fetchFromGitHub, git, gnupg, installShellFiles }: +{ lib +, stdenv +, resholvePackage +, fetchFromGitHub +, git +, bash +, openssl +, gawk +/* +TODO: yadm can use git-crypt and transcrypt +but it does so in a way that resholve 0.6.0 +can't yet do anything smart about. It looks +like these are for interactive use, so the +main impact should just be that users still +need both of these packages in their profile +to support their use in yadm. +*/ +# , git-crypt +# , transcrypt +, j2cli +, esh +, gnupg +, coreutils +, gnutar +, installShellFiles +, runCommand +, yadm +}: -stdenv.mkDerivation rec { +resholvePackage rec { pname = "yadm"; version = "3.1.1"; - buildInputs = [ git gnupg ]; - nativeBuildInputs = [ installShellFiles ]; src = fetchFromGitHub { owner = "TheLocehiliosan"; repo = "yadm"; rev = version; - sha256 = "sha256-bgiRBlqEjDq0gQ0+aUWpFDeE2piFX3Gy2gEAXgChAOk="; + hash = "sha256-bgiRBlqEjDq0gQ0+aUWpFDeE2piFX3Gy2gEAXgChAOk="; }; dontConfigure = true; @@ -31,6 +56,72 @@ stdenv.mkDerivation rec { --bash completion/bash/yadm ''; + solutions = { + yadm = { + scripts = [ "bin/yadm" ]; + interpreter = "${bash}/bin/sh"; + inputs = [ + git + gnupg + openssl + gawk + # see head comment + # git-crypt + # transcrypt + j2cli + esh + bash + coreutils + gnutar + ]; + fake = { + external = if stdenv.isCygwin then [ ] else [ "cygpath" ]; + }; + fix = { + "$GPG_PROGRAM" = [ "gpg" ]; + "$OPENSSL_PROGRAM" = [ "openssl" ]; + "$GIT_PROGRAM" = [ "git" ]; + "$AWK_PROGRAM" = [ "awk" ]; + # see head comment + # "$GIT_CRYPT_PROGRAM" = [ "git-crypt" ]; + # "$TRANSCRYPT_PROGRAM" = [ "transcrypt" ]; + "$J2CLI_PROGRAM" = [ "j2" ]; + "$ESH_PROGRAM" = [ "esh" ]; + # not in nixpkgs (yet) + # "$ENVTPL_PROGRAM" = [ "envtpl" ]; + # "$LSB_RELEASE_PROGRAM" = [ "lsb_release" ]; + }; + keep = { + "$YADM_COMMAND" = true; # internal cmds + "$template_cmd" = true; # dynamic, template-engine + "$SHELL" = true; # probably user env? unsure + "$hook_command" = true; # ~git hooks? + "exec" = [ "$YADM_BOOTSTRAP" ]; # yadm bootstrap script + + # not in nixpkgs + "$ENVTPL_PROGRAM" = true; + "$LSB_RELEASE_PROGRAM" = true; + }; + /* + TODO: these should be dropped as fast as they can be dealt + with properly in binlore and/or resholve. + */ + execer = [ + "cannot:${j2cli}/bin/j2" + "cannot:${esh}/bin/esh" + "cannot:${git}/bin/git" + "cannot:${gnupg}/bin/gpg" + ]; + }; + }; + + passthru.tests = { + minimal = runCommand "${pname}-test" {} '' + export HOME=$out + ${yadm}/bin/yadm init + ''; + }; + meta = { homepage = "https://github.com/TheLocehiliosan/yadm"; description = "Yet Another Dotfiles Manager"; @@ -40,6 +131,7 @@ stdenv.mkDerivation rec { * Provides a way to use alternate files on a specific OS or host. * Supplies a method of encrypting confidential data so it can safely be stored in your repository. ''; + changelog = "https://github.com/TheLocehiliosan/yadm/blob/${version}/CHANGES"; license = lib.licenses.gpl3Plus; maintainers = with lib.maintainers; [ abathur ]; platforms = lib.platforms.unix;