{ config, pkgs, ... }: let # Mach-nix is a toolkit for constructing custom Python environments mach-nix = import (builtins.fetchGit { url = "https://github.com/DavHau/mach-nix/"; ref = "refs/tags/3.3.0"; }) { pkgs = pkgs; }; xonsh_pyenv = mach-nix.mkPython { requirements = '' xontrib-fzf-widgets xonsh-direnv ''; }; xonsh_with_plugins = pkgs.xonsh.overrideAttrs (old: { propagatedBuildInputs = old.propagatedBuildInputs ++ xonsh_pyenv.python.pkgs.selectPkgs xonsh_pyenv.python.pkgs; }); in { # Home Manager needs a bit of information about you and the # paths it should manage. home.username = "ttm"; home.homeDirectory = builtins.getEnv "HOME"; # This value determines the Home Manager release that your # configuration is compatible with. This helps avoid breakage # when a new Home Manager release introduces backwards # incompatible changes. # # You can update Home Manager without changing this value. See # the Home Manager release notes for a list of state version # changes in each release. home.stateVersion = "22.05"; # Let Home Manager install and manage itself. programs.home-manager.enable = true; # Enable integration with generic Linux OSs targets.genericLinux.enable = pkgs.stdenv.isLinux; home.packages = with pkgs; [ xonsh_with_plugins zoxide # Better cat bat # Better find fd htop fzf ncdu ripgrep git tmux kitty nodePackages.pyright emacs28NativeComp coreutils zstd ]; programs.direnv.enable = true; programs.direnv.nix-direnv.enable = true; }