- Add home/coding/languages/ with Python, JavaScript, Rust, Go, TypeScript - Move bun/nodejs from agents.nix to languages/javascript.nix - Move python3 with packages to languages/python.nix - Move npm config to javascript.nix (broader context) - Add language options to m3-ares and m3-kratos host configs - Move pyrefly from agents.nix to lsp/servers.nix - Remove duplicate python3 reference (build conflict fix) - Remove unused base/secrets/cli-tools/ duplicates
139 lines
3.9 KiB
Nix
139 lines
3.9 KiB
Nix
# m3-kratos — AMD desktop workstation.
|
|
# Context: desktop | Profiles: coding, gaming, media
|
|
{
|
|
config,
|
|
lib,
|
|
...
|
|
}: let
|
|
homeLib = import ../lib {inherit lib;};
|
|
in
|
|
with lib; {
|
|
imports = [
|
|
(homeLib.mkHomeConfig {
|
|
profiles = ["coding" "gaming" "media"];
|
|
context = "desktop";
|
|
})
|
|
./home.nix
|
|
];
|
|
|
|
config = mkMerge [
|
|
{
|
|
# Base CLI tools (new namespace)
|
|
base = {
|
|
shell = {
|
|
nushell.enable = true;
|
|
starship.enable = true;
|
|
};
|
|
cliTools = {
|
|
fzf.enable = true;
|
|
nitch.enable = true;
|
|
television.enable = true;
|
|
};
|
|
secrets.enable = true;
|
|
};
|
|
|
|
# Desktop features (new namespace)
|
|
desktop = {
|
|
wm = {
|
|
hyprland.enable = true;
|
|
rofi.enable = true;
|
|
wayland.enable = true;
|
|
};
|
|
apps = {
|
|
crypto.enable = true;
|
|
obsidian.enable = true;
|
|
office.enable = true;
|
|
};
|
|
theme = {
|
|
fonts.enable = true;
|
|
wallpapers.enable = true;
|
|
};
|
|
};
|
|
|
|
# Coding environment
|
|
coding = {
|
|
editors = {
|
|
neovim.enable = true;
|
|
zed.enable = true;
|
|
};
|
|
lsp.enable = true;
|
|
languages = {
|
|
python.enable = true;
|
|
javascript.enable = true;
|
|
rustToolchain.enable = true;
|
|
go.enable = true;
|
|
typescript.enable = true;
|
|
};
|
|
};
|
|
|
|
# Gaming profile features
|
|
profiles.gaming = {
|
|
steam.enable = true;
|
|
gamescope.enable = true;
|
|
};
|
|
|
|
# Media profile features
|
|
profiles.media = {
|
|
obs.enable = true;
|
|
ffmpeg.enable = true;
|
|
kdenlive.enable = true;
|
|
ytDlp.enable = true;
|
|
};
|
|
|
|
xdg = {
|
|
enable = true;
|
|
configFile."mimeapps.list".force = true;
|
|
mimeApps = {
|
|
enable = true;
|
|
associations.added = {
|
|
"application/zip" = ["org.gnome.FileRoller.desktop"];
|
|
"application/csv" = ["calc.desktop"];
|
|
"application/pdf" = ["vivaldi-stable.desktop"];
|
|
"x-scheme-handler/http" = ["vivaldi-stable.desktop"];
|
|
"x-scheme-handler/https" = ["vivaldi-stable.desktop"];
|
|
};
|
|
defaultApplications = {
|
|
"application/zip" = ["org.gnome.FileRoller.desktop"];
|
|
"application/csv" = ["calc.desktop"];
|
|
"application/pdf" = ["vivaldi-stable.desktop"];
|
|
"application/md" = ["dev.zed.Zed.desktop"];
|
|
"application/text" = ["dev.zed.Zed.desktop"];
|
|
"x-scheme-handler/http" = ["vivaldi-stable.desktop"];
|
|
"x-scheme-handler/https" = ["vivaldi-stable.desktop"];
|
|
};
|
|
};
|
|
};
|
|
}
|
|
|
|
# Host-specific Hyprland monitor and workspace layout (dual 1440p monitors)
|
|
(mkIf config.desktop.wm.hyprland.enable {
|
|
wayland.windowManager.hyprland = {
|
|
enable = true;
|
|
settings = {
|
|
monitor = [
|
|
"DP-1,2560x1440@144,0x0,1"
|
|
"DP-2,2560x1440@144,2560x0,1"
|
|
];
|
|
workspace = [
|
|
"1, monitor:DP-1, default:true"
|
|
"2, monitor:DP-1"
|
|
"3, monitor:DP-1"
|
|
"4, monitor:DP-2"
|
|
"5, monitor:DP-2"
|
|
"6, monitor:DP-2"
|
|
"7, monitor:DP-2"
|
|
];
|
|
windowrule = [
|
|
"match:class dev.zed.Zed, workspace 1"
|
|
"match:class Msty, workspace 1"
|
|
"match:class ^(com.obsproject.Studio)$, workspace 2"
|
|
"match:class ^(brave-browser)$, workspace 4, opacity 1.0"
|
|
"match:class ^(vivaldi-stable)$, workspace 4, opacity 1.0"
|
|
"match:class ^steam_app_\\d+$, idle_inhibit focus"
|
|
];
|
|
};
|
|
};
|
|
})
|
|
];
|
|
}
|