Skip to content

Commit abdde44

Browse files
committed
simple package mirroring workflow
1 parent bb3b5ad commit abdde44

File tree

3 files changed

+37
-1
lines changed

3 files changed

+37
-1
lines changed

README.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,18 @@ Alternatively, open the [`nix develop`](https://nixos.org/manual/nix/stable/comm
3636
$ cabal v2-run -- hackage-server run --static-dir=datafiles --state-dir=state --base-uri=http://127.0.0.1:8080
3737
hackage-server: Ready! Point your browser at http://127.0.0.1:8080
3838

39-
##### Not working
39+
#### Populate the local package index
40+
41+
This copies packages from real Hackage Server to local Hackage Server.
42+
43+
Add the default `admin` user to the `mirrorers` group here:
44+
http://localhost:8080/packages/mirrorers/
45+
46+
Then
47+
48+
$ nix run .#mirror-hackage-server
49+
50+
#### Not working
4051

4152
Please note this App *cannot* be run [directly from GitHub](https://determinate.systems/posts/nix-run) like this:
4253

flake.nix

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,22 @@
3636
};
3737
in "${lib.getExe run-hackage-server}";
3838
};
39+
apps.mirror-hackage-server = {
40+
type = "app";
41+
program =
42+
let
43+
mirror-hackage-server = pkgs.writeShellApplication {
44+
name = "mirror-hackage-server";
45+
runtimeInputs = [ config.packages.default ];
46+
text = ''
47+
echo 'Copying packages from real Hackage Server into local Hackage Server.'
48+
echo 'This assumes the local Hackage Server uses default credentials;'
49+
echo 'otherwise, override in nix-default-servers.cfg'
50+
hackage-mirror nix-default-servers.cfg
51+
'';
52+
};
53+
in "${lib.getExe mirror-hackage-server}";
54+
};
3955
packages.default = config.packages.hackage-server;
4056
haskellProjects.default = {
4157
settings = {

nix-default-servers.cfg

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
source "hackage"
2+
uri: http://hackage.haskell.org
3+
type: secure
4+
5+
target "mirror"
6+
uri: http://admin:admin@localhost:8080
7+
type: hackage2
8+
9+
post-mirror-hook: "shell command to execute"

0 commit comments

Comments
 (0)