Compare commits
22 Commits
mob/vega-u
...
198c9a8c11
Author | SHA1 | Date | |
---|---|---|---|
198c9a8c11 | |||
c497a1ba86 | |||
43b8bf0ffe | |||
e1114189f2 | |||
ad1c98be75 | |||
da33b3935e | |||
a02f64a615 | |||
2ab9fc4ad8 | |||
16a2fa0526 | |||
b8dc4757ed | |||
79fa8eef01 | |||
ac731c2f38 | |||
c9f23f4c0a | |||
be25560858 | |||
e4bf326191 | |||
04fafa32d3 | |||
ed4e045ffc | |||
fd6edd83c2 | |||
65faa70fa3 | |||
377b63437c | |||
43e8252459 | |||
800500f57e |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -2,4 +2,4 @@
|
||||
# Ignore build outputs from performing a nix-build or `nix build` command
|
||||
result
|
||||
result-*
|
||||
|
||||
run-vm-*
|
||||
|
19
flake.lock
generated
19
flake.lock
generated
@@ -136,6 +136,24 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"liminix": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1760426231,
|
||||
"narHash": "sha256-r8c5PKtsxAvtQ/k17GH+WNvP47Lr+AbExLMPdLtvAKE=",
|
||||
"ref": "refs/heads/fix-gl-ar750",
|
||||
"rev": "3f1f7c08d440130cce9262a93ce78ed7969d93cd",
|
||||
"revCount": 1574,
|
||||
"type": "git",
|
||||
"url": "https://git.b4l.co.th/newedge/liminix"
|
||||
},
|
||||
"original": {
|
||||
"ref": "refs/heads/fix-gl-ar750",
|
||||
"rev": "3f1f7c08d440130cce9262a93ce78ed7969d93cd",
|
||||
"type": "git",
|
||||
"url": "https://git.b4l.co.th/newedge/liminix"
|
||||
}
|
||||
},
|
||||
"nix-darwin": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -207,6 +225,7 @@
|
||||
"devshell": "devshell",
|
||||
"flake-parts": "flake-parts",
|
||||
"import-tree": "import-tree",
|
||||
"liminix": "liminix",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"treefmt-nix": "treefmt-nix"
|
||||
}
|
||||
|
@@ -21,6 +21,10 @@
|
||||
url = "github:numtide/treefmt-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
liminix = {
|
||||
url = "git+https://git.b4l.co.th/newedge/liminix?ref=refs/heads/fix-gl-ar750&rev=3f1f7c08d440130cce9262a93ce78ed7969d93cd";
|
||||
flake = false;
|
||||
};
|
||||
};
|
||||
outputs =
|
||||
{
|
||||
@@ -38,6 +42,7 @@
|
||||
./shell.nix
|
||||
|
||||
./machines
|
||||
./routers
|
||||
./inventories
|
||||
./modules/clan/flake-module.nix
|
||||
];
|
||||
|
@@ -1,22 +1,12 @@
|
||||
{
|
||||
inputs,
|
||||
self,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
clan = {
|
||||
inventory = {
|
||||
|
||||
machines = {
|
||||
rigel.deploy.targetHost = "root@rigel.local";
|
||||
vega.deploy.targetHost = "root@vega.local";
|
||||
};
|
||||
|
||||
tags = {
|
||||
glom = [ "vega" ];
|
||||
b4l = [ "rigel" ];
|
||||
|
||||
fax-bridge = [ ];
|
||||
};
|
||||
|
||||
instances = {
|
||||
@@ -60,69 +50,69 @@
|
||||
roles.peer.tags.b4l = { };
|
||||
};
|
||||
|
||||
yggdrasil = {
|
||||
module = {
|
||||
name = "yggdrasil";
|
||||
input = "self";
|
||||
};
|
||||
roles.default.tags."fax-bridge" = { };
|
||||
roles.default.machines."b4l" = { };
|
||||
};
|
||||
|
||||
pocket-id = {
|
||||
module = {
|
||||
name = "pocket-id";
|
||||
input = "self";
|
||||
};
|
||||
roles.default.machines.b4l = { };
|
||||
roles.default.machines."b4l" = { };
|
||||
};
|
||||
nextcloud = {
|
||||
module = {
|
||||
name = "nextcloud";
|
||||
input = "self";
|
||||
};
|
||||
roles.default.machines.b4l = { };
|
||||
roles.default.machines.vega = { };
|
||||
};
|
||||
stirling-pdf = {
|
||||
module = {
|
||||
name = "stirling-pdf";
|
||||
input = "self";
|
||||
};
|
||||
roles.default.machines.b4l = { };
|
||||
};
|
||||
actual-budget = {
|
||||
module = {
|
||||
name = "actual-budget";
|
||||
input = "self";
|
||||
};
|
||||
roles.default.machines.b4l = { };
|
||||
};
|
||||
victoriametrics = {
|
||||
module = {
|
||||
name = "victoriametrics";
|
||||
input = "self";
|
||||
};
|
||||
roles.default.machines.b4l = { };
|
||||
};
|
||||
vikunja = {
|
||||
module = {
|
||||
name = "vikunja";
|
||||
input = "self";
|
||||
};
|
||||
roles.default.machines.b4l = { };
|
||||
};
|
||||
grafana = {
|
||||
module = {
|
||||
name = "grafana";
|
||||
input = "self";
|
||||
};
|
||||
roles.default.machines.b4l = { };
|
||||
};
|
||||
pingvin = {
|
||||
module = {
|
||||
name = "pingvin";
|
||||
input = "self";
|
||||
};
|
||||
roles.default.machines.b4l = { };
|
||||
};
|
||||
paperless = {
|
||||
module = {
|
||||
name = "paperless";
|
||||
input = "self";
|
||||
};
|
||||
roles.default.machines.b4l = { };
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@@ -1,7 +1,7 @@
|
||||
{ inputs, config, ... }:
|
||||
{
|
||||
imports = [
|
||||
(inputs.import-tree ./services)
|
||||
# (inputs.import-tree ./services)
|
||||
];
|
||||
nixpkgs.hostPlatform = {
|
||||
system = "x86_64-linux";
|
||||
|
@@ -1,13 +1,16 @@
|
||||
{ config, ... }:
|
||||
{
|
||||
imports = [
|
||||
(import ../../lib/auto-accept-zerotier-members.nix {
|
||||
memberIds = [
|
||||
"dbe44c0287" # Alex-gateway
|
||||
"1b495eede9" # kurogeek-thinkpad
|
||||
"b0e0b84fd3" # Alex
|
||||
"2bd36db8cc" # kurogeek-thinkpad
|
||||
];
|
||||
})
|
||||
];
|
||||
|
||||
system.stateVersion = "25.11";
|
||||
clan.core.sops.defaultGroups = [ "admins" ];
|
||||
clan.core.networking.targetHost = "root@[${config.clan.core.vars.generators.zerotier.files.zerotier-ip.value}]";
|
||||
}
|
||||
|
@@ -10,12 +10,14 @@
|
||||
(import ../../lib/auto-accept-zerotier-members.nix {
|
||||
memberIds = [
|
||||
"dbe44c0287" # Alex-gateway
|
||||
"1b495eede9" # kurogeek-thinkpad
|
||||
"b0e0b84fd3" # Alex
|
||||
"2bd36db8cc" # kurogeek-thinkpad
|
||||
];
|
||||
})
|
||||
];
|
||||
|
||||
clan.core.sops.defaultGroups = [ "admins" ];
|
||||
clan.core.networking.targetHost = "root@[${config.clan.core.vars.generators.zerotier.files.zerotier-ip.value}]";
|
||||
|
||||
nixpkgs.hostPlatform = {
|
||||
system = "x86_64-linux";
|
||||
|
@@ -1,7 +1,7 @@
|
||||
{ lib, ... }:
|
||||
let
|
||||
hashDisk = disk: "os-${builtins.substring 0 5 (builtins.hashString "sha256" disk)}";
|
||||
os = "/dev/disk/by-id/mmc-CUTB42_0x9d59499c";
|
||||
os = "/dev/disk/by-id/mmc-CUTB42_0x95d14f9e";
|
||||
vdev = [
|
||||
"/dev/disk/by-id/ata-ST20000NM002H-3KV133_ZYD5RYRG"
|
||||
"/dev/disk/by-id/ata-ST20000NM002H-3KV133_ZYD5S02X"
|
||||
|
@@ -23,8 +23,8 @@
|
||||
},
|
||||
"bluetooth": [
|
||||
{
|
||||
"index": 33,
|
||||
"attached_to": 34,
|
||||
"index": 31,
|
||||
"attached_to": 33,
|
||||
"class_list": ["usb", "bluetooth"],
|
||||
"bus_type": {
|
||||
"hex": "0086",
|
||||
@@ -99,7 +99,7 @@
|
||||
},
|
||||
{
|
||||
"index": 36,
|
||||
"attached_to": 34,
|
||||
"attached_to": 33,
|
||||
"class_list": ["usb", "bluetooth"],
|
||||
"bus_type": {
|
||||
"hex": "0086",
|
||||
@@ -597,7 +597,7 @@
|
||||
"fpu_exception": true,
|
||||
"cpuid_level": 32,
|
||||
"write_protect": false,
|
||||
"tlb_size": 32767,
|
||||
"tlb_size": 32764,
|
||||
"clflush_size": 64,
|
||||
"cache_alignment": 64,
|
||||
"address_sizes": {
|
||||
@@ -636,7 +636,7 @@
|
||||
},
|
||||
"device": {
|
||||
"hex": "0561",
|
||||
"name": "0",
|
||||
"name": "1",
|
||||
"value": 1377
|
||||
},
|
||||
"revision": {
|
||||
@@ -645,10 +645,10 @@
|
||||
"value": 0
|
||||
},
|
||||
"serial": "000000004EBF",
|
||||
"model": "0",
|
||||
"model": "1",
|
||||
"sysfs_id": "/class/block/sdb",
|
||||
"sysfs_bus_id": "1:0:0:0",
|
||||
"sysfs_device_link": "/devices/pci0000:00/0000:00:14.0/usb4/4-3/4-3:1.0/host1/target1:0:0/1:0:0:0",
|
||||
"sysfs_bus_id": "1:0:0:1",
|
||||
"sysfs_device_link": "/devices/pci0000:00/0000:00:14.0/usb4/4-3/4-3:1.0/host1/target1:0:0/1:0:0:1",
|
||||
"unix_device_name": "/dev/sdb",
|
||||
"unix_device_number": {
|
||||
"type": 98,
|
||||
@@ -657,10 +657,10 @@
|
||||
"range": 16
|
||||
},
|
||||
"unix_device_names": [
|
||||
"/dev/disk/by-id/ata-ST20000NM002H-3KV133_ZYD5RYRG",
|
||||
"/dev/disk/by-id/usb-USB_3.0_Device_0_000000004EBF-0:0",
|
||||
"/dev/disk/by-path/pci-0000:00:14.0-usb-0:3:1.0-scsi-0:0:0:0",
|
||||
"/dev/disk/by-path/pci-0000:00:14.0-usbv3-0:3:1.0-scsi-0:0:0:0",
|
||||
"/dev/disk/by-id/ata-ST20000NM002H-3KV133_ZYD5S02X",
|
||||
"/dev/disk/by-id/usb-USB_3.0_Device_1_000000004EBF-0:1",
|
||||
"/dev/disk/by-path/pci-0000:00:14.0-usb-0:3:1.0-scsi-0:0:0:1",
|
||||
"/dev/disk/by-path/pci-0000:00:14.0-usbv3-0:3:1.0-scsi-0:0:0:1",
|
||||
"/dev/sdb"
|
||||
],
|
||||
"unix_device_name2": "/dev/sg1",
|
||||
@@ -706,7 +706,7 @@
|
||||
"name": "Disk",
|
||||
"value": 0
|
||||
},
|
||||
"serial": "0x9d59499c",
|
||||
"serial": "0x95d14f9e",
|
||||
"model": "Disk",
|
||||
"sysfs_id": "/class/block/mmcblk0",
|
||||
"sysfs_bus_id": "mmc0:0001",
|
||||
@@ -719,7 +719,7 @@
|
||||
"range": 32
|
||||
},
|
||||
"unix_device_names": [
|
||||
"/dev/disk/by-id/mmc-CUTB42_0x9d59499c",
|
||||
"/dev/disk/by-id/mmc-CUTB42_0x95d14f9e",
|
||||
"/dev/mmcblk0"
|
||||
],
|
||||
"resources": [
|
||||
@@ -745,180 +745,6 @@
|
||||
},
|
||||
{
|
||||
"index": 29,
|
||||
"attached_to": 25,
|
||||
"class_list": ["disk", "block_device"],
|
||||
"base_class": {
|
||||
"hex": "0106",
|
||||
"name": "Mass Storage Device",
|
||||
"value": 262
|
||||
},
|
||||
"sub_class": {
|
||||
"hex": "0000",
|
||||
"name": "Disk",
|
||||
"value": 0
|
||||
},
|
||||
"model": "Disk",
|
||||
"sysfs_id": "/class/block/mmcblk0boot0",
|
||||
"sysfs_bus_id": "mmcblk0",
|
||||
"sysfs_device_link": "/devices/pci0000:00/0000:00:1a.0/mmc_host/mmc0/mmc0:0001/block/mmcblk0",
|
||||
"unix_device_name": "/dev/mmcblk0boot0",
|
||||
"unix_device_number": {
|
||||
"type": 98,
|
||||
"major": 179,
|
||||
"minor": 32,
|
||||
"range": 32
|
||||
},
|
||||
"unix_device_names": ["/dev/mmcblk0boot0"],
|
||||
"resources": [
|
||||
{
|
||||
"type": "disk_geo",
|
||||
"cylinders": 128,
|
||||
"heads": 4,
|
||||
"sectors": 16,
|
||||
"size": "0x0",
|
||||
"geo_type": "logical"
|
||||
},
|
||||
{
|
||||
"type": "size",
|
||||
"unit": "sectors",
|
||||
"value_1": 8192,
|
||||
"value_2": 512
|
||||
}
|
||||
],
|
||||
"driver": "mmcblk",
|
||||
"drivers": ["mmcblk"]
|
||||
},
|
||||
{
|
||||
"index": 30,
|
||||
"attached_to": 22,
|
||||
"class_list": ["disk", "usb", "scsi", "block_device"],
|
||||
"bus_type": {
|
||||
"hex": "0084",
|
||||
"name": "SCSI",
|
||||
"value": 132
|
||||
},
|
||||
"slot": {
|
||||
"bus": 1,
|
||||
"number": 0
|
||||
},
|
||||
"base_class": {
|
||||
"hex": "0106",
|
||||
"name": "Mass Storage Device",
|
||||
"value": 262
|
||||
},
|
||||
"sub_class": {
|
||||
"hex": "0000",
|
||||
"name": "Disk",
|
||||
"value": 0
|
||||
},
|
||||
"vendor": {
|
||||
"hex": "152d",
|
||||
"value": 5421
|
||||
},
|
||||
"device": {
|
||||
"hex": "0561",
|
||||
"name": "1",
|
||||
"value": 1377
|
||||
},
|
||||
"revision": {
|
||||
"hex": "0000",
|
||||
"name": "~",
|
||||
"value": 0
|
||||
},
|
||||
"serial": "000000004EBF",
|
||||
"model": "1",
|
||||
"sysfs_id": "/class/block/sdc",
|
||||
"sysfs_bus_id": "1:0:0:1",
|
||||
"sysfs_device_link": "/devices/pci0000:00/0000:00:14.0/usb4/4-3/4-3:1.0/host1/target1:0:0/1:0:0:1",
|
||||
"unix_device_name": "/dev/sdc",
|
||||
"unix_device_number": {
|
||||
"type": 98,
|
||||
"major": 8,
|
||||
"minor": 32,
|
||||
"range": 16
|
||||
},
|
||||
"unix_device_names": [
|
||||
"/dev/disk/by-id/ata-ST20000NM002H-3KV133_ZYD5S02X",
|
||||
"/dev/disk/by-id/usb-USB_3.0_Device_1_000000004EBF-0:1",
|
||||
"/dev/disk/by-path/pci-0000:00:14.0-usb-0:3:1.0-scsi-0:0:0:1",
|
||||
"/dev/disk/by-path/pci-0000:00:14.0-usbv3-0:3:1.0-scsi-0:0:0:1",
|
||||
"/dev/sdc"
|
||||
],
|
||||
"unix_device_name2": "/dev/sg2",
|
||||
"unix_device_number2": {
|
||||
"type": 99,
|
||||
"major": 21,
|
||||
"minor": 2,
|
||||
"range": 1
|
||||
},
|
||||
"resources": [
|
||||
{
|
||||
"type": "disk_geo",
|
||||
"cylinders": 19074048,
|
||||
"heads": 64,
|
||||
"sectors": 32,
|
||||
"size": "0x0",
|
||||
"geo_type": "logical"
|
||||
},
|
||||
{
|
||||
"type": "size",
|
||||
"unit": "sectors",
|
||||
"value_1": 39063650304,
|
||||
"value_2": 512
|
||||
}
|
||||
],
|
||||
"driver": "uas",
|
||||
"driver_module": "uas",
|
||||
"drivers": ["sd", "uas"],
|
||||
"driver_modules": ["sd_mod", "uas"]
|
||||
},
|
||||
{
|
||||
"index": 31,
|
||||
"attached_to": 25,
|
||||
"class_list": ["disk", "block_device"],
|
||||
"base_class": {
|
||||
"hex": "0106",
|
||||
"name": "Mass Storage Device",
|
||||
"value": 262
|
||||
},
|
||||
"sub_class": {
|
||||
"hex": "0000",
|
||||
"name": "Disk",
|
||||
"value": 0
|
||||
},
|
||||
"model": "Disk",
|
||||
"sysfs_id": "/class/block/mmcblk0boot1",
|
||||
"sysfs_bus_id": "mmcblk0",
|
||||
"sysfs_device_link": "/devices/pci0000:00/0000:00:1a.0/mmc_host/mmc0/mmc0:0001/block/mmcblk0",
|
||||
"unix_device_name": "/dev/mmcblk0boot1",
|
||||
"unix_device_number": {
|
||||
"type": 98,
|
||||
"major": 179,
|
||||
"minor": 64,
|
||||
"range": 32
|
||||
},
|
||||
"unix_device_names": ["/dev/mmcblk0boot1"],
|
||||
"resources": [
|
||||
{
|
||||
"type": "disk_geo",
|
||||
"cylinders": 128,
|
||||
"heads": 4,
|
||||
"sectors": 16,
|
||||
"size": "0x0",
|
||||
"geo_type": "logical"
|
||||
},
|
||||
{
|
||||
"type": "size",
|
||||
"unit": "sectors",
|
||||
"value_1": 8192,
|
||||
"value_2": 512
|
||||
}
|
||||
],
|
||||
"driver": "mmcblk",
|
||||
"drivers": ["mmcblk"]
|
||||
},
|
||||
{
|
||||
"index": 32,
|
||||
"attached_to": 22,
|
||||
"class_list": ["disk", "usb", "scsi", "block_device"],
|
||||
"bus_type": {
|
||||
@@ -957,27 +783,27 @@
|
||||
},
|
||||
"serial": "000000001532",
|
||||
"model": "Generic STORAGE DEVICE",
|
||||
"sysfs_id": "/class/block/sda",
|
||||
"sysfs_id": "/class/block/sdc",
|
||||
"sysfs_bus_id": "0:0:0:0",
|
||||
"sysfs_device_link": "/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/host0/target0:0:0/0:0:0:0",
|
||||
"unix_device_name": "/dev/sda",
|
||||
"sysfs_device_link": "/devices/pci0000:00/0000:00:14.0/usb3/3-1/3-1:1.0/host0/target0:0:0/0:0:0:0",
|
||||
"unix_device_name": "/dev/sdc",
|
||||
"unix_device_number": {
|
||||
"type": 98,
|
||||
"major": 8,
|
||||
"minor": 0,
|
||||
"minor": 32,
|
||||
"range": 16
|
||||
},
|
||||
"unix_device_names": [
|
||||
"/dev/disk/by-id/usb-Generic_STORAGE_DEVICE_000000001532-0:0",
|
||||
"/dev/disk/by-path/pci-0000:00:14.0-usb-0:2:1.0-scsi-0:0:0:0",
|
||||
"/dev/disk/by-path/pci-0000:00:14.0-usbv2-0:2:1.0-scsi-0:0:0:0",
|
||||
"/dev/sda"
|
||||
"/dev/disk/by-path/pci-0000:00:14.0-usb-0:1:1.0-scsi-0:0:0:0",
|
||||
"/dev/disk/by-path/pci-0000:00:14.0-usbv2-0:1:1.0-scsi-0:0:0:0",
|
||||
"/dev/sdc"
|
||||
],
|
||||
"unix_device_name2": "/dev/sg0",
|
||||
"unix_device_name2": "/dev/sg2",
|
||||
"unix_device_number2": {
|
||||
"type": 99,
|
||||
"major": 21,
|
||||
"minor": 0,
|
||||
"minor": 2,
|
||||
"range": 1
|
||||
},
|
||||
"resources": [
|
||||
@@ -1009,6 +835,90 @@
|
||||
"drivers": ["sd", "usb-storage"],
|
||||
"driver_modules": ["sd_mod", "usb_storage"],
|
||||
"module_alias": "usb:v05E3p0749d1532dc00dsc00dp00ic08isc06ip50in00"
|
||||
},
|
||||
{
|
||||
"index": 30,
|
||||
"attached_to": 22,
|
||||
"class_list": ["disk", "usb", "scsi", "block_device"],
|
||||
"bus_type": {
|
||||
"hex": "0084",
|
||||
"name": "SCSI",
|
||||
"value": 132
|
||||
},
|
||||
"slot": {
|
||||
"bus": 1,
|
||||
"number": 0
|
||||
},
|
||||
"base_class": {
|
||||
"hex": "0106",
|
||||
"name": "Mass Storage Device",
|
||||
"value": 262
|
||||
},
|
||||
"sub_class": {
|
||||
"hex": "0000",
|
||||
"name": "Disk",
|
||||
"value": 0
|
||||
},
|
||||
"vendor": {
|
||||
"hex": "152d",
|
||||
"value": 5421
|
||||
},
|
||||
"device": {
|
||||
"hex": "0561",
|
||||
"name": "0",
|
||||
"value": 1377
|
||||
},
|
||||
"revision": {
|
||||
"hex": "0000",
|
||||
"name": "~",
|
||||
"value": 0
|
||||
},
|
||||
"serial": "000000004EBF",
|
||||
"model": "0",
|
||||
"sysfs_id": "/class/block/sda",
|
||||
"sysfs_bus_id": "1:0:0:0",
|
||||
"sysfs_device_link": "/devices/pci0000:00/0000:00:14.0/usb4/4-3/4-3:1.0/host1/target1:0:0/1:0:0:0",
|
||||
"unix_device_name": "/dev/sda",
|
||||
"unix_device_number": {
|
||||
"type": 98,
|
||||
"major": 8,
|
||||
"minor": 0,
|
||||
"range": 16
|
||||
},
|
||||
"unix_device_names": [
|
||||
"/dev/disk/by-id/ata-ST20000NM002H-3KV133_ZYD5RYRG",
|
||||
"/dev/disk/by-id/usb-USB_3.0_Device_0_000000004EBF-0:0",
|
||||
"/dev/disk/by-path/pci-0000:00:14.0-usb-0:3:1.0-scsi-0:0:0:0",
|
||||
"/dev/disk/by-path/pci-0000:00:14.0-usbv3-0:3:1.0-scsi-0:0:0:0",
|
||||
"/dev/sda"
|
||||
],
|
||||
"unix_device_name2": "/dev/sg0",
|
||||
"unix_device_number2": {
|
||||
"type": 99,
|
||||
"major": 21,
|
||||
"minor": 0,
|
||||
"range": 1
|
||||
},
|
||||
"resources": [
|
||||
{
|
||||
"type": "disk_geo",
|
||||
"cylinders": 19074048,
|
||||
"heads": 64,
|
||||
"sectors": 32,
|
||||
"size": "0x0",
|
||||
"geo_type": "logical"
|
||||
},
|
||||
{
|
||||
"type": "size",
|
||||
"unit": "sectors",
|
||||
"value_1": 39063650304,
|
||||
"value_2": 512
|
||||
}
|
||||
],
|
||||
"driver": "uas",
|
||||
"driver_module": "uas",
|
||||
"drivers": ["sd", "uas"],
|
||||
"driver_modules": ["sd_mod", "uas"]
|
||||
}
|
||||
],
|
||||
"graphics_card": [
|
||||
@@ -1118,7 +1028,7 @@
|
||||
],
|
||||
"hub": [
|
||||
{
|
||||
"index": 34,
|
||||
"index": 33,
|
||||
"attached_to": 22,
|
||||
"class_list": ["usb", "hub"],
|
||||
"bus_type": {
|
||||
@@ -1268,7 +1178,7 @@
|
||||
"module_alias": "usb:v1D6Bp0003d0615dc09dsc00dp03ic09isc00ip00in00"
|
||||
},
|
||||
{
|
||||
"index": 39,
|
||||
"index": 38,
|
||||
"attached_to": 9,
|
||||
"class_list": ["usb", "hub"],
|
||||
"bus_type": {
|
||||
@@ -1348,7 +1258,7 @@
|
||||
"module_alias": "usb:v1D6Bp0002d0615dc09dsc00dp01ic09isc00ip00in00"
|
||||
},
|
||||
{
|
||||
"index": 41,
|
||||
"index": 40,
|
||||
"attached_to": 9,
|
||||
"class_list": ["usb", "hub"],
|
||||
"bus_type": {
|
||||
@@ -1420,8 +1330,8 @@
|
||||
],
|
||||
"keyboard": [
|
||||
{
|
||||
"index": 38,
|
||||
"attached_to": 34,
|
||||
"index": 39,
|
||||
"attached_to": 33,
|
||||
"class_list": ["keyboard", "usb"],
|
||||
"bus_type": {
|
||||
"hex": "0086",
|
||||
@@ -1458,8 +1368,8 @@
|
||||
"value": 0
|
||||
},
|
||||
"model": "Logitech USB Receiver",
|
||||
"sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5:1.0",
|
||||
"sysfs_bus_id": "3-5:1.0",
|
||||
"sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0",
|
||||
"sysfs_bus_id": "3-2:1.0",
|
||||
"resources": [
|
||||
{
|
||||
"type": "baud",
|
||||
@@ -1529,7 +1439,7 @@
|
||||
{
|
||||
"type": "mem",
|
||||
"base": 0,
|
||||
"range": 8096096256,
|
||||
"range": 8097124352,
|
||||
"enabled": true,
|
||||
"access": "read_write",
|
||||
"prefetch": "unknown"
|
||||
@@ -1718,8 +1628,8 @@
|
||||
],
|
||||
"mouse": [
|
||||
{
|
||||
"index": 42,
|
||||
"attached_to": 34,
|
||||
"index": 32,
|
||||
"attached_to": 33,
|
||||
"class_list": ["mouse", "usb"],
|
||||
"bus_type": {
|
||||
"hex": "0086",
|
||||
@@ -1758,8 +1668,8 @@
|
||||
"compat_vendor": "Unknown",
|
||||
"compat_device": "Generic USB Mouse",
|
||||
"model": "Logitech USB Receiver",
|
||||
"sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5:1.1",
|
||||
"sysfs_bus_id": "3-5:1.1",
|
||||
"sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.1",
|
||||
"sysfs_bus_id": "3-2:1.1",
|
||||
"resources": [
|
||||
{
|
||||
"type": "baud",
|
||||
@@ -1964,7 +1874,7 @@
|
||||
"resources": [
|
||||
{
|
||||
"type": "hwaddr",
|
||||
"address": 48
|
||||
"address": 54
|
||||
},
|
||||
{
|
||||
"type": "io",
|
||||
@@ -1989,7 +1899,7 @@
|
||||
},
|
||||
{
|
||||
"type": "phwaddr",
|
||||
"address": 54
|
||||
"address": 53
|
||||
},
|
||||
{
|
||||
"type": "wlan",
|
||||
@@ -2082,8 +1992,8 @@
|
||||
],
|
||||
"network_interface": [
|
||||
{
|
||||
"index": 43,
|
||||
"attached_to": 13,
|
||||
"index": 41,
|
||||
"attached_to": 0,
|
||||
"class_list": ["network_interface"],
|
||||
"base_class": {
|
||||
"hex": "0107",
|
||||
@@ -2091,32 +2001,17 @@
|
||||
"value": 263
|
||||
},
|
||||
"sub_class": {
|
||||
"hex": "000a",
|
||||
"name": "WLAN",
|
||||
"value": 10
|
||||
"hex": "0000",
|
||||
"name": "Loopback",
|
||||
"value": 0
|
||||
},
|
||||
"model": "WLAN network interface",
|
||||
"sysfs_id": "/class/net/wlan0",
|
||||
"sysfs_device_link": "/devices/pci0000:00/0000:00:1c.0/0000:01:00.0",
|
||||
"unix_device_name": "wlan0",
|
||||
"unix_device_names": ["wlan0"],
|
||||
"resources": [
|
||||
{
|
||||
"type": "hwaddr",
|
||||
"address": 48
|
||||
},
|
||||
{
|
||||
"type": "phwaddr",
|
||||
"address": 54
|
||||
}
|
||||
],
|
||||
"driver": "rtw89_8852be",
|
||||
"driver_module": "rtw89_8852be",
|
||||
"drivers": ["rtw89_8852be"],
|
||||
"driver_modules": ["rtw89_8852be"]
|
||||
"model": "Loopback network interface",
|
||||
"sysfs_id": "/class/net/lo",
|
||||
"unix_device_name": "lo",
|
||||
"unix_device_names": ["lo"]
|
||||
},
|
||||
{
|
||||
"index": 44,
|
||||
"index": 42,
|
||||
"attached_to": 11,
|
||||
"class_list": ["network_interface"],
|
||||
"base_class": {
|
||||
@@ -2150,8 +2045,8 @@
|
||||
"driver_modules": ["igc"]
|
||||
},
|
||||
{
|
||||
"index": 45,
|
||||
"attached_to": 0,
|
||||
"index": 43,
|
||||
"attached_to": 13,
|
||||
"class_list": ["network_interface"],
|
||||
"base_class": {
|
||||
"hex": "0107",
|
||||
@@ -2159,14 +2054,29 @@
|
||||
"value": 263
|
||||
},
|
||||
"sub_class": {
|
||||
"hex": "0000",
|
||||
"name": "Loopback",
|
||||
"value": 0
|
||||
"hex": "000a",
|
||||
"name": "WLAN",
|
||||
"value": 10
|
||||
},
|
||||
"model": "Loopback network interface",
|
||||
"sysfs_id": "/class/net/lo",
|
||||
"unix_device_name": "lo",
|
||||
"unix_device_names": ["lo"]
|
||||
"model": "WLAN network interface",
|
||||
"sysfs_id": "/class/net/wlan0",
|
||||
"sysfs_device_link": "/devices/pci0000:00/0000:00:1c.0/0000:01:00.0",
|
||||
"unix_device_name": "wlan0",
|
||||
"unix_device_names": ["wlan0"],
|
||||
"resources": [
|
||||
{
|
||||
"type": "hwaddr",
|
||||
"address": 54
|
||||
},
|
||||
{
|
||||
"type": "phwaddr",
|
||||
"address": 53
|
||||
}
|
||||
],
|
||||
"driver": "rtw89_8852be",
|
||||
"driver_module": "rtw89_8852be",
|
||||
"drivers": ["rtw89_8852be"],
|
||||
"driver_modules": ["rtw89_8852be"]
|
||||
}
|
||||
],
|
||||
"pci": [
|
||||
|
@@ -1,34 +0,0 @@
|
||||
{ config, pkgs, ... }:
|
||||
let
|
||||
# ncDomain = "${config.clan.core.vars.generators.vega-nextcloud.files.subdomain.value}.${config.networking.fqdn}";
|
||||
ncDomain = "${config.networking.fqdn}";
|
||||
in
|
||||
{
|
||||
clan.core.vars.generators.vega-nextcloud = {
|
||||
files.subdomain.secret = false;
|
||||
|
||||
prompts = {
|
||||
subdomain = {
|
||||
persist = true;
|
||||
type = "line";
|
||||
description = "Sub-domain for Nextcloud app. Default:(cloud)";
|
||||
};
|
||||
};
|
||||
|
||||
script = ''cat $prompts/subdomain || echo -n "cloud" > $out/subdomain'';
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
80
|
||||
443
|
||||
];
|
||||
|
||||
services.nextcloud = {
|
||||
hostName = ncDomain;
|
||||
package = pkgs.nextcloud31;
|
||||
};
|
||||
# services.nginx.virtualHosts."${ncDomain}" = {
|
||||
# # useACMEHost = "${config.networking.fqdn}";
|
||||
# # forceSSL = true;
|
||||
# };
|
||||
}
|
93
machines/vega/services/samba.nix
Normal file
93
machines/vega/services/samba.nix
Normal file
@@ -0,0 +1,93 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
sambaUser = lib.filterAttrs (
|
||||
name: user: user.isNormalUser && builtins.elem "samba" user.extraGroups
|
||||
) config.users.users;
|
||||
|
||||
sharedFolders = {
|
||||
GLOM.users = [
|
||||
"w"
|
||||
"kurogeek"
|
||||
"berwn"
|
||||
];
|
||||
};
|
||||
in
|
||||
{
|
||||
|
||||
services.samba = {
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
settings = {
|
||||
global = {
|
||||
security = "user";
|
||||
workgroup = "WORKGROUP";
|
||||
"server string" = "Glom Vega";
|
||||
interfaces = "eth* en*";
|
||||
"max log size" = "50";
|
||||
"dns proxy" = false;
|
||||
"syslog only" = true;
|
||||
"map to guest" = "Bad User";
|
||||
"guest account" = "nobody";
|
||||
};
|
||||
}
|
||||
// lib.mapAttrs (share: opts: {
|
||||
path = "/mnt/hdd/samba/${share}";
|
||||
comment = share;
|
||||
"force user" = share;
|
||||
"force group" = share;
|
||||
public = "yes";
|
||||
"guest ok" = "yes";
|
||||
"create mask" = "0640";
|
||||
"directory mask" = "0750";
|
||||
writable = "no";
|
||||
browseable = "yes";
|
||||
printable = "no";
|
||||
# TODO
|
||||
# "valid users" = toString opts.users;
|
||||
}) sharedFolders;
|
||||
};
|
||||
|
||||
users.users = lib.mapAttrs (share: opts: {
|
||||
isSystemUser = true;
|
||||
group = share;
|
||||
}) sharedFolders;
|
||||
|
||||
users.groups = lib.mapAttrs (share: opts: { }) sharedFolders;
|
||||
|
||||
systemd.services.samba-smbd.postStart =
|
||||
lib.concatMapStrings (
|
||||
user:
|
||||
let
|
||||
password = config.clan.core.vars.generators."${user}-smb-password".files.password.path;
|
||||
in
|
||||
''
|
||||
mkdir -p /mnt/hdd/samba/${user}
|
||||
chown ${user}:users /mnt/hdd/samba/${user}
|
||||
# if a password is unchanged, this will error
|
||||
(echo $(<${password}); echo $(<${password})) | ${config.services.samba.package}/bin/smbpasswd -s -a ${user}
|
||||
''
|
||||
) (lib.attrNames sambaUser)
|
||||
+ lib.concatMapStrings (share: ''
|
||||
mkdir -p /mnt/hdd/samba/${share}
|
||||
chown ${share}:${share} /mnt/hdd/samba/${share}
|
||||
'') (lib.attrNames sharedFolders);
|
||||
|
||||
services.samba-wsdd = {
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
};
|
||||
|
||||
services.avahi = {
|
||||
publish.enable = true;
|
||||
publish.userServices = true;
|
||||
# ^^ Needed to allow samba to automatically register mDNS records (without the need for an `extraServiceFile`
|
||||
nssmdns4 = true;
|
||||
# ^^ Not one hundred percent sure if this is needed- if it aint broke, don't fix it
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
};
|
||||
}
|
54
modules/clan/yggdrasil/default.nix
Normal file
54
modules/clan/yggdrasil/default.nix
Normal file
@@ -0,0 +1,54 @@
|
||||
{ ... }:
|
||||
{
|
||||
_class = "clan.service";
|
||||
manifest.name = "yggdrasil";
|
||||
manifest.description = "An in scalable routing as an encrypted IPv6 overlay network";
|
||||
manifest.categories = [ "System" ];
|
||||
|
||||
roles.default = {
|
||||
perInstance.nixosModule =
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
user = "yggdrasil";
|
||||
in
|
||||
{
|
||||
clan.core.vars.generators.yggdrasil = {
|
||||
files = {
|
||||
yggdrasil-secret = {
|
||||
secret = true;
|
||||
owner = user;
|
||||
group = user;
|
||||
};
|
||||
yggdrasil-ip.secret = false;
|
||||
};
|
||||
runtimeInputs = with pkgs; [
|
||||
yggdrasil
|
||||
jq
|
||||
];
|
||||
script = ''
|
||||
yggdrasil -genconf -json | jq {PrivateKey} > $out/yggdrasil-secret
|
||||
cat $out/yggdrasil-secret | yggdrasil -useconf -address | tr -d "\n" > $out/yggdrasil-ip
|
||||
'';
|
||||
};
|
||||
|
||||
services.yggdrasil = {
|
||||
enable = lib.mkDefault true;
|
||||
# configFile = config.clan.core.vars.generators.yggdrasil.files.yggdrasil-secret.path;
|
||||
settings = {
|
||||
Peers = [
|
||||
# US Peers
|
||||
"tls://ygg.jjolly.dev:3443"
|
||||
"tls://[2602:fc24:18:7a42::1]:993"
|
||||
"tcp://leo.node.3dt.net:9002"
|
||||
"tcp://ygg-kcmo.incognet.io:8883"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
18
modules/clan/yggdrasil/flake-module.nix
Normal file
18
modules/clan/yggdrasil/flake-module.nix
Normal file
@@ -0,0 +1,18 @@
|
||||
{ lib, ... }:
|
||||
let
|
||||
module = lib.modules.importApply ./default.nix { };
|
||||
in
|
||||
{
|
||||
clan.modules = {
|
||||
yggdrasil = module;
|
||||
};
|
||||
perSystem =
|
||||
{ ... }:
|
||||
{
|
||||
clan.nixosTests.yggdrasil = {
|
||||
imports = [ ./tests/vm/default.nix ];
|
||||
|
||||
clan.modules."@clan/yggdrasil" = module;
|
||||
};
|
||||
};
|
||||
}
|
41
modules/clan/yggdrasil/tests/vm/default.nix
Normal file
41
modules/clan/yggdrasil/tests/vm/default.nix
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
name = "service-yggdrasil";
|
||||
|
||||
clan = {
|
||||
directory = ./.;
|
||||
inventory = {
|
||||
machines.server = { };
|
||||
|
||||
instances = {
|
||||
yggdrasil-test = {
|
||||
module.name = "@clan/yggdrasil";
|
||||
module.input = "self";
|
||||
roles.default.machines."server".settings = { };
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
nodes = {
|
||||
server = {
|
||||
services.yggdrasil = {
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
|
||||
server.wait_for_unit("yggdrasil")
|
||||
|
||||
# Check that garage is running
|
||||
server.succeed("systemctl status yggdrasil")
|
||||
|
||||
|
||||
|
||||
'';
|
||||
}
|
6
modules/clan/yggdrasil/tests/vm/sops/machines/server/key.json
Executable file
6
modules/clan/yggdrasil/tests/vm/sops/machines/server/key.json
Executable file
@@ -0,0 +1,6 @@
|
||||
[
|
||||
{
|
||||
"publickey": "age12ldrhhffl0jeteh8f0rzhezs0ulggg5jyqph6xzrgjw2dv40pqwq49lej9",
|
||||
"type": "age"
|
||||
}
|
||||
]
|
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"data": "ENC[AES256_GCM,data:pGMobS67sLp2GN2Xw7A/trcLYnQdVZCUbjtlwS/AShXxyXgHXzkqRee6R765GZyCpDwM8A1IuMZYctrqWxVXrpIAiJpwvwy7vDM=,iv:ysRf5xAXN+dFSx+sFHNDt1GcVQx7RLej4c12v60iSI0=,tag:yXYpWhWLdsz9BOOoKpZU4g==,type:str]",
|
||||
"sops": {
|
||||
"age": [
|
||||
{
|
||||
"recipient": "age1qm0p4vf9jvcnn43s6l4prk8zn6cx0ep9gzvevxecv729xz540v8qa742eg",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA2UmhPdzcrSnFhVUxRNDBL\ncXlGRzdMdWxCWmFlUkE4RnJRQ3psMlBqV0Q0CkRjTXFoQitQbjRhMlVjaDc3UDN1\nR1hBeXlCeWxvdnZoVWI1ZkcweHF5VncKLS0tIHE4YVFhYTZTNko1MnJINjFPYXh4\ndlJJZThGZ0JIaDJWRTNXbXk3alNZTnMKgd+0535zoTu6xW2778uNReu4Z7LStN6d\n1O9SXAB+s1iOZ3xGEICiQTVF/6p8RE6lheV2oXgoMiXXrFNH6INLsw==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
],
|
||||
"lastmodified": "2025-10-17T05:34:34Z",
|
||||
"mac": "ENC[AES256_GCM,data:YIpKJlOI6ASgOYqv9ipu+T3c+PlM5HwvdFVH8gh8hVeSbmxD1baPPmVSWlLv+u61Q1/C9PK4mczaASopaGiLoswep+Hc1Gn7sSeP9wO6Djx6fEIEyE1VUhUbTqi/nHYiB21yB/wegfpqzNYIn1nO0oFCmDmSS5qIowcT1fhYIjM=,iv:lzxll5oC7poLvC/hZPexUGAcAdf67xZGRXUpj6O3p6Y=,tag:9xu17Y5MtW5XNzGBsWwA3g==,type:str]",
|
||||
"unencrypted_suffix": "_unencrypted",
|
||||
"version": "3.10.2"
|
||||
}
|
||||
}
|
@@ -0,0 +1 @@
|
||||
../../../users/admin
|
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"publickey": "age1qm0p4vf9jvcnn43s6l4prk8zn6cx0ep9gzvevxecv729xz540v8qa742eg",
|
||||
"type": "age"
|
||||
}
|
@@ -0,0 +1 @@
|
||||
204:5ce7:aa27:579b:ec90:6907:4ddc:177
|
@@ -0,0 +1 @@
|
||||
../../../../../../sops/machines/server
|
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"data": "ENC[AES256_GCM,data:I6yalWQ2u5hI84lJTUmh07JxUBp4EZukJrSGSN7wsGiUGlFa1v/RT1XkTiXuRjDtUVYCLmQmfSCAp/OqFscxF8KL+s24iTDrG4e3S6AeKLa3oZrNJIt1EJ06gWrPNoh1ttmwXSd4Y4Bsk4Lg8vIjH4qw3Bx+KrufxYTqe+anfMdoXKnW8wOWud5O7HMvCh+sf4dNcf6PIQ==,iv:SF5qExXNPyif+LIcNhHP0PKELUBXaFsPj9B3wvUkEp0=,tag:QEkZXDrIdcpNiZ6l2ljOPw==,type:str]",
|
||||
"sops": {
|
||||
"age": [
|
||||
{
|
||||
"recipient": "age12ldrhhffl0jeteh8f0rzhezs0ulggg5jyqph6xzrgjw2dv40pqwq49lej9",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBENDhrWVRuYjRnZktROU4v\nSHNtODFGMWl0NDRHazIwcWl0WGtNY2dYMXhnCmZQQ0doS3BTaU5hRHVsVTB5THl1\nWUNDQUNiMVJFeFZnQ1ptYmFQdTJQc28KLS0tIEtJdUQ5Y1VqSThkSVVNcVNVNEFr\nMzBCRjM1L1V5TngrZG5rR0VHY3Z6TDAKPQ6P96upDeh8xwQDrX4Zcf71Dah5zkOJ\n/F5eODEBadzQSRmJuyp3+uRMFf47eR6Q5bVah3NsVxFquXOL3CtNlw==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1qm0p4vf9jvcnn43s6l4prk8zn6cx0ep9gzvevxecv729xz540v8qa742eg",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBHb0EwT2tuMVE5SE5XaWdQ\ncGR0bFFhOUQvM2dGUzdlUEFFbzRnTHBWWUVnCjFGTXcrWW1vR0x5dXBUamtkS0dF\neG9weUVwQzhhNHhPRUdqV1VnWXJyNFEKLS0tIC80b1ZqRGFOenpENDN1Vk5vRUhY\nVnJzZ1Q5VzZ6ZEZtZE13YjQ0VVhrTTAK5y0BjKBRg2AXuO416JWLMLyM/pCQChKn\nVKZMXcT6cc5hHDuqbp9qUofknF68XnzlH6nOyLB1ZtnELyeZuf29fw==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
],
|
||||
"lastmodified": "2025-10-17T05:34:35Z",
|
||||
"mac": "ENC[AES256_GCM,data:Y3k83RaeX64LA3rsIkQxyKw+LLUgXVsqr3F2UHkv9h73gkyChc6k1oE/FLR4CsZZWsfLNjCkPMuenqToA2mKqQK0aADwPDYo0aVm0hr1PGX5j3Py6EmP56NFvxlAQsExRWo32eqdkeCkY23hfcmUYlaB+bo/fsrRVj67zag9GYA=,iv:p18i8cV6jKXpuZ1Xd7KYCl8BMe1/8CW9YnCuVrTAqy0=,tag:IJnLzdZOn8Clu+lCKT6zvA==,type:str]",
|
||||
"unencrypted_suffix": "_unencrypted",
|
||||
"version": "3.10.2"
|
||||
}
|
||||
}
|
@@ -0,0 +1 @@
|
||||
../../../../../../sops/users/admin
|
9
routers/default.nix
Normal file
9
routers/default.nix
Normal file
@@ -0,0 +1,9 @@
|
||||
{ inputs, ... }:
|
||||
{
|
||||
flake.legacyPackages = {
|
||||
whitehouse-router = import "${inputs.liminix}/default.nix" {
|
||||
device = (import "${inputs.liminix}/devices/gl-ar750");
|
||||
liminix-config = import ./white-house/configuration.nix { inherit inputs; };
|
||||
};
|
||||
};
|
||||
}
|
120
routers/white-house/configuration.nix
Normal file
120
routers/white-house/configuration.nix
Normal file
@@ -0,0 +1,120 @@
|
||||
{ inputs }:
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
modulesPath,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
secrets = {
|
||||
firewallRules = { };
|
||||
}
|
||||
// (import ./secrets.nix);
|
||||
wirelessConfig = {
|
||||
country_code = "TH";
|
||||
inherit (secrets) wpa_passphrase;
|
||||
wmm_enabled = 1;
|
||||
};
|
||||
svc = config.system.service;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
"${inputs.liminix}/modules/wlan.nix"
|
||||
"${inputs.liminix}/modules/network"
|
||||
"${inputs.liminix}/modules/vlan"
|
||||
"${inputs.liminix}/modules/ssh"
|
||||
"${inputs.liminix}/modules/bridge"
|
||||
"${modulesPath}/profiles/gateway.nix"
|
||||
];
|
||||
|
||||
hostname = "whitehouse";
|
||||
boot = {
|
||||
tftp = {
|
||||
freeSpaceBytes = 3 * 1024 * 1024;
|
||||
serverip = "${secrets.lan.prefix}.148";
|
||||
ipaddr = "${secrets.lan.prefix}.251";
|
||||
};
|
||||
};
|
||||
|
||||
services.sshd = svc.ssh.build {
|
||||
authorizedKeys.root = secrets.root.openssh.authorizedKeys.keys;
|
||||
};
|
||||
|
||||
users.root = secrets.root;
|
||||
|
||||
services.resolvconf = lib.mkForce (
|
||||
pkgs.liminix.services.oneshot rec {
|
||||
name = "resolvconf";
|
||||
up = ''
|
||||
( in_outputs ${name}
|
||||
echo "nameserver $(output ${config.services.wan} ns1)" > resolv.conf
|
||||
echo "nameserver $(output ${config.services.wan} ns2)" >> resolv.conf
|
||||
chmod 0444 resolv.conf
|
||||
)
|
||||
'';
|
||||
}
|
||||
);
|
||||
|
||||
profile.gateway = {
|
||||
lan = {
|
||||
interfaces = with config.hardware.networkInterfaces; [
|
||||
wlan
|
||||
wlan5
|
||||
lan
|
||||
];
|
||||
inherit (secrets.lan) prefix;
|
||||
address = {
|
||||
family = "inet";
|
||||
address = "${secrets.lan.prefix}.1";
|
||||
prefixLength = 24;
|
||||
};
|
||||
dhcp = {
|
||||
start = 10;
|
||||
end = 240;
|
||||
hosts = { };
|
||||
localDomain = "lan";
|
||||
};
|
||||
};
|
||||
wan = {
|
||||
interface = svc.pppoe.build {
|
||||
interface = config.hardware.networkInterfaces.wan;
|
||||
username = secrets.l2tp.name;
|
||||
password = secrets.l2tp.password;
|
||||
};
|
||||
|
||||
dhcp6.enable = true;
|
||||
};
|
||||
firewall = {
|
||||
enable = true;
|
||||
rules = secrets.firewallRules;
|
||||
};
|
||||
wireless.networks = {
|
||||
|
||||
"${secrets.ssid}" = {
|
||||
interface = config.hardware.networkInterfaces.wlan;
|
||||
hw_mode = "g";
|
||||
channel = "2";
|
||||
ieee80211n = 1;
|
||||
}
|
||||
// wirelessConfig;
|
||||
"${secrets.ssid}-5" = rec {
|
||||
interface = config.hardware.networkInterfaces.wlan5;
|
||||
hw_mode = "a";
|
||||
channel = 36;
|
||||
ht_capab = "[HT40+]";
|
||||
vht_oper_chwidth = 1;
|
||||
vht_oper_centr_freq_seg0_idx = channel + 6;
|
||||
ieee80211n = 1;
|
||||
ieee80211ac = 1;
|
||||
}
|
||||
// wirelessConfig;
|
||||
};
|
||||
};
|
||||
defaultProfile.packages = with pkgs; [
|
||||
busybox
|
||||
iw
|
||||
iptables
|
||||
];
|
||||
|
||||
}
|
20
routers/white-house/secrets.nix
Normal file
20
routers/white-house/secrets.nix
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
wpa_passphrase = "";
|
||||
ssid = "WhiteHouse";
|
||||
l2tp = {
|
||||
name = "";
|
||||
password = "";
|
||||
};
|
||||
root = {
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEcZ/p1Ofa9liwIzPWzNtONhJ7+FUWd2lCz33r81t8+w kurogeek@kurogeek"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAB/raxJR8gASmquP63weHelbi+da2WBJR1DgzHPNz/f"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDuhpzDHBPvn8nv8RH1MRomDOaXyP4GziQm7r3MZ1Syk"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAmgyEGuY/r7SDlJgrzYmQqpcWS5W+fCzRi3OS59ne4W openpgp:0xFF687387"
|
||||
];
|
||||
};
|
||||
|
||||
lan = {
|
||||
prefix = "192.168.1";
|
||||
};
|
||||
}
|
1
vars/per-machine/b4l/yggdrasil/yggdrasil-ip/value
Normal file
1
vars/per-machine/b4l/yggdrasil/yggdrasil-ip/value
Normal file
@@ -0,0 +1 @@
|
||||
200:ada9:8363:202b:faf:be:92ab:e46d
|
1
vars/per-machine/b4l/yggdrasil/yggdrasil-secret/groups/admins
Symbolic link
1
vars/per-machine/b4l/yggdrasil/yggdrasil-secret/groups/admins
Symbolic link
@@ -0,0 +1 @@
|
||||
../../../../../../sops/groups/admins
|
1
vars/per-machine/b4l/yggdrasil/yggdrasil-secret/machines/b4l
Symbolic link
1
vars/per-machine/b4l/yggdrasil/yggdrasil-secret/machines/b4l
Symbolic link
@@ -0,0 +1 @@
|
||||
../../../../../../sops/machines/b4l
|
47
vars/per-machine/b4l/yggdrasil/yggdrasil-secret/secret
Normal file
47
vars/per-machine/b4l/yggdrasil/yggdrasil-secret/secret
Normal file
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"data": "ENC[AES256_GCM,data:NSyWVWXMxoTR07uaLUYX6rHB17wsIB53FZHSsPxgDKJQ2wHBPFNaHSYh+BiSo+IrX+YcdUUqJFhEkjWDyG+vXaNZHrMbg/pzZ/cwTK/lPbYISkwtOhgr3zCA0H6DmQcHVmvR6fsdRDkFwl7pHtn1RMjEORQdbBINtscZfzZFcAF2L1t+WPFxgRKQDNT/9l3f4SoBcuakyg==,iv:/5JbEZ/vj/4I+eEElOY0cnhiYzqqPw2ZKLv2M/xkstw=,tag:23exDL72g56bP7ZbMsK4mA==,type:str]",
|
||||
"sops": {
|
||||
"age": [
|
||||
{
|
||||
"recipient": "age134vt63pjqpd0m7702fyn8vhdlzyj2deqc2q78sp9uw9052kxsgwq6d25ez",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTYUFSZGpmd2tmdzB6bkp5\naytPd1RhVWFqeXF3SDZia3QzUmRNNGpzcjBFCnl3VElLdXFvV0tFSEFlV3hRMzFH\nbnBnWVZ2QkRHZ1BoTEZxdFg4QWE4ckkKLS0tIHhSMlBKakxmM0xyeUphKytLTmpk\nVW90V05hTUEyTVNMQzZHN2xhYTBZRGcK/nJOIM4m56TE7KKmn/QH89g053mmuKKG\nQYs/86SWdLPqwL35FstQg2xDIHSxkDcoMSGc+C+/xdOjWV3qLil/DQ==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age17d4qt0n9edq57tgcqyk8eu5mrendl59yt6z2y3a4vkq7el8krqtq6lq28g",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYaU9idi9RZzhNeXhTb0pp\nUkZ3UVpsZlBka2kvZDBqcVhiRVdMNVFZbEJNCkhvdmFaVTBGcVAvalJPSlFuZHhi\nTE9qeTBMMjk2djhFUEdJbWZmTnN3WnMKLS0tIDludThMRDFDUHhCZVV3bUtVdVBZ\neGg4TzdqVjJPeUxYbnBWNURRSWRrMkEKBCACDZgHG5eVKcSdjHDITJZqgR7cHdHq\n9y8qS3YjaFZ37Ui6Lmb9vJEzDCEy3wEupBy4sbAX4okVapGPJ4fmwg==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1fido2-hmac1qqpf43tgcfjm048lsqskvq34w2t4uvrm5qy6m2eg6zjj82ctca8wctgpczxvj0q4y6337uhvsxdh5j86k9h9ymautpvv2759ucwnef75ez7pa7fpkddklp40mxk2tedsp74359g0kefn5rsq0x0yss6cu4yd0h06up0rp08t6yc4l0hfa9y8jn5fkx6nk0hjhz06ykwv0fyxe7z42q683jy0",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIHJtSTZrY29X\nVTZNQm9XS3JsbEZCNDFUR1gxZXpObDdKRmQzUnRZMytOaFEgQVEgd0l6SlBCVW1v\neDl5N0lHYmVrajZzVzVTYjd4WVdNVjZoZVlkUEtmVXlMdyBIdmtoczF0dmhxL1py\nS1hsc0ErckdoVVB0bE02RGdCNW5raERXT1ZJMTkzNjRGNHd2T3ZSTVYrKzZlbEll\nVTZKc2JVN1B2SzRuNkpaekhwSWJQaFZVQQpYN2xlOFVDZFlEOHhTMGZTVDNjdjdU\ndWlqd2ROamdmelp4UjAyVitnYVQwCi0tLSBZWmVWc2J4YVhLN3VyMTQwamtYRW5K\nWVovUEp3YlN5WjA1VE10MElWMllvCiLrLLekRkmSL5ekLIcFMoqgeEPXSrn15JDd\neKT9sbYtwhB7vt2L57fDRfaF/+7wNb9y6cv2oi+EdDoDXp/EyB4=\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1fido2-hmac1qqprw0vfpc8wzsu78quc777kmee54ln6nnsjrnrhl7nr33eh4kvkksqp05qqxj4kgfzrmrugrsvg7skx6ghh3q9xc0x0agthtkvy25d9eq7eklta5wf7s30hexkuyl5546rdz9ffa5tawlp5yweqkgccntw0ny540n2am3cqw3luhxkfmrp63kwr6mwplhr9u26wll48x0n3k5f60c7hg9a3",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIGxiRWYyUmwv\nVjlEdS9LOVV2K1NwdDFhYWM5RS9LcTZFNkNaMWViMkl5bmMgQVEgZlFBRFNyWkNS\nRDJQaUJ3WWowTEcwaTk0Z0tiRHpQNmhkMTJZUlZHbHlEMCBtMzE5bzVQb1JmZkpy\nY0orbEs2RzBSVXA3UmZYZkRRanNnc2pHSnJjK1pLVmZOWGR4d0IwZjh1YXlkakRx\nTm5EMXR3ZjNHWGl0Ty8rcHpQbkcxRTZmZwpUQkk4NGZPVWRTbG5MNk9CTStSUXFi\nbXlGemlJR2o2dTB6QUE2Q2JKSnE4Ci0tLSBzZjRva2NtNHlRamNvQWpoZW1UWFMr\nQVdNYXBpOFVhaEVxWm1KNFM4UHJvCnebMj6d/+e0vp00Gb02qJtUp2+mEpF/jUpD\n25cxeoSAWPAhfnBgE+oLzQqnQSq5dCxsWteE/1eOXC68koeT9FY=\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1fido2-hmac1qqpyewum3q8dfcumfgec8nn958aec9f4q9aqy0k06kw5kq27d6fdqdgp0p7y4ru3n5xk90u747xevxa2af3v37e85j9g3axrmw5hdwdfh0wz22hut5vrafxsx26a7vh8fjwkymz3ramfgvvu4detztu075kmpr8l9ydqda0rnjwatdwmfgswg849p37astvld98s3nleeq575azlwc2hhpuh",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIC9udm9sRDBJ\nNFM4dFA2ZDdJMlBXeXYvakM5RHVzNlcrRitzUHF6dnBvMVkgQVEgZUh4S2o1R2RE\nV0svbnErTmxodXE2bUxJK3lla2lvajB3OXVwZHJtcHU5dyBKU3I4WFJnK3BOQXl0\nZDh5NTB5ZFlteFJIM2FVTVp5cmNyRXZqL1V0c0l6L0tSb0c5ZU9jbmRXMTIwb2c1\nQjZsREgzWUxaOXBUd2pQK2NncDZuUmZkZwpKZnBka3YzK0tUQ1hXTHVheE45Mzkw\ncE04aVVPQWM1eURmb1JaNlBwVlFFCi0tLSBHTlY4UW5FQXExK2cvMUJDZE9NaURy\nOFUxN0dvczJtWlVRc29QWlZ1bGg0CvUoAmTgDVSF7SPpqnkFhkCUn3N/Yr4Tzodw\nyCiD7U/KYFavEIxGIeg+ClhLF9o4fYq9kk8ld0vU8qUADXBdRDE=\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1hlzrpqqgndcthq5m5yj9egfgyet2fzrxwa6ynjzwx2r22uy6m3hqr3rd06",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAvTUEyUndkSk1iQTB3eUpp\nb0ljaXpwdi9QYmdNV1J3L0NhWElRVzlnNTFVCnZ6Q01ESWRNMHRxdWZKM0lYTXBX\ncko5VitPdWk0UHpwWDhGNzFVZk4yYzgKLS0tIGVRdG5rWkYwOFlCQWNIWFBRalVE\nMmFtOHBvbUw5YXAvMG93MjBrRjdmMGMKlopySr6HS6vfFHiRcwlJz/qy7jzyS1Nf\nw4lw7QnOrvOkoutiK3HiIia5N6V0jd0TV7nJqIu7tz/zYksbzps7QQ==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1sg0rvgyetdcqw7j2x983fh69kdkvqsngpe5x36e5920qa7fze3cqhj4wgx",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBzVTZNTUM5UXowWTlPRDFW\nVUJTbStFcldHbTVDUVRJYjNiaklWRmowTHdnCkJNbUtmdk1jS3kyaVNWVFlOTytX\nKzBwTmxoZi9NdmJuRFNMNTUyRThNUDQKLS0tIENSMHZ5TGwxQ0xuZkZFQ3RJdGEv\nSXIvYW9WY243cTdzZEtra292K0JFVlEKMWhG/7R00uqLb5l5lU3p9Vt4pre6J85r\nIFWtg1G/54KaFt8aiWcD5RUSSARGZ3r4qVtO+9eWP+gA4DUpSNkWNw==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1swlyyk2rzvevqawyeekv75nx2dz34zpe3xqhkqme26gcgeavy4dqrfpcd8",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB5WVlWMHJNbERKUGx0elgx\nUEF1Sms4VCtNRVRraWdvUkFEaTRzYTJ0TTFZCnl0aTIxR1QyQ1VsU0RFNnN1NzBr\neTVQbHJHQjAvYklFVkZkUDRXRGxvSkEKLS0tIHdINHFyQVE2V1V1R1ZxWEFuMm5x\nUVRjSVp6NStGSkQyQ05JVHlXejBEbWsKBlMvtw9MCReN1eSHKMwwsWaEF8kq1Pns\nLNSYEeWABZ5bbPB1xBvmIIlVFThJqgy5mBVJLzQMUwqb0IvixAgFxQ==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1vphy2sr6uw4ptsua3gh9khrm2cqyt65t46tusmt44z98qa7q6ymq6prrdl",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaSmNiVWlRSy91Mm5qSWJ5\nd2Z4WnEydE9ncWwzUVVCMDVoek1wRTFyOFJjCkZjOVZrVHY5d3FKRmMvaXJQWUtU\neGpSZkZITkJaOERkdWZpelA5dTJQOEkKLS0tIEtZOUNJSytYTFpSTWNuY3JjcnJv\nbFZpTXQxc29Pd1FIN0xrcEJYc3ZlV0kKyO/PLn2WNdVtTqM8cG1XFqV/5YdSqPAY\nvroStGVsLliV7W4T2MAmACeyjoMde9/gVosKfGc6awE+Bi2BUxrqpw==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
],
|
||||
"lastmodified": "2025-10-17T07:22:09Z",
|
||||
"mac": "ENC[AES256_GCM,data:OxeLto6aeiTOX8OffRsQzxyluSdva7y3j4j67c+MI1ost+QCZyGAW/5pr2mMaoU2XrwYqUjZTKBhJ9p1FY6C29/EhyzrNhGUTjC5iTcXO1lbLUTgoSDN8KPmVea97sTa+easVHoSgnPLxisG2yCALv95k9/eQ7vF9FRjBBNTaIU=,iv:FQeojhtnKOlqWuQNJo1TmI/PhjYbgwtvK24gZMjbbpM=,tag:Vwum5bSSZRNNDQ3Yudw4hQ==,type:str]",
|
||||
"unencrypted_suffix": "_unencrypted",
|
||||
"version": "3.10.2"
|
||||
}
|
||||
}
|
1
vars/per-machine/b4l/yggdrasil/yggdrasil-secret/users/kurogeek
Symbolic link
1
vars/per-machine/b4l/yggdrasil/yggdrasil-secret/users/kurogeek
Symbolic link
@@ -0,0 +1 @@
|
||||
../../../../../../sops/users/kurogeek
|
Reference in New Issue
Block a user