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
124
125
126
|
package config
import (
"strconv"
"time"
"github.com/pelletier/go-toml/v2"
)
var nixpkgs = Repository{
Type: GitHub,
Owner: "NixOS",
Repo: "nixpkgs",
}
const none = "'none'"
const self = "'self'"
const maxAge = (1 * 365 * 24 * time.Hour)
var DefaultConfig = Config{
DataPath: "./data",
Web: &Web{
ListenAddress: "localhost",
Port: 3000,
BaseURL: mustURL("http://localhost:3000"),
Environment: "development",
ContentSecurityPolicy: CSP{
DefaultSrc: []string{none},
BaseURI: []string{none},
ImgSrc: []string{self},
StyleSrc: []string{self},
// added dynamically based on final value of BaseURL
ScriptSrc: []string{},
FormAction: []string{self},
ConnectSrc: []string{self},
},
Headers: map[string]string{
"strict-transport-security": "max-age=" + strconv.FormatFloat(
maxAge.Seconds(),
'f',
0,
64,
),
"x-content-type-options": "nosniff",
"x-frame-options": "DENY",
},
},
Importer: &Importer{
LowMemory: false,
Timeout: Duration{30 * time.Minute},
UpdateAt: mustLocalTime("04:00:00"),
Sources: map[string]*Source{
"nixos": {
Name: "NixOS",
Key: "nixos",
Enable: true,
Importer: Options,
Fetcher: Channel,
Channel: "nixpkgs",
URL: "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz",
ImportPath: "nixos/release.nix",
Attribute: "options",
OutputPath: "share/doc/nixos",
Timeout: Duration{5 * time.Minute},
Repo: nixpkgs,
},
"darwin": {
Name: "Darwin",
Key: "darwin",
Enable: false,
Importer: Options,
Fetcher: Channel,
Channel: "darwin",
URL: "https://github.com/LnL7/nix-darwin/archive/master.tar.gz",
ImportPath: "release.nix",
Attribute: "options",
OutputPath: "share/doc/darwin",
Timeout: Duration{5 * time.Minute},
Repo: Repository{
Type: GitHub,
Owner: "LnL7",
Repo: "nix-darwin",
},
},
"home-manager": {
Name: "Home Manager",
Key: "home-manager",
Enable: false,
Importer: Options,
Channel: "home-manager",
URL: "https://github.com/nix-community/home-manager/archive/master.tar.gz",
Fetcher: Channel,
ImportPath: "default.nix",
Attribute: "docs.json",
OutputPath: "share/doc/home-manager",
Timeout: Duration{5 * time.Minute},
Repo: Repository{
Type: GitHub,
Owner: "nix-community",
Repo: "home-manager",
},
},
"nixpkgs": {
Name: "Nix Packages",
Key: "nixpkgs",
Enable: true,
Importer: Packages,
Fetcher: ChannelNixpkgs,
Channel: "nixos-unstable",
OutputPath: "packages.json.br",
Timeout: Duration{5 * time.Minute},
Repo: nixpkgs,
},
},
},
}
func GetDefaultConfig() string {
out, err := toml.Marshal(&DefaultConfig)
if err != nil {
panic("could not read default configuration")
}
return string(out)
}
|