# Spawn shell with specified nix environment. # Uses flake.nix in current dir by default. # Usage: shell [NAME] function shell() { local target="${1}" [[ ${target} == "" ]] && target="default" SHELL_NAME="${target}" nix develop ".#${target}" } # Spawn temporary nix-shell with specified packages. # Usage: tmpshell function tmpshell() { local IFS=$'\n' local input=("${@}") local pkgs=() local tag="${1}" if [[ ${input} == "" ]]; then help tmpshell return 2 fi for pkg in ${input[@]}; do pkgs+=("nixpkgs#${pkg}") done SHELL_NAME="${tag}" NIXPKGS_ALLOW_INSECURE=1 NIXPKGS_ALLOW_UNFREE=1 nix shell --impure ${pkgs[@]} } function nix_depends() { nix why-depends /run/current-system nixpkgs#${1} } # Run stuff directrly from Nixpks. # Usage: nixpkgs_run [COMMAND] function nixpkgs_run() { local rev="${1}" local pkg="${2}" local cmd="${@:3}" if [[ ${pkg} == "" ]]; then help nixpkgs_run return 2 fi [[ ${cmd} == "" ]] && cmd="${pkg}" SHELL_NAME="${pkg}" NIXPKGS_ALLOW_INSECURE=1 NIXPKGS_ALLOW_UNFREE=1 nix shell --impure github:NixOS/nixpkgs/${rev}#${pkg} -c ${cmd} } # Prefetch to nix store. # Usage: prefetch function prefetch() { local url="${1}" local name="${1##*/}" name=$(parse_alnum "${name%%\?*}") if [[ ${url} == "" ]]; then help prefetch return 2 fi local result=$(nix hash convert --to sri --hash-algo sha256 $(nix-prefetch-url --name "${name}" "${url}")) printf "%s" ${result} | copy printf "%s\n" ${result} } # Run nix locally with no builders. # Usage: nix_local function nix_local() { nix --option max-jobs $(_core_count) --builders "" --substituters https://cache.nixos.org ${@} } # Run test app from other people PRs. # Usage: nix_test github:user/nixpkgs/# function nix_test() { if [[ ${@} == "" ]]; then help nix_test return 2 fi local name=${*##*#} SHELL_NAME="${name}" NIXPKGS_ALLOW_INSECURE=1 NIXPKGS_ALLOW_UNFREE=1 nix --option max-jobs $(_core_count) --builders "" --substituters https://cache.nixos.org shell --impure ${@} }