diff options
Diffstat (limited to 'flake.nix')
-rw-r--r-- | flake.nix | 71 |
1 files changed, 63 insertions, 8 deletions
@@ -1,7 +1,7 @@ | |||
1 | # ldgallery - A static generator which turns a collection of tagged | 1 | # ldgallery - A static generator which turns a collection of tagged |
2 | # pictures into a searchable web gallery. | 2 | # pictures into a searchable web gallery. |
3 | # | 3 | # |
4 | # Copyright (C) 2019-2022 Pacien TRAN-GIRARD | 4 | # Copyright (C) 2019-2023 Pacien TRAN-GIRARD |
5 | # | 5 | # |
6 | # This program is free software: you can redistribute it and/or modify | 6 | # This program is free software: you can redistribute it and/or modify |
7 | # it under the terms of the GNU Affero General Public License as | 7 | # it under the terms of the GNU Affero General Public License as |
@@ -20,16 +20,30 @@ | |||
20 | description = "A static web gallery generator with tags"; | 20 | description = "A static web gallery generator with tags"; |
21 | 21 | ||
22 | inputs = { | 22 | inputs = { |
23 | nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; | 23 | # GHC 9.2: https://github.com/NixOS/nixpkgs/pull/202022 |
24 | nixpkgs.url = "github:NixOS/nixpkgs/445f264"; | ||
24 | flake-utils.url = "github:numtide/flake-utils"; | 25 | flake-utils.url = "github:numtide/flake-utils"; |
26 | flaky-utils.url = "git+https://cgit.pacien.net/libs/flaky-utils"; | ||
25 | }; | 27 | }; |
26 | 28 | ||
27 | outputs = { self, nixpkgs, flake-utils }: | 29 | outputs = { self, nixpkgs, flake-utils, flaky-utils }: |
28 | flake-utils.lib.eachDefaultSystem (system: let | 30 | flake-utils.lib.eachDefaultSystem (system: let |
29 | pkgs = import nixpkgs { inherit system; }; | 31 | pkgs = nixpkgs.legacyPackages.${system}; |
30 | ldgalleryVersion = "2.1"; | 32 | ldgalleryVersion = "2.2"; |
31 | 33 | devTools = with pkgs; [ | |
32 | in rec { | 34 | # generic |
35 | tmux | ||
36 | |||
37 | # viewer | ||
38 | nodejs-16_x | ||
39 | yarn | ||
40 | |||
41 | # compiler | ||
42 | stack | ||
43 | ]; | ||
44 | |||
45 | in pkgs.lib.fold pkgs.lib.recursiveUpdate { } [ | ||
46 | (rec { | ||
33 | packages = rec { | 47 | packages = rec { |
34 | compiler = pkgs.haskell.lib.compose.overrideCabal (super: { | 48 | compiler = pkgs.haskell.lib.compose.overrideCabal (super: { |
35 | pname = "ldgallery-compiler"; | 49 | pname = "ldgallery-compiler"; |
@@ -117,6 +131,19 @@ | |||
117 | ]; | 131 | ]; |
118 | }; | 132 | }; |
119 | 133 | ||
134 | example = pkgs.stdenv.mkDerivation { | ||
135 | pname = "ldgallery-example"; | ||
136 | version = ldgalleryVersion; | ||
137 | src = ./example; | ||
138 | nativeBuildInputs = [ ldgallery ]; | ||
139 | buildPhase = '' | ||
140 | # Need UTF-8: https://github.com/ldgallery/ldgallery/issues/341 | ||
141 | export LC_ALL=C.UTF-8 | ||
142 | ldgallery --input-dir src --output-dir $out --with-viewer | ||
143 | ''; | ||
144 | installPhase = ":"; | ||
145 | }; | ||
146 | |||
120 | default = ldgallery; | 147 | default = ldgallery; |
121 | }; | 148 | }; |
122 | 149 | ||
@@ -127,5 +154,33 @@ | |||
127 | 154 | ||
128 | default = ldgallery; | 155 | default = ldgallery; |
129 | }; | 156 | }; |
130 | }); | 157 | |
158 | devShell = flaky-utils.lib.mkDevShell { | ||
159 | inherit pkgs; | ||
160 | tools = devTools; | ||
161 | shell = null; | ||
162 | }; | ||
163 | }) | ||
164 | |||
165 | (flaky-utils.lib.mkSandboxSystem { | ||
166 | inherit pkgs; | ||
167 | restrictNetwork = false; | ||
168 | patchQemu9p = true; | ||
169 | tools = devTools; | ||
170 | envVars = { | ||
171 | # File modification watch doesn't work through the VM for live reload. | ||
172 | VUE_APP_WEBPACK_WATCH_POLL = "1000"; | ||
173 | }; | ||
174 | config = { | ||
175 | # The viewer's build and devel server are resource-hungry. | ||
176 | virtualisation.cores = 2; | ||
177 | virtualisation.memorySize = 2 * 1024; | ||
178 | |||
179 | virtualisation.forwardPorts = [ | ||
180 | { from = "host"; host.port = 8085; guest.port = 8085; } # vue-cli | ||
181 | ]; | ||
182 | }; | ||
183 | }) | ||
184 | |||
185 | ]); | ||
131 | } | 186 | } |