{ # FIXME: uncomment the next line if you want to reference your GitHub/GitLab access tokens and other secrets # secrets, pkgs, username, nix-index-database, ... }: let unstable-packages = with pkgs.unstable; [ # FIXME: select your core binaries that you always want on the bleeding-edge bat bottom coreutils curl dust fd findutils fx git git-crypt htop jq killall mosh procs ripgrep sd tmux tree unzip vim wget zip gemini-cli ]; stable-packages = with pkgs; [ # FIXME: customize these stable packages to your liking for the languages that you use # FIXME: you can add plugins, change keymaps etc using (jeezyvim.nixvimExtend {}) # https://github.com/LGUG2Z/JeezyVim#extending jeezyvim # key tools gh # for bootstrapping just # core languages zig # local dev stuf mkcert httpie # treesitter tree-sitter # language servers nodePackages.vscode-langservers-extracted # html, css, json, eslint nodePackages.yaml-language-server zls nil # nix # formatters and linters alejandra # nix deadnix # nix nodePackages.prettier shellcheck shfmt statix # nix ]; in { imports = [ nix-index-database.homeModules.nix-index ]; home.stateVersion = "25.11"; home = { username = "${username}"; homeDirectory = "/home/${username}"; sessionVariables.EDITOR = "nvim"; # FIXME: set your preferred $SHELL sessionVariables.SHELL = "/etc/profiles/per-user/${username}/bin/fish"; }; home.packages = stable-packages ++ unstable-packages ++ # FIXME: you can add anything else that doesn't fit into the above two lists in here [ # pkgs.some-package # pkgs.unstable.some-other-package ]; programs = { home-manager.enable = true; nix-index.enable = true; nix-index.enableFishIntegration = true; nix-index-database.comma.enable = true; # FIXME: disable this if you don't want to use the starship prompt starship.enable = true; starship.settings = { aws.disabled = true; gcloud.disabled = true; kubernetes.disabled = false; git_branch.style = "242"; directory.style = "blue"; directory.truncate_to_repo = false; directory.truncation_length = 8; python.disabled = true; ruby.disabled = true; hostname.ssh_only = false; hostname.style = "bold green"; }; # FIXME: disable whatever you don't want fzf.enable = true; fzf.enableFishIntegration = true; lsd.enable = true; #lsd.enableAliases = true; zoxide.enable = true; zoxide.enableFishIntegration = true; zoxide.options = ["--cmd cd"]; broot.enable = true; broot.enableFishIntegration = true; direnv.enable = true; direnv.nix-direnv.enable = true; delta = { enable = true; options = { line-numbers = true; side-by-side = true; navigate = true; }; enableGitIntegration = true; }; git = { enable = true; package = pkgs.unstable.git; #delta.enable = true; #delta.options = { # line-numbers = true; # side-by-side = true; # navigate = true; #}; #userEmail = "scott.sorell@gmail.com"; # FIXME: set your git email settings.user.email = "scott.sorell@gmail.com"; #userName = "Scott Sorell"; #FIXME: set your git username settings.user.name = "Scott Sorell"; extraConfig = { # FIXME: uncomment the next lines if you want to be able to clone private https repos # url = { # "https://oauth2:${secrets.github_token}@github.com" = { # insteadOf = "https://github.com"; # }; # "https://oauth2:${secrets.gitlab_token}@gitlab.com" = { # insteadOf = "https://gitlab.com"; # }; # }; push = { default = "current"; autoSetupRemote = true; }; merge = { conflictstyle = "diff3"; }; diff = { colorMoved = "default"; }; }; }; # FIXME: This is my fish config - you can fiddle with it if you want fish = { enable = true; # FIXME: run 'scoop install win32yank' on Windows, then add this line with your Windows username to the bottom of interactiveShellInit # fish_add_path --append /mnt/c/Users//scoop/apps/win32yank/0.1.1 interactiveShellInit = '' ${pkgs.any-nix-shell}/bin/any-nix-shell fish --info-right | source ${pkgs.lib.strings.fileContents (pkgs.fetchFromGitHub { owner = "rebelot"; repo = "kanagawa.nvim"; rev = "de7fb5f5de25ab45ec6039e33c80aeecc891dd92"; sha256 = "sha256-f/CUR0vhMJ1sZgztmVTPvmsAgp0kjFov843Mabdzvqo="; } + "/extras/kanagawa.fish")} set -U fish_greeting fish_add_path --append /mnt/c/Users/scott/scoop/apps/win32yank/0.1.1 ''; functions = { refresh = "source $HOME/.config/fish/config.fish"; take = ''mkdir -p -- "$1" && cd -- "$1"''; ttake = "cd $(mktemp -d)"; show_path = "echo $PATH | tr ' ' '\n'"; posix-source = '' for i in (cat $argv) set arr (echo $i |tr = \n) set -gx $arr[1] $arr[2] end ''; }; shellAbbrs = { gc = "nix-collect-garbage --delete-old"; } # navigation shortcuts // { ".." = "cd .."; "..." = "cd ../../"; "...." = "cd ../../../"; "....." = "cd ../../../../"; } # git shortcuts // { gapa = "git add --patch"; grpa = "git reset --patch"; gst = "git status"; gdh = "git diff HEAD"; gp = "git push"; gph = "git push -u origin HEAD"; gco = "git checkout"; gcob = "git checkout -b"; gcm = "git checkout master"; gcd = "git checkout develop"; gsp = "git stash push -m"; gsa = "git stash apply stash^{/"; gsl = "git stash list"; }; shellAliases = { jvim = "nvim"; lvim = "nvim"; pbcopy = "/mnt/c/Windows/System32/clip.exe"; pbpaste = "/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -command 'Get-Clipboard'"; explorer = "/mnt/c/Windows/explorer.exe"; # To use code as the command, uncomment the line below. Be sure to replace [my-user] with your username. # If your code binary is located elsewhere, adjust the path as needed. # code = "/mnt/c/Users/[my-user]/AppData/Local/Programs/'Microsoft VS Code'/bin/code"; }; plugins = [ { inherit (pkgs.fishPlugins.autopair) src; name = "autopair"; } { inherit (pkgs.fishPlugins.done) src; name = "done"; } { inherit (pkgs.fishPlugins.sponge) src; name = "sponge"; } ]; }; }; }