-
Notifications
You must be signed in to change notification settings - Fork 1
/
default.nix
47 lines (47 loc) · 1.83 KB
/
default.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
{ python, poetry2nix, fetchFromGitHub, lib }:
let
defaultConfiguration = ./default-configuration.py;
mkNetboxApp = { configuration, plugins ? [] }:
let
prettyPluginList = lib.concatStringsSep "," (map (p: p.pname) plugins);
pluginList = "[${lib.concatStringsSep ", " (map (p: "'${p.pname}'") plugins)}]";
app = (poetry2nix.mkPoetryApplication {
inherit python;
projectDir = ./.;
src = fetchFromGitHub {
owner = "RaitoBezarius";
repo = "netbox";
rev = "85b69b89e3688309f57cb6bc87d34dc4ab90b8d3";
sha256 = "sha256-c2z5VOi/BDQlHGTVmpnLuHG0WnDvVECsDx7c+pzvTjg=";
};
overrides = poetry2nix.overrides.withDefaults (self: super: {
"ruamel-yaml" = python.pkgs.ruamel_yaml;
"ruamel-yaml-clib" = python.pkgs.ruamel_yaml_clib;
"pygments" = python.pkgs.pygments;
"zipp" = python.pkgs.zipp;
"six" = python.pkgs.six;
"more-itertools" = python.pkgs.more-itertools;
});
preBuild = ''
cp ${configuration} netbox/netbox/configuration.py
echo netbox/netbox/configuration.py copied, installing plugins...
${if builtins.length plugins > 0 then ''
substituteInPlace netbox/netbox/configuration.py \
--replace "@nixPlugins@" "${pluginList}"
echo plugins (${prettyPluginList}) installed.
'' else ''
echo no plugin to install.
''}
'';
postInstall = ''
ln -s $out/lib/python3.9/site-packages/netbox/utilities/templates $out/lib/python3.9/site-packages/utilities/templates
echo netbox utilities templates fixed up.
'';
preferWheels = true;
});
in
app.python.buildEnv.override {
extraLibs = [ app app.python.pkgs.django_environ ] ++ plugins;
};
in
(mkNetboxApp { configuration = defaultConfiguration; }) // { inherit mkNetboxApp; }