feat: initial m3ta-home structure

- flake.nix with nixpkgs, home-manager, nix-colors, m3ta-nixpkgs, agenix, NUR inputs
- lib/mkHome.nix: compose HM config from user + identity + context + sets
- profiles/base: shell, cli-tools, secrets (always loaded)
- profiles/contexts/desktop: WM, apps, theme, ghostty
- profiles/contexts/server: minimal headless
- profiles/sets/coding: core (git, direnv, jq, rg), editor, lsp, languages, agents
- profiles/sets/gaming: steam, gamescope, gpu
- profiles/sets/media: obs, ffmpeg, kdenlive, handbrake, yt-dlp
- users/m3tam3re/identities: private.nix, work.nix (git, jj, ssh per identity)
- users/m3tam3re/preferences: cliphist, difftastic, base packages
This commit is contained in:
2026-05-02 09:08:40 +02:00
commit fbc31450de
73 changed files with 3368 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
# profiles/sets/coding/core/default.nix — Core coding tools (always loaded with coding set).
#
# Provides git (package + difftastic), direnv, and essential CLI dev tools.
# Git USER SETTINGS (name, email, signing) are managed by the identity module,
# NOT here — this module only handles git tooling.
#
# Note: git.nix is copied from nixos-config/home/coding/git/git.nix
# It handles git.enable, difftastic, jujutsu, etc. but identity-specific
# settings (user.name, user.email) should be set by the identity module.
{...}: {
imports = [
./git.nix
./direnv.nix
./packages.nix
];
}

View File

@@ -0,0 +1,8 @@
# profiles/sets/coding/core/direnv.nix
# direnv + nix-direnv for automatic per-project environments.
{...}: {
programs.direnv = {
enable = true;
nix-direnv.enable = true;
};
}

View File

@@ -0,0 +1,41 @@
# Git configuration with signing, aliases, and global ignore.
# Identity and host-specific SSH keys are set per-host in home/m3tam3re/.
{
lib,
pkgs,
...
}:
with lib; {
programs.git = {
enable = true;
signing.format = null;
settings = {
user = {
name = lib.mkDefault "m3tam3re";
email = lib.mkDefault "p@m3ta.dev";
};
core.excludesfile = "~/.gitignore_global";
init.defaultBranch = "master";
alias = {
st = "status";
logd = "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit";
};
};
};
programs.difftastic.enable = true;
programs.jujutsu = {
enable = true;
settings = {
user = {
email = "m@m3tam3re.com";
name = "Sascha Koenig";
};
};
};
home.packages = with pkgs; [
lazygit
];
}

View File

@@ -0,0 +1,13 @@
# profiles/sets/coding/core/packages.nix
# Essential CLI dev tools — always available when coding set is active.
{pkgs, ...}: {
home.packages = with pkgs; [
curl
fd
file
hyperfine
jq
ripgrep
tree
];
}