diff options
Diffstat (limited to 'dot_config')
| -rw-r--r-- | dot_config/direnv/direnvrc | 14 | ||||
| -rw-r--r-- | dot_config/nix/templates/dev/dot_envrc | 1 | ||||
| -rw-r--r-- | dot_config/nix/templates/dev/flake.nix | 29 | ||||
| -rw-r--r-- | dot_config/nix/templates/flake.nix | 13 | ||||
| -rw-r--r-- | dot_config/zsh/dot_zshrc | 3 |
5 files changed, 60 insertions, 0 deletions
diff --git a/dot_config/direnv/direnvrc b/dot_config/direnv/direnvrc new file mode 100644 index 0000000..40bfc86 --- /dev/null +++ b/dot_config/direnv/direnvrc @@ -0,0 +1,14 @@ +# Global direnv runtime config. +# +# Loads nix-direnv on demand. nix-direnv is NOT packaged for Arch and we +# refuse to depend on -git AUR packages, so we fetch the loader from +# upstream pinned by version + content hash. direnv caches it under +# $XDG_CACHE_HOME/direnv/, so the network fetch happens exactly once +# per pin bump. +# +# To upgrade: bump the version in the URL and replace the sha256 with +# the new one. direnv prints the expected hash on mismatch. +if ! has nix_direnv_version || ! nix_direnv_version 3.1.1; then + source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.1.1/direnvrc" \ + "sha256-p+fzQdrms/hDa7g+soShAybJNo4bN4SIAeSfqNKgD5I=" +fi diff --git a/dot_config/nix/templates/dev/dot_envrc b/dot_config/nix/templates/dev/dot_envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/dot_config/nix/templates/dev/dot_envrc @@ -0,0 +1 @@ +use flake diff --git a/dot_config/nix/templates/dev/flake.nix b/dot_config/nix/templates/dev/flake.nix new file mode 100644 index 0000000..84b3179 --- /dev/null +++ b/dot_config/nix/templates/dev/flake.nix @@ -0,0 +1,29 @@ +{ + description = "Project dev shell"; + + inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + + outputs = { self, nixpkgs }: + let + systems = [ "x86_64-linux" "aarch64-linux" ]; + forAllSystems = nixpkgs.lib.genAttrs systems; + in + { + devShells = forAllSystems (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + in + { + default = pkgs.mkShell { + packages = with pkgs; [ + # Add per-project tools here. + # Example: nodejs_22 python313 cargo gcc + ]; + + shellHook = '' + # Per-project env setup (printed once on shell entry). + ''; + }; + }); + }; +} diff --git a/dot_config/nix/templates/flake.nix b/dot_config/nix/templates/flake.nix new file mode 100644 index 0000000..dc4cf2d --- /dev/null +++ b/dot_config/nix/templates/flake.nix @@ -0,0 +1,13 @@ +{ + description = "Personal flake templates. Use: nix flake init -t ~/.config/nix/templates#<name>"; + + outputs = { self }: { + templates = { + dev = { + path = ./dev; + description = "Generic per-project dev shell with direnv .envrc"; + }; + default = self.templates.dev; + }; + }; +} diff --git a/dot_config/zsh/dot_zshrc b/dot_config/zsh/dot_zshrc index f516495..e8fca42 100644 --- a/dot_config/zsh/dot_zshrc +++ b/dot_config/zsh/dot_zshrc @@ -353,6 +353,9 @@ compdef l=lsd la=lsd lt=lsd export GPG_TTY=$TTY gpg-connect-agent updatestartuptty /bye &>/dev/null +# ── direnv (per-project env via .envrc; nix-direnv loaded from direnvrc) ───── +eval "$(direnv hook zsh)" + # ── Zoxide (smart directory jumping) ────────────────────────────────────────── # z foo → jump to frecency-ranked dir matching "foo" # zi → interactive picker with fzf |
