This commit is contained in:
@@ -24,8 +24,20 @@ let
|
||||
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
|
||||
{
|
||||
inherit doomDir templateDataFiles templateFiles;
|
||||
packages =
|
||||
linuxWindowPackages
|
||||
++ clipboardPackages
|
||||
|
||||
@@ -33,11 +33,7 @@ in
|
||||
}
|
||||
(lib.mkIf cfg.enable {
|
||||
home.packages = emacs.packages;
|
||||
xdg.dataFile = {
|
||||
"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;
|
||||
};
|
||||
xdg.dataFile = emacs.templateDataFiles;
|
||||
services = {
|
||||
lorri.enable = pkgs.stdenv.isLinux;
|
||||
emacs = {
|
||||
@@ -51,7 +47,7 @@ in
|
||||
};
|
||||
programs.doom-emacs = {
|
||||
enable = true;
|
||||
doomDir = ../../../dotfiles/doom;
|
||||
inherit (emacs) doomDir;
|
||||
doomLocalDir = "${config.xdg.dataHome}/nix-doom";
|
||||
tangleArgs = "--all config.org";
|
||||
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 =
|
||||
{ system, pkgs, ... }:
|
||||
let
|
||||
portableEmacs = import ../modules/dev/emacs/portable.nix {
|
||||
inherit inputs pkgs;
|
||||
};
|
||||
mcpServerPkg = pkgs.python3Packages.buildPythonPackage {
|
||||
pname = "nixos-mcp-server";
|
||||
version = "0.1.0";
|
||||
@@ -52,9 +55,11 @@
|
||||
};
|
||||
in
|
||||
{
|
||||
apps.doom-emacs = portableEmacs.app;
|
||||
packages =
|
||||
(inputs.jawz-scripts.packages.${system} or { })
|
||||
// {
|
||||
doom-emacs = portableEmacs.package;
|
||||
mcp-tests = mcpTests;
|
||||
nixos-mcp = nixosMcp;
|
||||
nixos-mcp-server = mcpServerPkg;
|
||||
|
||||
Reference in New Issue
Block a user