Replace flake with .envrc
This commit is contained in:
@@ -1,114 +0,0 @@
|
|||||||
rec {
|
|
||||||
description = "";
|
|
||||||
|
|
||||||
inputs = {
|
|
||||||
nixpkgs.url = "nixpkgs"; # Use nixpkgs from system registry
|
|
||||||
flake-utils.url = "github:numtide/flake-utils";
|
|
||||||
};
|
|
||||||
|
|
||||||
outputs = {
|
|
||||||
self,
|
|
||||||
nixpkgs,
|
|
||||||
flake-utils,
|
|
||||||
}:
|
|
||||||
# Create a shell (and possibly package) for each possible system, not only x86_64-linux
|
|
||||||
flake-utils.lib.eachDefaultSystem (system: let
|
|
||||||
# =========================================================================================
|
|
||||||
# Define pkgs/stdenvs
|
|
||||||
# =========================================================================================
|
|
||||||
pkgs = import nixpkgs {
|
|
||||||
inherit system;
|
|
||||||
config.allowUnfree = true;
|
|
||||||
overlays = [];
|
|
||||||
};
|
|
||||||
|
|
||||||
inherit (pkgs) lib stdenv;
|
|
||||||
|
|
||||||
# =========================================================================================
|
|
||||||
# Define shell environment
|
|
||||||
# =========================================================================================
|
|
||||||
|
|
||||||
# Setup the shell when entering the "nix develop" environment (bash script).
|
|
||||||
shellHook = let
|
|
||||||
# Add project-local fish abbrs here
|
|
||||||
abbrs = {};
|
|
||||||
|
|
||||||
eraseAbbr = name: value: ''abbr --erase ${name} 2>/dev/null'';
|
|
||||||
createAbbr = name: value: ''abbr -a ${name} "${value}"'';
|
|
||||||
|
|
||||||
# This will be sourced by the global fish config if INIT_PROJECT_SHELL gets unset
|
|
||||||
unloadProjectShell = pkgs.writers.writeFish "unload-shell.fish" ''
|
|
||||||
echo "Unloading \"${description}\" environment..."
|
|
||||||
|
|
||||||
${builtins.concatStringsSep "\n" (lib.mapAttrsToList eraseAbbr abbrs)}
|
|
||||||
'';
|
|
||||||
|
|
||||||
# This will be sourced by the global fish config if INIT_PROJECT_SHELL gets set
|
|
||||||
initProjectShell = pkgs.writers.writeFish "init-shell.fish" ''
|
|
||||||
# Unload just in case, to not have redefinition errors
|
|
||||||
source ${unloadProjectShell}
|
|
||||||
|
|
||||||
echo "Sourcing \"${description}\" environment..."
|
|
||||||
|
|
||||||
${builtins.concatStringsSep "\n" (lib.mapAttrsToList createAbbr abbrs)}
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
builtins.concatStringsSep "\n" [
|
|
||||||
# Launch into pure fish shell
|
|
||||||
''
|
|
||||||
# Determine the project root, used e.g. in cmake scripts
|
|
||||||
export FLAKE_PROJECT_ROOT="$(git rev-parse --show-toplevel)"
|
|
||||||
|
|
||||||
# Can't do the "exec" with nix-direnv
|
|
||||||
# - The "exec fish" would call direnv again => Infinite loop
|
|
||||||
# - The shellHook is Bash/POSIX, so fish syntax doesn't work
|
|
||||||
|
|
||||||
# Use this for "nix develop" without direnv
|
|
||||||
# exec "$(type -p fish)" -C "source ${initProjectShell} && abbr -a menu '${pkgs.bat}/bin/bat "${initProjectShell}"'"
|
|
||||||
|
|
||||||
# Use this for direnv without "nix develop"
|
|
||||||
export INIT_PROJECT_SHELL="${initProjectShell}"
|
|
||||||
export UNLOAD_PROJECT_SHELL="${unloadProjectShell}"
|
|
||||||
''
|
|
||||||
];
|
|
||||||
|
|
||||||
# ===========================================================================================
|
|
||||||
# Define custom dependencies
|
|
||||||
# ===========================================================================================
|
|
||||||
|
|
||||||
# ===========================================================================================
|
|
||||||
# Specify dependencies
|
|
||||||
# https://nixos.org/manual/nixpkgs/stable/#ssec-stdenv-dependencies-overview
|
|
||||||
# Just for a "nix develop" shell, buildInputs can be used for everything.
|
|
||||||
# ===========================================================================================
|
|
||||||
|
|
||||||
# Add dependencies to nativeBuildInputs if they are executed during the build:
|
|
||||||
# - Those which are needed on $PATH during the build, for example cmake and pkg-config
|
|
||||||
# - Setup hooks, for example makeWrapper
|
|
||||||
# - Interpreters needed by patchShebangs for build scripts (with the --build flag), which can be the case for e.g. perl
|
|
||||||
nativeBuildInputs = with pkgs; [];
|
|
||||||
|
|
||||||
# Add dependencies to buildInputs if they will end up copied or linked into the final output or otherwise used at runtime:
|
|
||||||
# - Libraries used by compilers, for example zlib
|
|
||||||
# - Interpreters needed by patchShebangs for scripts which are installed, which can be the case for e.g. perl
|
|
||||||
buildInputs = with pkgs; [];
|
|
||||||
# ===========================================================================================
|
|
||||||
# Define buildable + installable packages
|
|
||||||
# ===========================================================================================
|
|
||||||
in rec {
|
|
||||||
devShells = {
|
|
||||||
# Provide default environment for "nix develop".
|
|
||||||
# Other environments can be added below.
|
|
||||||
default = pkgs.mkShell {
|
|
||||||
inherit nativeBuildInputs buildInputs shellHook;
|
|
||||||
name = description;
|
|
||||||
|
|
||||||
# =========================================================================================
|
|
||||||
# Define environment variables
|
|
||||||
# =========================================================================================
|
|
||||||
|
|
||||||
BIBINPUTS = "$PWD:$BIBINPUTS";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user