shell.nix -> flake.nix #61

Merged
sb10q merged 3 commits from architeuthis/datasheets:nix-flake into master 2024-10-30 14:49:57 +08:00
6 changed files with 112 additions and 44 deletions

9
.gitignore vendored Normal file
View File

@ -0,0 +1,9 @@
*.out
*.log
*.aux
_minted-*
build
result
images/unsorted

13
Makefile Normal file
View File

@ -0,0 +1,13 @@
inputs = 1124 2118-2128 2238 2245 4410-4412 4456 5108 5432 5518-5528 5568 7210
dir = build
all: $(inputs)
$(inputs) : % : %.tex
pdflatex -shell-escape $@.tex
if ! test -d "$(dir)"; then mkdir build; fi
mv $@.pdf build/
rm $@.log
clean:
rm -r _minted* *.aux *.out

20
README.md Normal file
View File

@ -0,0 +1,20 @@
# sinara-hw/datasheets
Repository for Sinara hardware datasheets.
## Build all
```shell
nix build .#all-pdfs
```
Output files will be in `result`.
### Build individual sheets
```shell
nix develop
make 1124
```
Output files will be in `build`. Run make twice in a row to get correct output for all LaTeX features, i.e. in particular correct "page x of y" footnotes, which require two passes of the compiler. (`#all-pdfs` already does this automatically). Auxiliary files and clutter can be removed with `make clean`.

27
flake.lock Normal file
View File

@ -0,0 +1,27 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1729880355,
"narHash": "sha256-RP+OQ6koQQLX5nw0NmcDrzvGL8HDLnyXt/jHhL1jwjM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "18536bf04cd71abd345f9579158841376fdd0c5a",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

43
flake.nix Normal file
View File

@ -0,0 +1,43 @@
{
description = "Sinara datasheets";
inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-unstable;
outputs = { self, nixpkgs }:
let
pkgs = import nixpkgs { system = "x86_64-linux";};
latex-pkgs = pkgs.texlive.combine {
inherit (pkgs.texlive)
scheme-small collection-latexextra collection-fontsextra
collection-fontsrecommended cbfonts-fd cbfonts palatino textgreek helvetic
greek-inputenc maths-symbols mathpazo babel isodate tcolorbox etoolbox
pgfplots visualtikz quantikz tikz-feynman circuitikz
minted pst-graphicx;
};
python-pkgs = with pkgs.python3Packages; [ pygments ];
in rec {
all-pdfs = pkgs.stdenvNoCC.mkDerivation rec {
name = "datasheets-pdfs";
src = self;
buildInputs = [ latex-pkgs ] ++ python-pkgs;
# is there a better way to get .aux/.out files correct than to just run latexpdf twice?
buildPhase = ''
make all
make all
'';
installPhase = ''
mkdir $out
cp build/*.pdf $out
'';
};
devShells.x86_64-linux.default = pkgs.mkShell {
name = "datasheet-dev-shell";
buildInputs = [ latex-pkgs ] ++ python-pkgs;
};
};
}

View File

@ -1,44 +0,0 @@
let
pkgs = import <nixpkgs> {};
in
pkgs.mkShell {
buildInputs = [
#pkgs.texlive.combined.scheme-small
(pkgs.texlive.combine {
inherit (pkgs.texlive)
scheme-small
collection-latexextra
collection-fontsextra
collection-fontsrecommended
palatino
textgreek
minted
tcolorbox
etoolbox
maths-symbols
greek-inputenc
babel
isodate
pst-graphicx
visualtikz
quantikz
tikz-feynman
pgfplots
cbfonts-fd
cbfonts
mathpazo
helvetic
circuitikz ;
# To compile, call:
# $ pdflatex -shell-escape xxx.tex
# if missing packages, you can search if the required tex packages is in nixpkgs or not from here
# https://raw.githubusercontent.com/NixOS/nixpkgs/master/pkgs/tools/typesetting/tex/texlive/pkgs.nix
# if available, just add it to the above list
})
];
}