This commit is contained in:
@@ -24,8 +24,20 @@ let
|
|||||||
inherit (pkgs) xdotool;
|
inherit (pkgs) xdotool;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
doomDir = ../../../dotfiles/doom;
|
||||||
|
templateFiles = {
|
||||||
|
"events.org" = ../../../dotfiles/doom/templates/events.org;
|
||||||
|
"default.org" = ../../../dotfiles/doom/templates/default.org;
|
||||||
|
"programming.org" = ../../../dotfiles/doom/templates/programming.org;
|
||||||
|
};
|
||||||
|
templateDataFiles = {
|
||||||
|
"doom/templates/events.org".source = templateFiles."events.org";
|
||||||
|
"doom/templates/default.org".source = templateFiles."default.org";
|
||||||
|
"doom/templates/programming.org".source = templateFiles."programming.org";
|
||||||
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
inherit doomDir templateDataFiles templateFiles;
|
||||||
packages =
|
packages =
|
||||||
linuxWindowPackages
|
linuxWindowPackages
|
||||||
++ clipboardPackages
|
++ clipboardPackages
|
||||||
|
|||||||
@@ -33,11 +33,7 @@ in
|
|||||||
}
|
}
|
||||||
(lib.mkIf cfg.enable {
|
(lib.mkIf cfg.enable {
|
||||||
home.packages = emacs.packages;
|
home.packages = emacs.packages;
|
||||||
xdg.dataFile = {
|
xdg.dataFile = emacs.templateDataFiles;
|
||||||
"doom/templates/events.org".source = ../../../dotfiles/doom/templates/events.org;
|
|
||||||
"doom/templates/default.org".source = ../../../dotfiles/doom/templates/default.org;
|
|
||||||
"doom/templates/programming.org".source = ../../../dotfiles/doom/templates/programming.org;
|
|
||||||
};
|
|
||||||
services = {
|
services = {
|
||||||
lorri.enable = pkgs.stdenv.isLinux;
|
lorri.enable = pkgs.stdenv.isLinux;
|
||||||
emacs = {
|
emacs = {
|
||||||
@@ -51,7 +47,7 @@ in
|
|||||||
};
|
};
|
||||||
programs.doom-emacs = {
|
programs.doom-emacs = {
|
||||||
enable = true;
|
enable = true;
|
||||||
doomDir = ../../../dotfiles/doom;
|
inherit (emacs) doomDir;
|
||||||
doomLocalDir = "${config.xdg.dataHome}/nix-doom";
|
doomLocalDir = "${config.xdg.dataHome}/nix-doom";
|
||||||
tangleArgs = "--all config.org";
|
tangleArgs = "--all config.org";
|
||||||
inherit (emacs) extraPackages;
|
inherit (emacs) extraPackages;
|
||||||
|
|||||||
109
modules/dev/emacs/portable.nix
Normal file
109
modules/dev/emacs/portable.nix
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
emacs = import ./common.nix {
|
||||||
|
lib = pkgs.lib;
|
||||||
|
inherit pkgs;
|
||||||
|
stylixEnabled = false;
|
||||||
|
emacsExtraConfig = "";
|
||||||
|
emacsExtraPackages = _epkgs: [ ];
|
||||||
|
};
|
||||||
|
portableFonts =
|
||||||
|
let
|
||||||
|
customFonts = pkgs.stdenvNoCC.mkDerivation {
|
||||||
|
name = "portable-emacs-fonts";
|
||||||
|
src = inputs.fonts;
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/share/fonts
|
||||||
|
find $src -type f \( \
|
||||||
|
-name "*.ttf" -o \
|
||||||
|
-name "*.otf" -o \
|
||||||
|
-name "*.woff" -o \
|
||||||
|
-name "*.woff2" \
|
||||||
|
\) -exec cp {} $out/share/fonts/ \;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in
|
||||||
|
builtins.attrValues {
|
||||||
|
inherit customFonts;
|
||||||
|
inherit (pkgs.nerd-fonts)
|
||||||
|
comic-shanns-mono
|
||||||
|
iosevka
|
||||||
|
caskaydia-cove
|
||||||
|
;
|
||||||
|
};
|
||||||
|
portableHome = inputs.home-manager.lib.homeManagerConfiguration {
|
||||||
|
inherit pkgs;
|
||||||
|
modules = [
|
||||||
|
../../../modules/home-manager.nix
|
||||||
|
../../../config/home-manager.nix
|
||||||
|
{
|
||||||
|
home = {
|
||||||
|
username = "portable";
|
||||||
|
homeDirectory = if pkgs.stdenv.isDarwin then "/Users/portable" else "/home/portable";
|
||||||
|
stateVersion = "23.05";
|
||||||
|
};
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
my = {
|
||||||
|
emacs.enable = true;
|
||||||
|
dev = {
|
||||||
|
nix.enable = true;
|
||||||
|
python.enable = true;
|
||||||
|
sh.enable = true;
|
||||||
|
};
|
||||||
|
shell.tools.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
extraSpecialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
outputs = inputs.self;
|
||||||
|
osConfig = null;
|
||||||
|
preferredShell = "zsh";
|
||||||
|
userEmail = "danilo.reyes.251@proton.me";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
templateFarm = pkgs.linkFarm "portable-emacs-templates" (
|
||||||
|
builtins.attrNames emacs.templateFiles
|
||||||
|
|> map (name: {
|
||||||
|
inherit name;
|
||||||
|
path = emacs.templateFiles.${name};
|
||||||
|
})
|
||||||
|
);
|
||||||
|
fontConfig = pkgs.makeFontsConf {
|
||||||
|
fontDirectories = map (font: "${font}/share/fonts") portableFonts;
|
||||||
|
};
|
||||||
|
package = pkgs.writeShellApplication {
|
||||||
|
name = "doom-emacs";
|
||||||
|
runtimeInputs = [
|
||||||
|
portableHome.config.programs.doom-emacs.finalEmacsPackage
|
||||||
|
]
|
||||||
|
++ portableHome.config.home.packages;
|
||||||
|
text = ''
|
||||||
|
export HOME="''${HOME:?HOME must be set}"
|
||||||
|
export XDG_CONFIG_HOME="''${XDG_CONFIG_HOME:-$HOME/.config}"
|
||||||
|
export XDG_CACHE_HOME="''${XDG_CACHE_HOME:-$HOME/.cache}"
|
||||||
|
export XDG_STATE_HOME="''${XDG_STATE_HOME:-$HOME/.local/state}"
|
||||||
|
export XDG_DATA_HOME="''${XDG_DATA_HOME:-$HOME/.local/share}"
|
||||||
|
export DOOMDIR="${emacs.doomDir}"
|
||||||
|
export DOOMLOCALDIR="$XDG_DATA_HOME/nix-doom"
|
||||||
|
export FONTCONFIG_FILE="${fontConfig}"
|
||||||
|
mkdir -p "$XDG_DATA_HOME/doom/templates" "$DOOMLOCALDIR" "$XDG_CACHE_HOME" "$XDG_STATE_HOME"
|
||||||
|
ln -sfn "${templateFarm}/events.org" "$XDG_DATA_HOME/doom/templates/events.org"
|
||||||
|
ln -sfn "${templateFarm}/default.org" "$XDG_DATA_HOME/doom/templates/default.org"
|
||||||
|
ln -sfn "${templateFarm}/programming.org" "$XDG_DATA_HOME/doom/templates/programming.org"
|
||||||
|
exec ${portableHome.config.programs.doom-emacs.finalEmacsPackage}/bin/emacs "$@"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
inherit package;
|
||||||
|
app = {
|
||||||
|
type = "app";
|
||||||
|
program = "${package}/bin/doom-emacs";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -3,6 +3,9 @@
|
|||||||
perSystem =
|
perSystem =
|
||||||
{ system, pkgs, ... }:
|
{ system, pkgs, ... }:
|
||||||
let
|
let
|
||||||
|
portableEmacs = import ../modules/dev/emacs/portable.nix {
|
||||||
|
inherit inputs pkgs;
|
||||||
|
};
|
||||||
mcpServerPkg = pkgs.python3Packages.buildPythonPackage {
|
mcpServerPkg = pkgs.python3Packages.buildPythonPackage {
|
||||||
pname = "nixos-mcp-server";
|
pname = "nixos-mcp-server";
|
||||||
version = "0.1.0";
|
version = "0.1.0";
|
||||||
@@ -52,9 +55,11 @@
|
|||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
apps.doom-emacs = portableEmacs.app;
|
||||||
packages =
|
packages =
|
||||||
(inputs.jawz-scripts.packages.${system} or { })
|
(inputs.jawz-scripts.packages.${system} or { })
|
||||||
// {
|
// {
|
||||||
|
doom-emacs = portableEmacs.package;
|
||||||
mcp-tests = mcpTests;
|
mcp-tests = mcpTests;
|
||||||
nixos-mcp = nixosMcp;
|
nixos-mcp = nixosMcp;
|
||||||
nixos-mcp-server = mcpServerPkg;
|
nixos-mcp-server = mcpServerPkg;
|
||||||
|
|||||||
Reference in New Issue
Block a user