dotfiles/nix/hosts/home.nix

159 lines
4 KiB
Nix

{ config, pkgs, ... }:
{
home.username = "lunita";
home.homeDirectory = "/home/lunita";
home.stateVersion = "25.05";
xdg.userDirs = {
enable = true;
createDirectories = true;
};
gtk = {
enable = true;
colorScheme = "dark";
};
programs.zsh = {
enable = true;
syntaxHighlighting.enable = true;
shellAliases = {
c = "clear";
nf = "neofetch";
v = "nvim";
d = "cd ~/Documents";
D = "cd ~/Downloads";
dot = "cd ~/dotfiles";
g = "git";
};
initContent = ''
# '~' => goto base of user home directory
alias ~='cd ~'
# Vim keybinds
bindkey -v
# Preferred editor for local and remote sessions
if [[ -n $SSH_CONNECTION ]]; then
export EDITOR='vim'
else
export EDITOR='nvim'
fi
# Set TERM for Ghostty ssh workaround
if [[ "$TERM_PROGRAM" == "ghostty" ]]; then
export TERM=xterm-256color
fi
# Run Hyprland if applicable
if [[ "$(tty)" == "/dev/tty"* ]] && command -v Hyprland &> /dev/null; then
exec Hyprland
fi
'';
history.size = 10000;
oh-my-zsh = {
enable = true;
plugins = [ "git" ];
theme = "half-life";
};
};
programs.git = {
enable = true;
userName = "lulusilly";
userEmail = "lunita@puppygirl.onl";
aliases = {
c = "commit -m";
co = "checkout";
s = "status";
pu = "push origin master";
po = "push origin main";
rmc = "rm -r --cached";
};
};
nixpkgs.config.allowUnfree = true;
# Librewolf comes with safe defaults already, so minimal changes are necessary.
programs.librewolf = {
enable = true;
settings = {
"webgl.disabled" = false;
# "privacy.clearOnShutdown.history" = false;
# "privacy.clearOnShutdown.cookies" = false;
"network.cookie.lifetimePolicy" = 0;
};
};
services.udiskie = {
enable = true;
settings = {
program_options = {
file_manager = "${pkgs.kdePackages.dolphin}/bin/dolphin";
};
};
};
# Oh boyee I love Emacs
programs.emacs = {
enable = true;
package = pkgs.emacs-gtk;
extraPackages = epkgs: [
epkgs.nix-mode
epkgs.nixfmt
];
};
home.packages = with pkgs; [
tree # Nice file tree views w/ permissions
linux-wifi-hotspot # For hotspotting while over ethernet
neofetch # Muh epic r1ce!!!
hyfetch # basically neofetch but with queer flags
htop # OG resource manager
btop # Pretty resource manager
imagemagick # For converting images into other fmts
sxiv # Minimal image viewer
mpv # Media player
zathura # PDF/CBZ/EPUB/DJVU reader
obsidian # For epic note taking (really just mediocre journaling)
keepassxc # Secure password manager
ghostty # Terminal emulator
irssi # Terminal IRC client
qutebrowser # Neat browser with vim keybindings
# nyxt # Customizable browser
fooyin # Closest thing to foobar2000 native on Linux
nicotine-plus # FOSS client for SoulSeek
kdePackages.dolphin # GUI File Manager
# Fonts
nerd-fonts.jetbrains-mono
miracode
monocraft
];
fonts.fontconfig.enable = true;
home.file = {
# Ghostty
".config/ghostty/config" .source = dotfiles/ghostty/config;
# Neovim
".config/nvim/init.lua" .source = dotfiles/nvim/init.lua;
# Emacs
".emacs.d/init.el" .source = dotfiles/.emacs.d/init.el;
# MPV
".config/mpv/mpv.conf" .source = dotfiles/mpv/mpv.conf;
# Neofetch
".config/neofetch/config.conf" .source = dotfiles/neofetch/config.conf;
# Hyprland
".config/hypr/bg.jpg" .source = dotfiles/hypr/bg.jpg;
".config/hypr/hyprland.conf" .source = dotfiles/hypr/hyprland.conf;
".config/hypr/start.sh" .source = dotfiles/hypr/start.sh;
# Waybar
".config/waybar/config" .source = dotfiles/waybar/config;
".config/waybar/style.css" .source = dotfiles/waybar/style.css;
};
home.sessionVariables = {
EDITOR = "nvim";
};
programs.home-manager.enable = true;
}