commit - e021a8e44e6ab8d64b847fb7f42e55e0b64749c7
commit + 0d76a0ad596a70faaf9a0a288ba8742b768f061f
blob - 86296552169f7686fa5fa96087ca45291078f3a6
blob + eff6ca231cde301687079063307e6d48d9a7148c
--- README.md
+++ README.md
pkgs/
librepods.nix # LibrePods (control AirPods) compilado de fuente
clamui.nix # GUI de ClamAV
- x-minecraft-launcher.nix
```
## Stack
blob - b19c762c63942d472a4416a5f12c401687b3d73c
blob + c7702485fff3a7585a950bba0a8156d5e61063f7
--- home/ale/home.nix
+++ home/ale/home.nix
# systemd.user.service de más abajo (autostart en segundo plano) -- un solo
# callPackage evita declarar la misma derivación dos veces.
librepodsPkg = pkgs.callPackage ../../pkgs/librepods.nix { };
+
in
{
imports = [
unzip # usado por varios plugins de nvim al descomprimir descargas (ej. releases de GitHub)
gcc # fallback nativo de blink.cmp si no baja su binario prebuilt
gnumake # ídem
- bubblewrap # bwrap -- requerido por claude-science para su sandbox
- # (sin esto corre unsandboxed con --dangerously-no-sandbox, full
- # read/write de $HOME y red sin restricción)
- socat # requerido también por claude-science: puentea la red del
- # sandbox de Linux (bwrap aísla la red; socat es el bridge)
-
# --- LSPs/formatters/linters de los extras de LazyVim (ver lazyvim.json) ---
# Mason (el instalador default de LazyVim) no funciona en NixOS: no
# puede correr binarios bajados de internet (store inmutable, sin
meslo-lgs-nf # Nerd Font que recomienda p10k para sus glifos/iconos
pfetch # info del sistema al abrir terminal (ver programs.zsh.initContent)
fzf # binario que fzf-tab invoca para el menú interactivo del Tab (ver programs.zsh.plugins)
- weechat # cliente IRC de terminal -- sin módulo declarativo en home-manager
- # (no hay `programs.weechat`, se confirmó buscando en el source real del
- # input), así que la config de plugins/scripts queda a mano dentro de
- # weechat (`/script install ...`), no versionada en este repo.
btop # monitor de recursos en terminal. DMS no trae template propio para
# btop (a diferencia de Noctalia, que sí lo tenía) -- queda sin tema
- # Gruvbox automático, igual que yazi (ver modules/desktop.nix).
+ # Gruvbox automático.
obsidian # notas locales en Markdown -- paquete directo de nixpkgs, sin
# módulo declarativo propio (guarda su config/vaults dentro de cada
# vault, no hay nada que declarar acá).
};
Install.WantedBy = [ "graphical-session.target" ];
};
+
}
blob - 0f72e625e0ab38460ef84da42a24aef86b191db6
blob + 530d7e80ab5e6aed2822aa26250be31bc977fbc5
--- hosts/ale/configuration.nix
+++ hosts/ale/configuration.nix
vim
curl
wget
- claude-code
clamav # da el binario `clamscan` que invoca clamui (pkgs/clamui.nix, instalado vía home.nix)
uv # da `uvx` -- lanza el server MCP de kinocut (pip install kinocut aislado, sin venv manual)
ffmpeg # kinocut llama a los binarios ffmpeg/ffprobe por PATH -- mpv (modules/desktop.nix)
blob - 23eaef7cb8b19e855d3c15b275f9a8bd7693615e
blob + 6edcd9937e52ef25f52ae7e8f751fd654fa6a6c9
--- modules/desktop.nix
+++ modules/desktop.nix
nautilus # gestor de archivos GTK4 -- hereda el theme (matugen) de DMS solo
# (escribe gtk-4.0/gtk.css directo, confirmado en core/internal/
# matugen/matugen.go), sin necesidad de config aparte
- yazi # gestor de archivos TUI. DMS no trae template propio para yazi
- # (a diferencia de Noctalia, que sí lo tenía vía community_ids) --
- # queda sin tema Gruvbox automático hasta que exista un template.
kdePackages.breeze # estilo Qt que renderiza la paleta de KDE
kdePackages.plasma-integration # plugin de QPA platform theme (KDEPlasmaPlatformTheme6.so)
# que aplica kdeglobals a cualquier app Qt -- sin esto
blob - c2649c35b9baee9eee1c887ee782759a7e27b0b0
blob + 2f7a4a0596a217276120ff778459c8c6915a59af
--- modules/graphics.nix
+++ modules/graphics.nix
# más espacio en disco.
# heroic
- # Minecraft Java Edition. Reemplaza a prismlauncher (que sí estaba en
- # nixpkgs) por pedido explícito -- x-minecraft-launcher no tiene paquete
- # oficial en nixpkgs ni flake comunitario (confirmado buscando), así que
- # se empaqueta acá mismo desde el AppImage oficial. Ver
- # pkgs/x-minecraft-launcher.nix para el porqué del approach (AppImage
- # envuelto, no build desde fuente) y qué se confirmó en vivo.
- (callPackage ../pkgs/x-minecraft-launcher.nix { })
];
}
blob - e11aa365eb61044f2c4abf042a6a646cb75f5e11 (mode 644)
blob + /dev/null
--- pkgs/x-minecraft-launcher.nix
+++ /dev/null
-# X Minecraft Launcher (XMCL, voxelum/x-minecraft-launcher) empaquetado desde
-# el AppImage oficial de GitHub Releases.
-#
-# NO se compila de fuente (a diferencia de librepods.nix): es un monorepo
-# Electron + Vue + pnpm workspaces con módulos nativos -- una build Nix desde
-# cero sería un esfuerzo comparable a empaquetarlo para nixpkgs mismo, y no
-# hay flake/derivación comunitaria existente (confirmado buscando). El
-# AppImage x64 sí es 100% reproducible acá: fetchurl fija versión + hash, no
-# es un "bajar a mano" fuera de Nix.
-#
-# appimageTools.wrapType2 arma el FHS env (libs de Electron/Chromium) y
-# extrae el binario real -- confirmado en vivo contra el contenido
-# desempaquetado del AppImage (appimageTools.extract):
-# - Exec real del .desktop upstream: "AppRun --no-sandbox %U" (AppRun solo
-# exportaba LD_LIBRARY_PATH/XDG_DATA_DIRS y ejecutaba el binario `xmcl`)
-# - Icono: xmcl.png en usr/share/icons/hicolor/512x512/apps/
-# - `--no-sandbox` es necesario porque el `chrome-sandbox` setuid que trae
-# el AppImage no tiene los permisos correctos fuera de su entorno
-# original -- mismo motivo por el que el .desktop upstream ya lo pasaba.
-#
-# Build + smoke test verificados en vivo en esta máquina: `nix build` con
-# esta derivación compila, y `x-minecraft-launcher --version` corre y
-# devuelve "0.65.1" sin abrir ventana.
-#
-# Actualizar versión: bajar el nuevo tag de
-# https://github.com/voxelum/x-minecraft-launcher/releases, actualizar
-# `version` y recalcular `hash` con
-# `nix-prefetch-url --type sha256 <url-del-.AppImage>` + `nix hash convert
-# --hash-algo sha256 --to sri <hash>`.
-{ lib, appimageTools, fetchurl }:
-
-let
- pname = "x-minecraft-launcher";
- version = "0.65.1";
-
- src = fetchurl {
- url = "https://github.com/voxelum/x-minecraft-launcher/releases/download/v${version}/xmcl-${version}-x86_64.AppImage";
- hash = "sha256-t1+JT9OEJSLPnoEfCLo7b7ai9aLYdAaz8gxdqLfTIUw=";
- };
-
- appimageContents = appimageTools.extract { inherit pname version src; };
-in
-appimageTools.wrapType2 {
- inherit pname version src;
-
- extraInstallCommands = ''
- install -Dm444 ${appimageContents}/xmcl.desktop -t $out/share/applications
- install -Dm444 ${appimageContents}/usr/share/icons/hicolor/512x512/apps/xmcl.png -t $out/share/icons/hicolor/512x512/apps
- substituteInPlace $out/share/applications/xmcl.desktop \
- --replace-fail 'Exec=AppRun --no-sandbox %U' 'Exec=${pname} --no-sandbox %U'
- '';
-
- meta = with lib; {
- description = "Fully featured Minecraft launcher (mods, modpacks, CurseForge/Modrinth integration)";
- homepage = "https://github.com/voxelum/x-minecraft-launcher";
- license = licenses.mit; # confirmado en el LICENSE real del repo
- platforms = [ "x86_64-linux" ];
- mainProgram = "x-minecraft-launcher";
- sourceProvenance = with sourceTypes; [ binaryNativeCode ];
- };
-}