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 <cmd>`.
- Define `fetch-release` as a function to enable running it via
  `nix-shell --run fetch-release`
This commit is contained in:
Erik Arvstedt 2021-03-16 12:45:18 +01:00
parent cc7149eb78
commit 45d0964e27
No known key found for this signature in database
GPG Key ID: 33312B944DD97846

View File

@ -8,19 +8,18 @@ let
else nix-bitcoin-release; else nix-bitcoin-release;
nixpkgs-path = (import "${toString nix-bitcoin-path}/pkgs/nixpkgs-pinned.nix").nixpkgs; nixpkgs-path = (import "${toString nix-bitcoin-path}/pkgs/nixpkgs-pinned.nix").nixpkgs;
nixpkgs = import nixpkgs-path {}; pkgs = import nixpkgs-path {};
nix-bitcoin = nixpkgs.callPackage nix-bitcoin-path {}; nix-bitcoin = pkgs.callPackage nix-bitcoin-path {};
nix-bitcoin-unpacked = (import <nixpkgs> {}).runCommand "nix-bitcoin-src" {} '' nix-bitcoin-unpacked = (import <nixpkgs> {}).runCommand "nix-bitcoin-src" {} ''
mkdir $out; tar xf ${builtins.fetchurl nix-bitcoin-release} -C $out mkdir $out; tar xf ${builtins.fetchurl nix-bitcoin-release} -C $out
''; '';
in in
with nixpkgs; with pkgs;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "nix-bitcoin-environment"; name = "nix-bitcoin-environment";
path = lib.makeBinPath [ nix-bitcoin.extra-container figlet ]; path = lib.makeBinPath [ nix-bitcoin.extra-container ];
shellHook = '' shellHook = ''
export NIX_PATH="nixpkgs=${nixpkgs-path}:nix-bitcoin=${toString nix-bitcoin-path}:." 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 ./.}" 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() { krops-deploy() {
# Ensure strict permissions on secrets/ directory before rsyncing it to # 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}) $(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}) (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 # Don't run this hook when another nix-shell is run inside this shell