summaryrefslogtreecommitdiff
path: root/modules/basic-tools/nix.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/basic-tools/nix.nix')
-rw-r--r--modules/basic-tools/nix.nix36
1 files changed, 36 insertions, 0 deletions
diff --git a/modules/basic-tools/nix.nix b/modules/basic-tools/nix.nix
new file mode 100644
index 0000000..4a481ae
--- /dev/null
+++ b/modules/basic-tools/nix.nix
@@ -0,0 +1,36 @@
+{ lib, pkgs, inputs, ... }: {
+
+ nix = {
+ extraOptions = ''
+ experimental-features = nix-command flakes
+ '';
+ };
+
+ # override default nix shell nixpkgs# behaviour to use current flake lock
+ nix.registry =
+ let flakes = lib.filterAttrs (_name: value: value ? outputs) inputs.self.inputs;
+ in builtins.mapAttrs (_name: v: { flake = v; }) flakes;
+
+ nix.nixPath = lib.mapAttrsToList (name: value: "${name}=${value.outPath}") inputs.self.inputs;
+
+ environment.shellAliases = {
+ nix-build="${pkgs.nix-output-monitor}/bin/nom-build";
+ nix-shell="${pkgs.nix-output-monitor}/bin/nom-shell";
+ };
+
+ programs.zsh.interactiveShellInit = ''
+ # hacky wrapper for nix, so we can use nom automagically
+ export _nom_cmd=${pkgs.nix-output-monitor}/bin/nom
+ function nix {
+ case $1 in
+ build|shell|develop)
+ echo \[SUBSTITUTION\] ''$_nom_cmd ''${@:1} 1>&2
+ ''$_nom_cmd ''${@:1}
+ ;;
+ *)
+ ${pkgs.nix}/bin/nix $@
+ esac
+ }
+ compdef nix=_nix
+ '';
+}