tangled
alpha
login
or
join now
wiro.world
/
dotfiles
2
fork
atom
yep, more dotfiles
2
fork
atom
overview
issues
1
pulls
1
pipelines
add git-pages module
wiro.world
1 month ago
dd5ef127
75b73a99
verified
This commit was signed with the committer's
known signature
.
wiro.world
SSH Key Fingerprint:
SHA256:SmMcWpNAnL+VAgItSawvXgdPVn7f1rsyAuB/5VNclKY=
0/1
nix.yml
running
7w ago
+242
-9
9 changed files
expand all
collapse all
unified
split
flake.lock
flake.nix
globals.nix
home-manager
fragments
tools.nix
hosts
weird-row-server
default.nix
git-pages.nix
modules
nixos
default.nix
git-pages.nix
pkgs
default.nix
+101
-4
flake.lock
reviewed
···
250
250
},
251
251
"flake-utils": {
252
252
"inputs": {
253
253
-
"systems": "systems_3"
253
253
+
"systems": "systems_2"
254
254
+
},
255
255
+
"locked": {
256
256
+
"lastModified": 1731533236,
257
257
+
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
258
258
+
"owner": "numtide",
259
259
+
"repo": "flake-utils",
260
260
+
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
261
261
+
"type": "github"
262
262
+
},
263
263
+
"original": {
264
264
+
"owner": "numtide",
265
265
+
"repo": "flake-utils",
266
266
+
"type": "github"
267
267
+
}
268
268
+
},
269
269
+
"flake-utils_2": {
270
270
+
"inputs": {
271
271
+
"systems": "systems_4"
254
272
},
255
273
"locked": {
256
274
"lastModified": 1694529238,
···
302
320
"owner": "mrnossiom",
303
321
"repo": "git-leave",
304
322
"type": "github"
323
323
+
}
324
324
+
},
325
325
+
"git-pages": {
326
326
+
"inputs": {
327
327
+
"flake-utils": "flake-utils",
328
328
+
"gomod2nix": "gomod2nix",
329
329
+
"nix-filter": "nix-filter",
330
330
+
"nixpkgs": [
331
331
+
"nixpkgs"
332
332
+
]
333
333
+
},
334
334
+
"locked": {
335
335
+
"lastModified": 1769213934,
336
336
+
"narHash": "sha256-LB4KT3TqBOMzqbkm9UJo5dsasbwF7lgPEFN1FuwoxBY=",
337
337
+
"ref": "refs/heads/main",
338
338
+
"rev": "d3c8db6229094b756a15a7d8c6bc1707959ddded",
339
339
+
"revCount": 418,
340
340
+
"type": "git",
341
341
+
"url": "https://codeberg.org/git-pages/git-pages"
342
342
+
},
343
343
+
"original": {
344
344
+
"type": "git",
345
345
+
"url": "https://codeberg.org/git-pages/git-pages"
305
346
}
306
347
},
307
348
"gitignore": {
···
410
451
},
411
452
"gomod2nix": {
412
453
"inputs": {
413
413
-
"flake-utils": "flake-utils",
454
454
+
"flake-utils": [
455
455
+
"git-pages",
456
456
+
"flake-utils"
457
457
+
],
458
458
+
"nixpkgs": [
459
459
+
"git-pages",
460
460
+
"nixpkgs"
461
461
+
]
462
462
+
},
463
463
+
"locked": {
464
464
+
"lastModified": 1763982521,
465
465
+
"narHash": "sha256-ur4QIAHwgFc0vXiaxn5No/FuZicxBr2p0gmT54xZkUQ=",
466
466
+
"owner": "nix-community",
467
467
+
"repo": "gomod2nix",
468
468
+
"rev": "02e63a239d6eabd595db56852535992c898eba72",
469
469
+
"type": "github"
470
470
+
},
471
471
+
"original": {
472
472
+
"owner": "nix-community",
473
473
+
"repo": "gomod2nix",
474
474
+
"type": "github"
475
475
+
}
476
476
+
},
477
477
+
"gomod2nix_2": {
478
478
+
"inputs": {
479
479
+
"flake-utils": "flake-utils_2",
414
480
"nixpkgs": [
415
481
"tangled",
416
482
"nixpkgs"
···
618
684
"type": "github"
619
685
}
620
686
},
687
687
+
"nix-filter": {
688
688
+
"locked": {
689
689
+
"lastModified": 1757882181,
690
690
+
"narHash": "sha256-+cCxYIh2UNalTz364p+QYmWHs0P+6wDhiWR4jDIKQIU=",
691
691
+
"owner": "numtide",
692
692
+
"repo": "nix-filter",
693
693
+
"rev": "59c44d1909c72441144b93cf0f054be7fe764de5",
694
694
+
"type": "github"
695
695
+
},
696
696
+
"original": {
697
697
+
"owner": "numtide",
698
698
+
"repo": "nix-filter",
699
699
+
"type": "github"
700
700
+
}
701
701
+
},
621
702
"nix-index-database": {
622
703
"inputs": {
623
704
"nixpkgs": [
···
723
804
"agenix": "agenix",
724
805
"disko": "disko",
725
806
"git-leave": "git-leave",
807
807
+
"git-pages": "git-pages",
726
808
"home-manager": "home-manager",
727
809
"hypixel-bank-tracker": "hypixel-bank-tracker",
728
810
"lanzaboote": "lanzaboote",
···
868
950
"nixpkgs"
869
951
],
870
952
"nur": "nur",
871
871
-
"systems": "systems_2",
953
953
+
"systems": "systems_3",
872
954
"tinted-foot": "tinted-foot",
873
955
"tinted-kitty": "tinted-kitty",
874
956
"tinted-schemes": "tinted-schemes",
···
935
1017
"type": "github"
936
1018
}
937
1019
},
1020
1020
+
"systems_4": {
1021
1021
+
"locked": {
1022
1022
+
"lastModified": 1681028828,
1023
1023
+
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
1024
1024
+
"owner": "nix-systems",
1025
1025
+
"repo": "default",
1026
1026
+
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
1027
1027
+
"type": "github"
1028
1028
+
},
1029
1029
+
"original": {
1030
1030
+
"owner": "nix-systems",
1031
1031
+
"repo": "default",
1032
1032
+
"type": "github"
1033
1033
+
}
1034
1034
+
},
938
1035
"tangled": {
939
1036
"inputs": {
940
1037
"actor-typeahead-src": "actor-typeahead-src",
941
1038
"flake-compat": "flake-compat_3",
942
942
-
"gomod2nix": "gomod2nix",
1039
1039
+
"gomod2nix": "gomod2nix_2",
943
1040
"htmx-src": "htmx-src",
944
1041
"htmx-ws-src": "htmx-ws-src",
945
1042
"ibm-plex-mono-src": "ibm-plex-mono-src",
+3
flake.nix
reviewed
···
36
36
git-leave.url = "github:mrnossiom/git-leave";
37
37
git-leave.inputs.nixpkgs.follows = "nixpkgs";
38
38
39
39
+
git-pages.url = "git+https://codeberg.org/git-pages/git-pages";
40
40
+
git-pages.inputs.nixpkgs.follows = "nixpkgs";
41
41
+
39
42
hypixel-bank-tracker.url = "github:pixilie/hypixel-bank-tracker";
40
43
hypixel-bank-tracker.inputs.nixpkgs.follows = "nixpkgs";
41
44
+1
globals.nix
reviewed
···
11
11
headscale = "headscale.${wiro-world}";
12
12
matrix = "matrix.${wiro-world}";
13
13
miniflux = "news.${wiro-world}";
14
14
+
pages = "pages.${wiro-world}";
14
15
pds = "pds.${wiro-world}";
15
16
static = "static.${wiro-world}";
16
17
tangled-knot = "knot.${wiro-world}";
+1
home-manager/fragments/tools.nix
reviewed
···
40
40
file
41
41
fzf
42
42
gemini-cli
43
43
+
git-pages-cli
43
44
inetutils
44
45
jq
45
46
just
+1
-5
hosts/weird-row-server/default.nix
reviewed
···
25
25
26
26
./agnos.nix
27
27
./authelia.nix
28
28
+
# ./git-pages.nix
28
29
./goatcounter.nix
29
30
./grafana.nix
30
31
./headscale.nix
···
168
169
header_up Host {http.request.host}
169
170
}
170
171
'';
171
171
-
172
172
-
virtualHosts.${globals.domains.static}.extraConfig = ''
173
173
-
root /var/www/static
174
174
-
file_server browse
175
175
-
'';
176
172
};
177
173
178
174
# TODO: use bind to declare dns records declaratively
+42
hosts/weird-row-server/git-pages.nix
reviewed
···
1
1
+
{
2
2
+
self,
3
3
+
config,
4
4
+
globals,
5
5
+
...
6
6
+
}:
7
7
+
8
8
+
{
9
9
+
imports = [ self.nixosModules.git-pages ];
10
10
+
11
11
+
config = {
12
12
+
local.ports.git-pages = 3017;
13
13
+
14
14
+
services.git-pages = {
15
15
+
enable = true;
16
16
+
settings = {
17
17
+
log-format = "text";
18
18
+
19
19
+
server = {
20
20
+
pages = "tcp/localhost:${config.local.ports.git-pages.string}";
21
21
+
caddy = "-";
22
22
+
metrics = "-";
23
23
+
};
24
24
+
25
25
+
# TODO: fallback to 404 page
26
26
+
};
27
27
+
};
28
28
+
29
29
+
services.caddy = {
30
30
+
virtualHosts.${globals.domains.pages} = {
31
31
+
serverAliases = [ "test.wiro.world" ];
32
32
+
extraConfig = ''
33
33
+
# TODO: enforce some kind of authentication for publishing websites
34
34
+
# @write_ops { not method GET HEAD }
35
35
+
# basicauth @write_ops { }
36
36
+
37
37
+
reverse_proxy http://localhost:${config.local.ports.git-pages.string}
38
38
+
'';
39
39
+
};
40
40
+
};
41
41
+
};
42
42
+
}
+1
modules/nixos/default.nix
reviewed
···
1
1
{
2
2
logiops = ./logiops.nix;
3
3
+
git-pages = ./git-pages.nix;
3
4
}
+90
modules/nixos/git-pages.nix
reviewed
···
1
1
+
{
2
2
+
config,
3
3
+
lib,
4
4
+
pkgs,
5
5
+
lpkgs,
6
6
+
...
7
7
+
}:
8
8
+
9
9
+
let
10
10
+
inherit (lib)
11
11
+
mkEnableOption
12
12
+
mkPackageOption
13
13
+
mkOption
14
14
+
mkIf
15
15
+
types
16
16
+
;
17
17
+
18
18
+
cfg = config.services.git-pages;
19
19
+
20
20
+
toml-format = pkgs.formats.toml { };
21
21
+
configFile = toml-format.generate "git-pages-config.toml" cfg.settings;
22
22
+
in
23
23
+
{
24
24
+
options.services.git-pages = {
25
25
+
enable = mkEnableOption "git-pages static site server";
26
26
+
27
27
+
package = mkPackageOption lpkgs "git-pages" { };
28
28
+
29
29
+
dataDir = mkOption {
30
30
+
type = types.path;
31
31
+
default = "/var/lib/git-pages";
32
32
+
description = "Directory to store site data and manifests.";
33
33
+
};
34
34
+
35
35
+
insecure = mkOption {
36
36
+
type = types.bool;
37
37
+
default = false;
38
38
+
description = "Whether to enable PAGES_INSECURE (disables authentication). Do not use in production.";
39
39
+
};
40
40
+
41
41
+
settings = mkOption {
42
42
+
type = types.attrsOf types.anything;
43
43
+
default = { };
44
44
+
example = {
45
45
+
storage = {
46
46
+
type = "filesystem";
47
47
+
path = "/var/lib/git-pages/data";
48
48
+
};
49
49
+
};
50
50
+
description = "Structured TOML configuration for the server.";
51
51
+
};
52
52
+
53
53
+
environmentFile = mkOption {
54
54
+
type = types.nullOr types.path;
55
55
+
default = null;
56
56
+
description = "File containing environment variables (e.g., for S3 credentials or Sentry DSN).";
57
57
+
};
58
58
+
};
59
59
+
60
60
+
config = mkIf cfg.enable {
61
61
+
systemd.services.git-pages = {
62
62
+
description = "git-pages static site server";
63
63
+
after = [ "network.target" ];
64
64
+
wantedBy = [ "multi-user.target" ];
65
65
+
66
66
+
serviceConfig = {
67
67
+
ExecStart = "${cfg.package}/bin/git-pages -config ${configFile}";
68
68
+
Restart = "always";
69
69
+
User = "git-pages";
70
70
+
Group = "git-pages";
71
71
+
StateDirectory = "git-pages";
72
72
+
WorkingDirectory = cfg.dataDir;
73
73
+
EnvironmentFile = mkIf (cfg.environmentFile != null) cfg.environmentFile;
74
74
+
};
75
75
+
76
76
+
environment = {
77
77
+
PAGES_INSECURE = if cfg.insecure then "1" else "0";
78
78
+
ENVIRONMENT = "production";
79
79
+
};
80
80
+
};
81
81
+
82
82
+
users.users.git-pages = {
83
83
+
isSystemUser = true;
84
84
+
group = "git-pages";
85
85
+
home = cfg.dataDir;
86
86
+
createHome = true;
87
87
+
};
88
88
+
users.groups.git-pages = { };
89
89
+
};
90
90
+
}
+2
pkgs/default.nix
reviewed
···
12
12
inherit (self.inputs)
13
13
agenix
14
14
git-leave
15
15
+
git-pages
15
16
nix-alien
16
17
wakatime-ls
17
18
;
···
27
28
# Import packages defined in foreign repositories
28
29
inherit (agenix.packages.${system}) agenix;
29
30
inherit (git-leave.packages.${system}) git-leave;
31
31
+
inherit (git-pages.packages.${system}) git-pages;
30
32
inherit (nix-alien.packages.${system}) nix-alien;
31
33
inherit (wakatime-ls.packages.${system}) wakatime-ls;
32
34
}