From 49e91f2e1e25ac94a7caf1f206c5a9d4c08ed892 Mon Sep 17 00:00:00 2001 From: Dennis Frieberg Date: Fri, 17 Jun 2022 13:05:02 +0200 Subject: [PATCH] added nix flake template and modefied .gitignore --- .gitignore | 2 + flake.nix | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/Main.tex | 4 ++ 3 files changed, 115 insertions(+) create mode 100644 flake.nix create mode 100644 src/Main.tex diff --git a/.gitignore b/.gitignore index 747d42e..4414d18 100644 --- a/.gitignore +++ b/.gitignore @@ -301,3 +301,5 @@ TSWLatexianTemp* # Uncomment the next line to have this generated file ignored. #*Notes.bib +# Nix buid output +/result diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..36dd25b --- /dev/null +++ b/flake.nix @@ -0,0 +1,109 @@ +{ + 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" + ''; + }; + } + ); + }; +} + + diff --git a/src/Main.tex b/src/Main.tex new file mode 100644 index 0000000..d3cde85 --- /dev/null +++ b/src/Main.tex @@ -0,0 +1,4 @@ +\documentclass{scrartcl} +\begin{document} + Hi +\end{document}