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:
10
profiles/sets/coding/languages/default.nix
Normal file
10
profiles/sets/coding/languages/default.nix
Normal file
@@ -0,0 +1,10 @@
|
||||
# Language runtimes — Python, JavaScript, Rust, Go, TypeScript.
|
||||
{...}: {
|
||||
imports = [
|
||||
./python.nix
|
||||
./javascript.nix
|
||||
./rust-toolchain.nix
|
||||
./go.nix
|
||||
./typescript.nix
|
||||
];
|
||||
}
|
||||
19
profiles/sets/coding/languages/go.nix
Normal file
19
profiles/sets/coding/languages/go.nix
Normal file
@@ -0,0 +1,19 @@
|
||||
# Go toolchain — compiler and language server.
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.coding.languages.go;
|
||||
in {
|
||||
options.coding.languages.go.enable = mkEnableOption "Go toolchain";
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
go
|
||||
gopls
|
||||
];
|
||||
};
|
||||
}
|
||||
25
profiles/sets/coding/languages/javascript.nix
Normal file
25
profiles/sets/coding/languages/javascript.nix
Normal file
@@ -0,0 +1,25 @@
|
||||
# JavaScript/TypeScript runtime — Node.js and Bun.
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.coding.languages.javascript;
|
||||
npmGlobalPrefix = "${config.home.homeDirectory}/.npm-global";
|
||||
in {
|
||||
options.coding.languages.javascript.enable = mkEnableOption "JavaScript runtime (Node.js + Bun)";
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
nodejs
|
||||
bun
|
||||
];
|
||||
|
||||
home.file.".npmrc".text = ''
|
||||
prefix=${npmGlobalPrefix}
|
||||
'';
|
||||
home.sessionVariables.NPM_CONFIG_PREFIX = npmGlobalPrefix;
|
||||
};
|
||||
}
|
||||
35
profiles/sets/coding/languages/python.nix
Normal file
35
profiles/sets/coding/languages/python.nix
Normal file
@@ -0,0 +1,35 @@
|
||||
# Python runtime with pip and uv.
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.coding.languages.python;
|
||||
in {
|
||||
options.coding.languages.python = {
|
||||
enable = mkEnableOption "Python runtime with pip and uv";
|
||||
extraPackages = mkOption {
|
||||
type = types.listOf types.package;
|
||||
default = [];
|
||||
example = literalExpression "[ pkgs.python3Packages.numpy ]";
|
||||
description = "Additional Python packages to include";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
(pkgs.python3.withPackages (ps:
|
||||
with ps;
|
||||
[
|
||||
uv
|
||||
]
|
||||
++ cfg.extraPackages))
|
||||
(writeShellScriptBin "pip" "exec uv pip $@")
|
||||
(writeShellScriptBin "pip3" "exec uv pip $@")
|
||||
pyrefly
|
||||
ruff
|
||||
];
|
||||
};
|
||||
}
|
||||
20
profiles/sets/coding/languages/rust-toolchain.nix
Normal file
20
profiles/sets/coding/languages/rust-toolchain.nix
Normal file
@@ -0,0 +1,20 @@
|
||||
# Rust toolchain — compiler, package manager, and language server.
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.coding.languages.rustToolchain;
|
||||
in {
|
||||
options.coding.languages.rustToolchain.enable = mkEnableOption "Rust toolchain";
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
rustc
|
||||
cargo
|
||||
rust-analyzer
|
||||
];
|
||||
};
|
||||
}
|
||||
19
profiles/sets/coding/languages/typescript.nix
Normal file
19
profiles/sets/coding/languages/typescript.nix
Normal file
@@ -0,0 +1,19 @@
|
||||
# TypeScript support — language server and type checking tools.
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.coding.languages.typescript;
|
||||
in {
|
||||
options.coding.languages.typescript.enable = mkEnableOption "TypeScript support";
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
typescript
|
||||
typescript-language-server
|
||||
];
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user