nix-conf/home-manager/home.nix
Thiago Sposito 095e9f4f6b feat: initialize repo with NixOS and Home Manager configs
- Add .gitignore for common languages, tools, and OS/editor artifacts
- Configure .gitattributes for Git LFS (fonts, images, archives, ISOs)
- Add README with repo description
- Add flake.nix defining inputs and outputs for NixOS, Home Manager, and related modules
- Introduce home-manager configs:
  - Base home.nix with packages, services, and programs
  - Hyprland WM configuration (waybar, fuzzel, keybindings, theming)
  - Vim (nixvim) setup with LSP and plugins
  - Zsh setup with aliases, Oh My Zsh, clipboard helpers
  - Systemd user services (e.g., librespot)
- Add scripts (GPU monitor, RAM build helper, install automation)
- Add host configurations:
  - Nixbook (Apple laptop) with hardware, disko, and install script
  - Nixstation (desktop) with firewall, virtualization, Btrfs scrub timer
  - Nixtest (test VM) with QEMU + Alpine-based install test harness
  - Common modules (network, NVIDIA, rclone, screen, keychron, users)
- Include statix config for linting
2025-08-20 23:49:49 -03:00

149 lines
3.1 KiB
Nix

{ config
, inputs
, lib
, pkgs
, ...
}:
{
imports = [
./hyprland
./vim.nix
./zsh.nix
];
nixpkgs = {
config = {
allowUnfree = true;
config.permittedInsecurePackages = [
"libsoup-2.74.3"
];
# Workaround for https://github.com/nix-community/home-manager/issues/2942
# nixpkgs.config.allowUnfreePredicate =
# pkg:
# builtins.elem (lib.getName pkg) [
# "steam"
# "steam-original"
# "steam-run"
# "steamtinkerlaunch"
# ];
};
};
home = {
homeDirectory = "/home/thiago";
packages = with pkgs; [
bambu-studio
direnv
fira-code
firefox
heroic
hwinfo
hydralauncher
inkscape
keymapp
lazygit
libinput
librespot
luarocks
nil
nixpkgs-fmt
nordic
obsidian
python3
python3Packages.pip
rclone
ripgrep
shfmt
statix
stylua
sysbench
transmission_4
uget
unzip
];
username = "thiago";
};
programs = {
git = {
aliases = {
br = "branch";
ca = "commit --amend";
can = "commit --amend --no-edit";
ci = "commit";
co = "checkout";
lg = "log --oneline --graph --decorate --all";
st = "status";
};
enable = true;
extraConfig = {
color.ui = "auto";
core = {
editor = "nvim";
autocrlf = "input";
};
init.defaultBranch = "main";
pull.rebase = true;
};
lfs.enable = true;
signing = {
key = "3065EA73A976D430";
signByDefault = true;
};
userEmail = "th.spo@pm.me";
userName = "Thiago Sposito";
};
home-manager.enable = true;
kitty = {
enable = true;
keybindings = {
"ctrl+alt+left" = "resize_window narrower";
"ctrl+alt+right" = "resize_window wider";
"ctrl+alt+up" = "resize_window taller";
"ctrl+alt+down" = "resize_window shorter";
};
settings = {
hide_window_decorations = "titlebar-only";
font_size = 16;
font = "ComicShannsMono Nerd Font Mono";
inactive_text_alpha = "0.6";
background_blur = 16;
background_opacity = 0.0;
};
themeFile = "Nord";
};
vscode = {
enable = true;
};
};
systemd.user.services.librespot-connect = {
Unit = {
Description = "Librespot (Spotify Connect) bound to LAN interface";
After = [ "network.target" ];
};
Service = {
ExecStart = "${pkgs.librespot}/bin/librespot \
--name LS-TEST \
--backend pulseaudio \
--device default \
--bitrate 320 \
--disable-audio-cache \
--enable-volume-normalisation \
--initial-volume 75 \
--zeroconf-port 17005";
Restart = "on-failure";
BindToDevice = "wlp7s0"; # Force binding to LAN interface
};
Install = {
WantedBy = [ "default.target" ];
};
};
systemd.user.startServices = "sd-switch";
home.stateVersion = "24.05";
}