-
Notifications
You must be signed in to change notification settings - Fork 0
Home Applications
User-level applications managed through Home Manager in NullOS.
Home Manager applications are user-specific and don't require sudo to install. They're defined in home/default.nix and individual module files.
Rebuild command:
home-manager switch --flake .Or rebuild entire system (includes home-manager):
sudo nixos-rebuild switch --flake .#hostnameWeb Browsers:
- Configured via
vars.browserin variables.nix - Common: Brave, Firefox, Chromium
Communication:
- Discord
- Slack (if enabled)
- Signal Desktop
Media:
- Spotify
- VLC
- MPV
Productivity:
- VSCode (configured in
home/vscode.nix) - Obsidian
- LibreOffice
File Management:
-
yazi- Terminal file manager (configured inhome/yazi/) -
bat- Cat alternative with syntax highlighting -
eza- Modern ls replacement -
zoxide- Smart directory jumper
System Info:
-
fastfetch- System information display (configured inhome/fastfetch/) -
bottom- Process/system monitor
Shell Tools:
-
tealdeer- Fast tldr client -
ripgrep- Fast grep -
fd- Fast find -
fzf- Fuzzy finder
Editors:
-
neovim- Via NVF (configured inhome/nvf.nix) -
vscode- With extensions
Version Control:
-
gh- GitHub CLI (configured inhome/gh.nix) - Git configured in
home/git.nix
Tools:
docker-composekubectl- Language-specific tools (per project)
Programs with full Home Manager modules:
Ghostty (home/ghostty.nix):
programs.ghostty = {
enable = true;
settings = {
font-family = "JetBrainsMono Nerd Font";
font-size = 12;
theme = "gruvbox";
};
};Zsh (home/zsh/):
programs.zsh = {
enable = true;
enableCompletion = true;
autosuggestion.enable = true;
syntaxHighlighting.enable = true;
oh-my-zsh = {
enable = true;
plugins = [ "git" "sudo" ];
};
};Starship (home/starship.nix):
programs.starship = {
enable = true;
settings = {
format = "$all";
# Custom configuration
};
};Yazi (home/yazi/):
programs.yazi = {
enable = true;
enableZshIntegration = true;
settings = {
manager = {
show_hidden = true;
sort_by = "natural";
};
};
};Git (home/git.nix):
programs.git = {
enable = true;
userName = vars.gitUsername;
userEmail = vars.gitEmail;
extraConfig = {
init.defaultBranch = "main";
pull.rebase = true;
};
};GitHub CLI (home/gh.nix):
programs.gh = {
enable = true;
settings = {
git_protocol = "ssh";
prompt = "enabled";
};
};Bat (home/bat.nix):
programs.bat = {
enable = true;
config = {
theme = "gruvbox-dark";
paging = "never";
};
};Eza (home/eza.nix):
programs.eza = {
enable = true;
enableZshIntegration = true;
git = true;
icons = true;
};Zoxide (home/zoxide.nix):
programs.zoxide = {
enable = true;
enableZshIntegration = true;
};Hyprland (home/hyprland/):
- Core settings
- Keybindings
- Window rules
- Animations
- Scratchpads
See Hyprland for details.
Waybar (home/waybar/):
- System information
- Workspace indicators
- System tray
- Custom modules
See Waybar for details.
SwayNC (home/swaync.nix):
services.swaync = {
enable = true;
settings = {
positionX = "right";
positionY = "top";
};
};SwayOSD (home/swayosd.nix):
services.swayosd = {
enable = true;
};Rofi (home/rofi/):
See Rofi for details.
Stylix (home/stylix.nix):
Automatic theming for:
- GTK applications
- Qt applications
- Terminal colors
- Editor themes
- Cursor theme
See Theming for details.
LibreOffice (home/office.nix):
home.packages = with pkgs; [
libreoffice-fresh
];Bottles (home/bottles.nix):
home.packages = with pkgs; [
bottles
];nwg-displays (home/nwg-displays.nix):
home.packages = with pkgs; [
nwg-displays
];Swappy (home/swappy.nix):
home.packages = with pkgs; [
swappy
grim
slurp
];Edit home/default.nix:
home.packages = with pkgs; [
# Existing packages...
# Add new package
discord
spotify
vlc
];Create dedicated file (e.g., home/firefox.nix):
{ config, pkgs, ... }:
{
programs.firefox = {
enable = true;
profiles.default = {
settings = {
"browser.startup.homepage" = "about:blank";
};
bookmarks = [
{
name = "NixOS";
url = "https://nixos.org";
}
];
};
};
}Import in home/default.nix:
imports = [
./firefox.nix
];home.packages = with pkgs; [
discord
slack
telegram-desktop
signal-desktop
zoom-us
teams-for-linux
];home.packages = with pkgs; [
spotify
vlc
mpv
rhythmbox
# Image editing
gimp
inkscape
# Video editing
kdenlive
obs-studio
];home.packages = with pkgs; [
obsidian
notion-app-enhanced
# Office
libreoffice-fresh
onlyoffice-bin
# PDF
okular
zathura
];home.packages = with pkgs; [
vscode
postman
dbeaver
# Containers
docker-compose
kubectl
k9s
];XDG Directories (home/xdg.nix):
xdg = {
enable = true;
userDirs = {
enable = true;
createDirectories = true;
desktop = "${config.home.homeDirectory}/Desktop";
documents = "${config.home.homeDirectory}/Documents";
download = "${config.home.homeDirectory}/Downloads";
music = "${config.home.homeDirectory}/Music";
pictures = "${config.home.homeDirectory}/Pictures";
videos = "${config.home.homeDirectory}/Videos";
};
mimeApps = {
enable = true;
defaultApplications = {
"text/html" = "firefox.desktop";
"application/pdf" = "okular.desktop";
"image/png" = "eog.desktop";
};
};
};gtk = {
enable = true;
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
};
gtk3.extraConfig = {
gtk-application-prefer-dark-theme = true;
};
gtk4.extraConfig = {
gtk-application-prefer-dark-theme = true;
};
};qt = {
enable = true;
platformTheme.name = "gtk";
style.name = "adwaita-dark";
};Home Manager can manage user systemd services:
systemd.user.services.my-service = {
Unit = {
Description = "My User Service";
};
Service = {
ExecStart = "${pkgs.my-package}/bin/my-command";
Restart = "always";
};
Install = {
WantedBy = [ "default.target" ];
};
};# In home/default.nix
home.packages = with pkgs; [
# Common packages
firefox
vscode
] ++ lib.optionals (vars.hostname == "nslapt") [
# Laptop only
brightnessctl
] ++ lib.optionals (vars.hostname == "nspc") [
# Desktop only
obs-studio
davinci-resolve
];home.sessionVariables = {
EDITOR = "nvim";
VISUAL = "code";
BROWSER = "firefox";
TERMINAL = "ghostty";
# Custom variables
MY_VAR = "value";
};Deploy configuration files:
home.file = {
".config/app/config.toml".text = ''
setting = "value"
'';
".local/bin/my-script" = {
executable = true;
text = ''
#!/usr/bin/env bash
echo "Hello"
'';
};
};home-manager packagesecho $PATH | tr ':' '\n'which firefox
readlink $(which firefox)Edit home/default.nix and remove package:
home.packages = with pkgs; [
firefox
# discord # Removed
];Rebuild:
home-manager switch --flake .home.packages = [
(pkgs.package1.override {
# Override dependencies
})
];Use priority:
home.packages = [
(pkgs.package1.overrideAttrs (old: {
meta = old.meta // { priority = 0; };
}))
pkgs.package2 # Lower priority (10 default)
];systemctl --user status service-name
journalctl --user -u service-name- Organize by Category - Group related packages
- Use Program Modules - When available
- Comment Your Additions - Note why installed
- Test Before Committing - Build first
- Keep Clean - Remove unused packages
- System Applications - System-level packages
- Adding Applications - Detailed installation guide
- Customization Guide - Customize configurations
- Hyprland - Desktop environment
- Theming - Appearance customization