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/contexts/desktop/apps/crypto.nix
Normal file
16
profiles/contexts/desktop/apps/crypto.nix
Normal file
@@ -0,0 +1,16 @@
|
||||
# Cryptocurrency applications — Bisq, Monero GUI, and Trezor Suite.
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.desktop.apps.crypto;
|
||||
in {
|
||||
options.desktop.apps.crypto.enable = mkEnableOption "enable crypto applications";
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [bisq2 monero-gui trezor-suite];
|
||||
};
|
||||
}
|
||||
10
profiles/contexts/desktop/apps/default.nix
Normal file
10
profiles/contexts/desktop/apps/default.nix
Normal file
@@ -0,0 +1,10 @@
|
||||
# Desktop apps aggregator — Obsidian, Office, web apps, crypto tools, and productivity.
|
||||
{...}: {
|
||||
imports = [
|
||||
./obsidian.nix
|
||||
./office.nix
|
||||
./webapps.nix
|
||||
./crypto.nix
|
||||
./productivity.nix
|
||||
];
|
||||
}
|
||||
25
profiles/contexts/desktop/apps/obsidian.nix
Normal file
25
profiles/contexts/desktop/apps/obsidian.nix
Normal file
@@ -0,0 +1,25 @@
|
||||
# Obsidian knowledge base with markdown MIME association.
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.desktop.apps.obsidian;
|
||||
in {
|
||||
options.desktop.apps.obsidian.enable = mkEnableOption "enable Obsidian knowledge base";
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.obsidian.enable = true;
|
||||
|
||||
xdg.mimeApps = {
|
||||
enable = true;
|
||||
associations.added = {
|
||||
"text/markdown" = ["obsidian.desktop"];
|
||||
};
|
||||
defaultApplications = {
|
||||
"text/markdown" = ["obsidian.desktop"];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
16
profiles/contexts/desktop/apps/office.nix
Normal file
16
profiles/contexts/desktop/apps/office.nix
Normal file
@@ -0,0 +1,16 @@
|
||||
# Office and productivity applications — LibreOffice and document tools.
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.desktop.apps.office;
|
||||
in {
|
||||
options.desktop.apps.office.enable = mkEnableOption "install office and paperwork apps";
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = [pkgs.libreoffice-fresh];
|
||||
};
|
||||
}
|
||||
18
profiles/contexts/desktop/apps/productivity.nix
Normal file
18
profiles/contexts/desktop/apps/productivity.nix
Normal file
@@ -0,0 +1,18 @@
|
||||
# Productivity tools — Pomodoro timer and focus utilities.
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.desktop.apps.productivity;
|
||||
in {
|
||||
options.desktop.apps.productivity.enable = mkEnableOption "enable productivity tools";
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
pomodoro-timer
|
||||
];
|
||||
};
|
||||
}
|
||||
56
profiles/contexts/desktop/apps/webapps.nix
Normal file
56
profiles/contexts/desktop/apps/webapps.nix
Normal file
@@ -0,0 +1,56 @@
|
||||
# Web application desktop entries — Teams, Outlook, Basecamp, and OpenCode launchers.
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
icons = {
|
||||
teams = pkgs.fetchurl {
|
||||
url = "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/microsoft-teams.svg";
|
||||
sha256 = "sha256-Pr9QS8nnXJq97r4/G3c6JXi34zxHl0ps9gcyI8cN/s8=";
|
||||
};
|
||||
outlook = pkgs.fetchurl {
|
||||
url = "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/microsoft-outlook.svg";
|
||||
sha256 = "sha256-3u8t5QNHFZvrAegxBiGicO4PjtMWhEaQSCv7MSSfLLc=";
|
||||
};
|
||||
opencode = pkgs.fetchurl {
|
||||
url = "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/opencode-dark.svg";
|
||||
sha256 = "1lms4f8habamvdh2qqqz9psx4py9wx23mmlkkds44pvrbq3bkj3n";
|
||||
};
|
||||
};
|
||||
in {
|
||||
xdg.desktopEntries = {
|
||||
teams = {
|
||||
name = "Microsoft Teams";
|
||||
exec = "launch-webapp https://teams.microsoft.com";
|
||||
comment = "Open Microsoft Teams as a Desktop App";
|
||||
categories = ["Application" "Network" "Chat"];
|
||||
terminal = false;
|
||||
icon = icons.teams;
|
||||
};
|
||||
outlook = {
|
||||
name = "Microsoft Outlook";
|
||||
exec = "launch-webapp https://outlook.office.com/mail/";
|
||||
comment = "Open Microsoft Outlook as a Desktop App";
|
||||
categories = ["Application" "Network"];
|
||||
terminal = false;
|
||||
icon = icons.outlook;
|
||||
};
|
||||
basecamp = {
|
||||
name = "Basecamp";
|
||||
exec = "launch-webapp https://3.basecamp.com/5996442/";
|
||||
comment = "Open Basecamp as a Desktop App";
|
||||
categories = ["Application" "Network"];
|
||||
terminal = false;
|
||||
icon = "${config.home.homeDirectory}/.local/share/icons/basecamp-logo.png";
|
||||
};
|
||||
opencode = {
|
||||
name = "Opencode";
|
||||
exec = "rofi-project-opener";
|
||||
comment = "Open Opencode Terminal App";
|
||||
categories = ["Application" "Development"];
|
||||
terminal = false;
|
||||
icon = icons.opencode;
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user