internal/config/default.go (view raw)
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)
}
|