{ lib, pkgs, config, osConfig ? { }, ... }: let cfg = config.nixfiles.profile.base; in { # imports = [ # ./comma.nix # ]; # home.username = "nullbite"; # home.homeDirectory = "/home/nullbite"; options.nixfiles.profile.base = { enable = lib.mkEnableOption "base profile"; }; config = lib.mkIf cfg.enable { nixfiles.programs.comma.enable = true; nixfiles.programs.neovim.enable = lib.mkDefault true; nixfiles.common.nix.enable = true; home.sessionVariables = lib.mkMerge [ (lib.mkIf config.programs.neovim.enable { MANPAGER = "nvim +Man!"; }) # configure terminfo since we're probably standalone (lib.mkIf (!(osConfig ? environment)) { TERMINFO_DIRS = let terminfo-dirs = [ "${config.home.profileDirectory}/share/terminfo" "/usr/share/terminfo" ]; in builtins.concatStringsSep ":" terminfo-dirs; }) ]; # TODO move this stuff to a shell.nix or something; this is just a quick # fix so home.sessionVariables works home.shellAliases = { v = "nvim"; icat = "kitten icat"; srun = "systemd-run"; urun = "systemd-run --user"; # this lets me find commands that i run with comma very frequently so i # can install them comma-frequent = "history | sed 's:^ \+[0-9]\+ \+::' | grep '^,' | cut -d' ' -f2- | sed 's:^\(-[^ ]\+ \?\)\+::g' | grep . | cut -d' ' -f1 | sort | uniq -c | sort -g"; }; programs.fzf.enable = lib.mkDefault true; programs.fzf.enableZshIntegration = lib.mkDefault true; programs.fzf.enableBashIntegration = lib.mkDefault true; programs.bash = { enable = lib.mkDefault true; initExtra = '' export HOME_MANAGER_MANAGED=true; [[ -e ~/dotfiles/shell/.bashrc ]] && . ~/dotfiles/shell/.bashrc ]] unset HOME_MANAGERR_MANAGED ''; }; programs.zsh = { enable = lib.mkDefault true; initExtra = '' export HOME_MANAGER_MANAGED=true [[ -e ~/dotfiles/shell/.zshrc ]] && . ~/dotfiles/shell/.zshrc ]] unset HOME_MANAGER_MANAGED ''; oh-my-zsh = { enable = lib.mkDefault true; theme = "robbyrussell"; extraConfig = '' DISABLE_MAGIC_FUNCTIONS="true" ''; plugins = [ "git" ]; }; }; programs.btop.enable = lib.mkDefault true; programs.ranger = let defaultTerminal = "kitty"; # defaultTerminal = # if config.programs.kitty.enable then "kitty" # else null; in { enable = lib.mkDefault true; settings = lib.mkMerge [{ use_preview_script = lib.mkDefault true; preview_files = lib.mkDefault true; } (lib.mkIf (!(isNull defaultTerminal)) { preview_images = lib.mkDefault true; preview_images_method = lib.mkDefault defaultTerminal; })]; }; programs.keychain = { enable = lib.mkDefault true; enableBashIntegration = lib.mkDefault true; enableZshIntegration = lib.mkDefault true; extraFlags = [ "--quiet" "--systemd" "--inherit" "any-once" "--noask" ]; }; # this fixes a lot of theme weirdness # this actually breaks home-manager's icon/theme management # home.file.".icons".source = config.lib.file.mkOutOfStoreSymlink "${config.xdg.dataHome}/icons"; # home.file.".themes".source = config.lib.file.mkOutOfStoreSymlink "${config.xdg.dataHome}/themes"; # some packages defined here may be redundant with packages on a non-NixOS # home-manager setup, but it's better to have a consistent environment at # the cost of slightly more space home.packages = with pkgs; let neofetch-hyfetch-shim = writeShellScriptBin "neofetch" '' exec "${pkgs.hyfetch}/bin/neowofetch" "$@" ''; in [ # nix stuff nvd nix-tree nh nix-output-monitor git git-lfs stow curl # shell ripgrep fd bat moreutils grc fzf pv # for icat on all systems kitty.kitten # terminfo (just the ones i'm likely to use) kitty.terminfo alacritty.terminfo termite.terminfo tmux.terminfo # pretty hyfetch neofetch-hyfetch-shim # files restic rclone rmlint ncdu # other utilities tmux mosh btop htop zoxide asciinema ]; }; }