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:
16
profiles/sets/coding/core/default.nix
Normal file
16
profiles/sets/coding/core/default.nix
Normal 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
|
||||
];
|
||||
}
|
||||
8
profiles/sets/coding/core/direnv.nix
Normal file
8
profiles/sets/coding/core/direnv.nix
Normal 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;
|
||||
};
|
||||
}
|
||||
41
profiles/sets/coding/core/git.nix
Normal file
41
profiles/sets/coding/core/git.nix
Normal 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
|
||||
];
|
||||
}
|
||||
13
profiles/sets/coding/core/packages.nix
Normal file
13
profiles/sets/coding/core/packages.nix
Normal 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
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user