texTemplate/flake.nix

110 lines
3.5 KiB
Nix
Raw Normal View History

{
description = "Put a short description here";
inputs = {
nixpkgs = {
type = "indirect";
id = "nixpkgs";
};
};
outputs = {self, nixpkgs} :
let
#Generate a user-friendly version number.
version = builtins.substring 0 8 self.lastModifiedDate;
# System types to support.
supportedSystems = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ];
# Helper function to generate an attrset '{ x86_64-linux = f "x86_64-linux"; ... }'.
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
# Nixpkgs instantiated for supported system types.
nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; });
in {
packages = forAllSystems (system:
let
pkgs = nixpkgsFor.${system};
# LaTex package dependencies
latexdeps = {inherit (pkgs.texlive) scheme-small;};
latex = pkgs.texlive.combine latexdeps;
latexrun = pkgs.latexrun;
in {
default = pkgs.stdenvNoCC.mkDerivation {
name = "output.pdf";
buildInputs = [latex latexrun];
src = self;
buildPhase = ''
latexrun -o output.pdf src/Main.tex
'';
installPhase = ''
mkdir -p $out
cp output.pdf $out/output.pdf
'';
};
}
);
devShells = forAllSystems (system:
let
pkgs = nixpkgsFor.${system};
# Needs to be in sync with latex dependencie above, Don't
# know how to fix this as we need to now the system to get
# the packages. The plus side is you can have different packages in your
# development environment than in your build one.
latexdeps = {inherit (pkgs.texlive) scheme-small;};
latex = pkgs.texlive.combine latexdeps;
latexrun = pkgs.latexrun;
in {
default =
let
texlab = pkgs.texlab;
myKakoune =
let
# this could also be done by generating toml with the
# nixpkgs lib, but I'm lazy
kak-lsp-config = pkgs.writeTextFile {
name = "kak-lsp-config.toml";
text = ''
[language.latex]
filetypes = ["latex"]
roots = [".git"]
command = "texlab"
'';
};
config = pkgs.writeTextFile (rec {
name = "kakrc.kak";
destination = "/share/kak/autoload/${name}";
text = ''
colorscheme solarized-dark
set global tabstop 2
set global indentwidth 2
eval %sh{kak-lsp --kakoune --session $kak_session -c ${kak-lsp-config}}
hook global WinSetOption filetype=(latex) %{
lsp-auto-hover-enable
lsb-enable-window
}
'';
});
in
pkgs.kakoune.override {
plugins = with pkgs.kakounePlugins; [kak-lsp config];
};
in
pkgs.mkShellNoCC {
packages = [myKakoune texlab pkgs.git latex latexrun];
shellHook = ''
alias ..="cd .."
export KAKOUNE_CONFIG_DIR="/this/does/not/exist"
kak -d -s latexPackage &
alias vim="kak -c latexPackage"
'';
};
}
);
};
}