Skip to content

Commit c9903b0

Browse files
committed
Adedd nix files
1 parent f19f1b5 commit c9903b0

File tree

2 files changed

+135
-0
lines changed

2 files changed

+135
-0
lines changed

flake.lock

Lines changed: 27 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
{
2+
description = "Six Degrees of Wikipedia";
3+
4+
inputs = {
5+
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
6+
};
7+
8+
outputs = { self, nixpkgs }: let
9+
pkgs = import nixpkgs {system = "x86_64-linux";};
10+
python-gunicorn = pkgs.python3.withPackages (pp: with pp;[
11+
flask
12+
flask-compress
13+
flask-cors
14+
gunicorn
15+
protobuf
16+
requests
17+
]);
18+
sdow-api-gunicorn = pkgs.writeShellApplication {
19+
name = "sdow-api";
20+
runtimeInputs = [ python-gunicorn ];
21+
text = ''
22+
cd "${self.packages.x86_64-linux.sdow-api}"
23+
if [ ! -f "$1" ]
24+
then echo "First argument should be a path to the sdow database"; exit 1
25+
fi
26+
if [ -z "$2" ]
27+
then echo "Second argument should be a path to the searches database"; exit 1
28+
fi
29+
GUNICORN_PORT=''${GUNICORN_PORT:-8000}
30+
31+
export SDOW_DATABASE=$1
32+
export SEARCHES_DATABASE=$2
33+
gunicorn -b "0.0.0.0:$GUNICORN_PORT" server:app
34+
'';
35+
};
36+
python-db = pkgs.python3.withPackages (pp: with pp;[
37+
tqdm
38+
]);
39+
sdow-db-folder = pkgs.runCommand "sdow-db-source" {} ''
40+
mkdir -p $out
41+
cp -r ${./scripts} $out/scripts
42+
cp -r ${./sql} $out/sql
43+
'';
44+
sdow-db = pkgs.writeShellApplication {
45+
name = "sdow-db";
46+
runtimeInputs = [
47+
python-db
48+
pkgs.sqlite
49+
pkgs.pv
50+
pkgs.gnugrep
51+
pkgs.wget
52+
pkgs.coreutils-full
53+
pkgs.gzip
54+
pkgs.gnused
55+
pkgs.gawkInteractive
56+
pkgs.pigz
57+
];
58+
text = ''
59+
${pkgs.bash}/bin/bash ${sdow-db-folder}/scripts/buildDatabase.sh "$@"
60+
'';
61+
};
62+
in {
63+
64+
packages.x86_64-linux = {
65+
default = self.packages.x86_64-linux.sdow;
66+
sdow = pkgs.buildNpmPackage {
67+
name = "sdow";
68+
buildInputs = with pkgs; [
69+
nodejs_latest
70+
];
71+
src = ./website;
72+
73+
npmDeps = pkgs.importNpmLock {
74+
npmRoot = ./website;
75+
};
76+
77+
npmFlags = [ "--legacy-peer-deps" ];
78+
79+
npmConfigHook = pkgs.importNpmLock.npmConfigHook;
80+
81+
installPhase = ''
82+
cp -r build/ $out
83+
'';
84+
};
85+
86+
sdow-api = pkgs.stdenv.mkDerivation {
87+
name = "sdow-api";
88+
src = ./sdow;
89+
buildInputs = [ python-gunicorn ];
90+
installPhase = ''
91+
cp -r . $out
92+
'';
93+
};
94+
sdow-db = sdow-db;
95+
};
96+
apps.x86_64-linux = {
97+
default = self.apps.x86_64-linux.sdow-api;
98+
sdow-api = {
99+
type = "app";
100+
program = "${sdow-api-gunicorn}/bin/sdow-api";
101+
};
102+
sdow-db = {
103+
type = "app";
104+
program = "${sdow-db}/bin/sdow-db";
105+
};
106+
};
107+
};
108+
}

0 commit comments

Comments
 (0)