From 45d0964e27c754f6007347e5ff46c00d15bf9e4a Mon Sep 17 00:00:00 2001 From: Erik Arvstedt Date: Tue, 16 Mar 2021 12:45:18 +0100 Subject: [PATCH] examples/shell.nix: minor improvements - Use idiomatic var name `pkgs` for the imported nixpkgs. - Don't add `figlet` to PATH because it's only used internally. - Only print figlet in interactive shells to avoid interfering with stdout when running `nix-shell --run `. - Define `fetch-release` as a function to enable running it via `nix-shell --run fetch-release` --- examples/shell.nix | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/examples/shell.nix b/examples/shell.nix index 59e5ac9..47b1e47 100644 --- a/examples/shell.nix +++ b/examples/shell.nix @@ -8,19 +8,18 @@ let else nix-bitcoin-release; nixpkgs-path = (import "${toString nix-bitcoin-path}/pkgs/nixpkgs-pinned.nix").nixpkgs; - nixpkgs = import nixpkgs-path {}; - nix-bitcoin = nixpkgs.callPackage nix-bitcoin-path {}; + pkgs = import nixpkgs-path {}; + nix-bitcoin = pkgs.callPackage nix-bitcoin-path {}; nix-bitcoin-unpacked = (import {}).runCommand "nix-bitcoin-src" {} '' mkdir $out; tar xf ${builtins.fetchurl nix-bitcoin-release} -C $out ''; in -with nixpkgs; - +with pkgs; stdenv.mkDerivation rec { name = "nix-bitcoin-environment"; - path = lib.makeBinPath [ nix-bitcoin.extra-container figlet ]; + path = lib.makeBinPath [ nix-bitcoin.extra-container ]; shellHook = '' export NIX_PATH="nixpkgs=${nixpkgs-path}:nix-bitcoin=${toString nix-bitcoin-path}:." @@ -28,7 +27,9 @@ stdenv.mkDerivation rec { export NIX_BITCOIN_EXAMPLES_DIR="${toString ./.}" - alias fetch-release="${toString nix-bitcoin-path}/helper/fetch-release" + fetch-release() { + ${toString nix-bitcoin-path}/helper/fetch-release + } krops-deploy() { # Ensure strict permissions on secrets/ directory before rsyncing it to @@ -37,7 +38,13 @@ stdenv.mkDerivation rec { $(nix-build --no-out-link ${toString ./krops/deploy.nix}) } - figlet "nix-bitcoin" + # Print logo if + # 1. stdout is a TTY, i.e. we're not piping the output + # 2. the shell is interactive + if [[ -t 1 && $- == *i* ]]; then + ${figlet}/bin/figlet "nix-bitcoin" + fi + (mkdir -p secrets; cd secrets; env -i ${nix-bitcoin.generate-secrets}) # Don't run this hook when another nix-shell is run inside this shell