diff --git a/.helix/config.toml b/.helix/config.toml new file mode 100644 index 0000000..a4b9bfb --- /dev/null +++ b/.helix/config.toml @@ -0,0 +1,9 @@ +theme = "dracula" + +[editor] +text-width = 120 + +[editor.soft-wrap] +enable = true +wrap-at-text-width = true + diff --git a/.helix/languages.toml b/.helix/languages.toml new file mode 100644 index 0000000..f34d545 --- /dev/null +++ b/.helix/languages.toml @@ -0,0 +1,19 @@ +# This does not work, i do not know why +# [language-server.texlab] +# command = "texlab" +# args = ["-vvv", "--log-file", "/tmp/texlabLog"] +# [language-server.texlab.config] +# build.onSave = true +# build.executable = "latexrun" +# build.args = ["--bibtex-cmd", "biber", "--latex-args","'-synctex=1'","%f"] +# build.forwardSearcAfter = true +# forwardSearch.executable = "zathura" +# forwardSearch.args = ["--synctex-forward", "%l:1:%f", "%p"] + +# [language-server.ltex-ls-plus] +# command = "ltex-ls-plus" +# args = ["--log-file=", "/tmp/ltex.log"] + +[[language]] +name = "latex" +language-servers = [ "texlab", "ltex-ls-plus" ] diff --git a/flake.nix b/flake.nix index 72df471..7c628bd 100644 --- a/flake.nix +++ b/flake.nix @@ -8,106 +8,144 @@ }; }; - outputs = {self, nixpkgs} : - let - # name to be used as identifier for editor environments and such - name = "Name"; - #Generate a user-friendly version number. - version = builtins.substring 0 8 self.lastModifiedDate; + outputs = + { self, nixpkgs }: + let + # name to be used as identifier for editor environments and such + name = "Name"; + #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" ]; + # 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; + # 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; }); + # 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-full; }; + latex = pkgs.texlive.combine latexdeps; + latexrun = pkgs.latexrun; + in + { + default = pkgs.stdenvNoCC.mkDerivation { + name = "output.pdf"; + buildInputs = [ + latex + latexrun + pkgs.biber + ]; + src = self; + buildPhase = '' + cd src + latexrun -o ../output.pdf Main.tex + ''; + installPhase = '' + cd .. + mkdir -p $out + cp output.pdf $out/output.pdf + ''; + }; + } + ); + devShells = forAllSystems ( + system: + let + pkgs = nixpkgsFor.${system}; + in + (rec { + # This sets the default devShell + default = helix; + helix = pkgs.mkShellNoCC { + inputsFrom = [ self.outputs.packages.${system}.default ]; + packages = [ + pkgs.helix + pkgs.ltex-ls-plus + pkgs.texlab + pkgs.git + pkgs.zathura + pkgs.fzf + ]; + }; - 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 pkgs.biber]; - 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}; - in ( rec { - # This sets the default devShell - default = kakoune; - kakoune = - let - texlab = pkgs.texlab; - latexTmpDir = "src/latex.out/"; - 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" - # args = ["-vvvv", "--log-file", "/tmp/texlabLog"] - settings_section = "texlab" - [language.latex.settings.texlab.build] - onSave = true - executable = "latexrun" - args = ["--bibtex-cmd", "biber", "--latex-args", "'-synctex=1'","%f"] - forwardSearchAfter = true - [language.latex.settings.texlab.forwardSearch] - executable = "zathura" - args = ["--synctex-forward", "%l:1:%f", "%p"] - [language.latex.settings.texlab] - auxDirectory = "${latexTmpDir}" - ''; - }; - 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} --log /tmp/kak-lspLog -vvvv} - eval %sh{kak-lsp --kakoune --session $kak_session -c ${kak-lsp-config}} - hook global WinSetOption filetype=(latex) %{ - lsp-auto-hover-enable - lsp-enable-window - } - add-highlighter global/ number-lines - map global normal ': fzf-mode' - ''; - }); - in - pkgs.kakoune.override { - plugins = with pkgs.kakounePlugins; [fzf-kak kak-lsp config]; - }; - in + kakoune = + let + texlab = pkgs.callPackage (import ./texLab.nix) { }; + latexTmpDir = "src/latex.out/"; + 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" + args = ["-vvvv", "--log-file", "/tmp/texlabLog"] + settings_section = "texlab" + [language.latex.settings.texlab.build] + onSave = true + executable = "latexrun" + args = ["--bibtex-cmd", "biber", "--latex-args", "'-synctex=1'","%f"] + forwardSearchAfter = true + [language.latex.settings.texlab.forwardSearch] + executable = "zathura" + args = ["--synctex-forward", "%l:1:%f", "%p"] + [language.latex.settings.texlab] + auxDirectory = "${latexTmpDir}" + ''; + }; + 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} --log /tmp/kak-lspLog -vvvv} + eval %sh{kak-lsp --kakoune --session $kak_session -c ${kak-lsp-config}} + hook global WinSetOption filetype=(latex) %{ + lsp-auto-hover-enable + lsp-enable-window + } + add-highlighter global/ number-lines + map global normal ': fzf-mode' + ''; + }); + in + pkgs.kakoune.override { + plugins = with pkgs.kakounePlugins; [ + fzf-kak + kakoune-lsp + config + ]; + }; + in pkgs.mkShellNoCC { - inputsFrom = [self.outputs.packages.${system}.default]; - packages = [myKakoune texlab pkgs.git pkgs.zathura pkgs.fzf]; + inputsFrom = [ self.outputs.packages.${system}.default ]; + packages = [ + myKakoune + texlab + pkgs.git + pkgs.zathura + pkgs.fzf + ]; # TODO only try to start the kakoune session if no session with that # name exists shellHook = '' @@ -117,27 +155,29 @@ kak -d -s ${name} & alias vim="kak -c ${name}" ''; - }; - texstudio = - pkgs.mkShellNoCC { - inputsFrom = [self.outputs.packages.${system}.default]; - packages = [pkgs.texstudio pkgs.git]; + }; + texstudio = pkgs.mkShellNoCC { + inputsFrom = [ self.outputs.packages.${system}.default ]; + packages = [ + pkgs.texstudio + pkgs.git + ]; shellHook = '' texstudio ''; - }; + }; - texmaker = - pkgs.mkShellNoCC { - inputsFrom = [self.outputs.packages.${system}.default]; - packages = [pkgs.texmaker pkgs.git]; + texmaker = pkgs.mkShellNoCC { + inputsFrom = [ self.outputs.packages.${system}.default ]; + packages = [ + pkgs.texmaker + pkgs.git + ]; shellHook = '' texmaker ''; - }; - }) - ); - }; + }; + }) + ); + }; } - - diff --git a/src/.latexmkrc b/src/.latexmkrc new file mode 100644 index 0000000..0097b1a --- /dev/null +++ b/src/.latexmkrc @@ -0,0 +1,7 @@ +$pdf_mode=1; +# for lualatex +# $pdf_mode=4; +$pdf_previewer="start zathura %O %S"; +$pdf_update_method=2; +$pdflatex="pdflatex --shell-escape --synctex=1 %O %S"; +$lualatex="lualatex --shell-escape --synctex=1 %O %S";