Files
dotfiles/config/nix/common/home.nix
2024-02-19 18:36:28 +05:30

199 lines
4.6 KiB
Nix

{
config,
pkgs,
lib,
device,
...
}: let
start-tmux = (import ../scripts/start-tmux.nix) pkgs;
# https://mipmip.github.io/home-manager-option-search/
in {
imports = [
# Include the results of the hardware scan.
./tmux.nix
./wezterm.nix
./firefox.nix
../linux/hyprland.nix
../linux/gtk.nix
../linux/anyrun.nix
../linux/ironbar.nix
];
home.packages = with pkgs;
[
htop-vim
qmk
nodejs
nix-index
macchina
ripgrep
fd
nixfmt
dust
eza
cachix
rustup
cmake
fzf
clang
# neovim-nightly
neovim
(nerdfonts.override {fonts = ["Hasklig"];})
mpv
# # It is sometimes useful to fine-tune packages, for example, by applying
# # overrides. You can do that directly here, just don't forget the
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
# # fonts?
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
# # You can also create simple shell scripts directly inside your
# # configuration. For example, this adds a command 'my-hello' to your
# # environment:
# (pkgs.writeShellScriptBin "my-hello" ''
# echo "Hello, ${config.home.username}!"
# '')
]
++ (
if device.isLinux
then
with pkgs; [
handlr-regex
gnome.nautilus
webcord-vencord
spotify
spotify-player
lsof
wl-clipboard
yubikey-personalization
ncpamixer
yubikey-agent
(pkgs.writeShellApplication {
name = "xdg-open";
runtimeInputs = [handlr-regex];
text = ''
handlr open "$@"
'';
})
]
else []
);
xdg.enable = true;
programs = {
git = {
enable = true;
userName = "uttarayan21";
userEmail = "email@uttarayan.me";
};
nix-index.enableFishIntegration = true;
fish = {
enable = true;
shellAbbrs = {
vim = "nvim";
vi = "nvim";
nv = "nvim";
g = "git";
cd = "z";
ls = "exa";
t = "${start-tmux}";
};
shellInit = ''
set fish_greeting
'';
interactiveShellInit = ''
${pkgs.macchina.outPath}/bin/macchina
'';
};
nushell = {
enable = true;
shellAliases = {"cd" = "z";};
package = pkgs.nushellFull;
configFile.text = ''
$env.config = {
show_banner: false,
}
'';
};
zoxide = {
enable = true;
enableFishIntegration = true;
enableNushellIntegration = true;
};
starship = {
enable = true;
enableFishIntegration = true;
enableNushellIntegration = true;
};
eza = {
enable = true;
enableAliases = true;
git = true;
icons = true;
};
carapace = {
enable = true;
enableFishIntegration = true;
enableNushellIntegration = true;
};
fzf = {
enable = true;
package = pkgs.fzf;
enableFishIntegration = true;
tmux.enableShellIntegration = true;
};
# keychain = {
# enable = pkgs.isLinux;
# keys = [ "id_ed25519" ];
# enableFishIntegration = true;
# enableNushellIntegration = true;
# };
yazi = {
enable = true;
enableFishIntegration = true;
enableNushellIntegration = true;
};
# Let Home Manager install and manage itself.
home-manager = {enable = true;};
};
fonts.fontconfig.enable = true;
home = {
# Home Manager needs a bit of information about you and the paths it should
# manage.
username = device.user;
homeDirectory =
if device.isMac
then lib.mkForce "/Users/${device.user}"
else lib.mkForce "/home/${device.user}";
stateVersion = "23.11";
file = {
".config/tmux/sessions".source = ../../tmux/sessions;
".config/nvim/lua".source = ../../nvim/lua;
".config/nvim/init.lua".source = ../../nvim/init.lua;
".config/macchina".source = ../../macchina;
# # You can also set the file content immediately.
# ".gradle/gradle.properties".text = ''
# org.gradle.console=verbose
# org.gradle.daemon.idletimeout=3600000
# '';
};
sessionVariables = {
EDITOR = "nvim";
SHELL = "${pkgs.nushellFull}/bin/nu";
CARGO_TARGET_DIR = "${config.xdg.cacheHome}/cargo/target";
};
sessionPath = [
"${config.home.homeDirectory}/.local/bin"
"${config.home.homeDirectory}/.nix-profile/bin"
];
};
}