From e5fdfd6c4459d9d1ccfb746646446e5d786769e9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 13 May 2021 09:52:50 +0200 Subject: [PATCH] pkgs: add comma --- pkgs/comma/comma | 33 +++++++++++++++++++++++++++++++++ pkgs/comma/default.nix | 42 ++++++++++++++++++++++++++++++++++++++++++ pkgs/default.nix | 2 ++ 3 files changed, 77 insertions(+) create mode 100755 pkgs/comma/comma create mode 100644 pkgs/comma/default.nix diff --git a/pkgs/comma/comma b/pkgs/comma/comma new file mode 100755 index 0000000..5c347d6 --- /dev/null +++ b/pkgs/comma/comma @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +set -euo pipefail + +print_err() { + printf "%s\n" "$1" >&2 +} + +usage() { + print_err "Usage: , [argument]..." +} + +find_program() { + local CANDIDATE + CANDIDATE="$(nix-locate --top-level --minimal --at-root --whole-name "/bin/$1")" + if [ "$(printf '%s\n' "$CANDIDATE" | wc -l)" -gt 1 ]; then + CANDIDATE="$(printf '%s' "$CANDIDATE" | fzf-tmux)" + fi + printf '%s' "$CANDIDATE" +} + +if [ $# -lt 1 ]; then + usage + exit 1 +fi + +PROGRAM="$(find_program "$1")" +if [ -z "$PROGRAM" ]; then + print_err "No match found for $1" + exit 1 +fi + +nix shell "nixpkgs#$PROGRAM" -c "$@" diff --git a/pkgs/comma/default.nix b/pkgs/comma/default.nix new file mode 100644 index 0000000..73756d0 --- /dev/null +++ b/pkgs/comma/default.nix @@ -0,0 +1,42 @@ +{ fzf, lib, makeWrapper, nix-index, shellcheck, stdenvNoCC }: +stdenvNoCC.mkDerivation rec { + pname = "comma"; + version = "0.1.0"; + + src = ./. + "/comma"; + + phases = [ "buildPhase" "installPhase" "fixupPhase" ]; + + buildInputs = [ + makeWrapper + shellcheck + ]; + + buildPhase = '' + shellcheck $src + ''; + + installPhase = '' + mkdir -p $out/bin + cp $src $out/bin/${meta.mainProgram} + chmod a+x $out/bin/${meta.mainProgram} + ''; + + wrapperPath = lib.makeBinPath [ + fzf + nix-index + ]; + + fixupPhase = '' + patchShebangs $out/bin/${meta.mainProgram} + wrapProgram $out/bin/${meta.mainProgram} --prefix PATH : "${wrapperPath}" + ''; + + meta = with lib; { + mainProgram = ","; + description = "A simple script inspired by Shopify's comma, for modern Nix"; + homepage = "https://gitea.belanyi.fr/ambroisie/nix-config"; + license = with licenses; [ mit ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/default.nix b/pkgs/default.nix index 164c0b3..82aa254 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,5 +1,7 @@ { pkgs }: rec { + comma = pkgs.callPackage ./comma { }; + diff-flake = pkgs.callPackage ./diff-flake { }; havm = pkgs.callPackage ./havm { };