-
Notifications
You must be signed in to change notification settings - Fork 1
/
flake.nix
123 lines (112 loc) · 3.55 KB
/
flake.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
{
description = "Blog";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
devenv = {
url = "github:cachix/devenv";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, devenv, ... } @ inputs:
let
systems = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ];
forAllSystems = f: builtins.listToAttrs (map (name: { inherit name; value = f name; }) systems);
mkPkgs = system: import nixpkgs {
inherit system;
config = {
allowUnfree = true;
};
};
in
{
devShells = forAllSystems (system:
let
pkgs = mkPkgs system;
tooling = with pkgs; [
just
hugo
# .Net
netcoredbg
fsautocomplete
fantomas
];
texenv = pkgs.texlive.combine {
inherit (pkgs.texlive)
accsupp
collection-basic
collection-fontsextra
collection-fontsrecommended
collection-langenglish
collection-langportuguese
collection-latexextra
collection-mathscience
extsizes
etoolbox
hyphen-portuguese
latexmk
paracol
pdfx
ragged2e
scheme-medium
;
};
dotnet = with pkgs.dotnetCorePackages; combinePackages [
sdk_8_0
];
customEmacs = (pkgs.emacsPackagesFor pkgs.emacs-nox).emacsWithPackages (epkgs:
with epkgs.melpaPackages; [
ox-hugo
citeproc
] ++ (with epkgs.elpaPackages; [
org
]));
in
{
# `nix develop .#ci`
# Reduce the number of packages to the bare minimum needed for CI,
# by removing LaTeX and not using my own Emacs configuration, but
# a custom package with just enough tools to generate the markdown
# for org-roam.
ci = pkgs.mkShell {
HUGO_ENVIRONMENT="production";
DOTNET_ROOT = "${dotnet}";
DOTNET_CLI_TELEMETRY_OPTOUT = "1";
LANG = "en_US.UTF-8";
buildInputs =
[ dotnet pkgs.icu pkgs.tzdata ] ++ [ customEmacs ] ++ tooling;
};
# `nix develop --impure`
# This is the development shell, meant to be used as an impure
# shell, so no custom Emacs here, just use your global package
# switch back to the CI shell for builds.
default = devenv.lib.mkShell {
inherit inputs pkgs;
modules = [
({ pkgs, lib, ... }: {
packages =
[ dotnet pkgs.icu pkgs.tzdata ]
++ [ customEmacs ]
++ [ texenv ]
++ tooling;
env = {
HUGO_ENVIRONMENT="development";
DOTNET_ROOT = "${dotnet}";
DOTNET_CLI_TELEMETRY_OPTOUT = "1";
LANG = "en_US.UTF-8";
};
scripts = {
build.exec = "just build";
publish.exec = "just public";
run.exec = "just run";
clean.exec = "just clean";
};
enterShell = ''
echo "Starting environment..."
hugo version
'';
})
];
};
});
};
}