Compare commits

..
Author SHA1 Message Date
kurogeek 8945a11073 mob next [ci-skip] [ci skip] [skip ci]
lastFile:machines/buna/disko.nix
2026-08-19 10:33:22 +07:00
kurogeek 0385f3ecf9 inventory.json: update install time of buna 2026-08-19 10:28:41 +07:00
kurogeek 0199e7a49d mob next [ci-skip] [ci skip] [skip ci]
lastFile:machines/buna/disko.nix
2026-08-18 16:47:06 +07:00
kurogeek 82a974ad56 mob next [ci-skip] [ci skip] [skip ci]
lastFile:inventories/default.nix
2026-08-18 16:45:28 +07:00
kurogeek 4736a44897 vars: update via generator wifi.home (shared) 2026-08-18 16:45:24 +07:00
kurogeek ae4ce5f896 vars: update via generator wifi.glom (shared) 2026-08-18 16:45:24 +07:00
16 changed files with 696 additions and 965 deletions
Generated
+27 -26
View File
@@ -135,11 +135,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1788346295, "lastModified": 1781517972,
"narHash": "sha256-k9Ol++FFhQuPya6ZNQwVhqZZkMvE1ytLtbdrbH5zkrI=", "narHash": "sha256-G8bIXFqifs/y62GNPwg20Ksf71raYwzmyN99gf1tXak=",
"ref": "refs/heads/main", "ref": "refs/heads/main",
"rev": "b15797faeca7494a7fe5fde2691d93affa3d3e37", "rev": "7fc62d0c25c7a97d7027a9c248e21c97c9b3acc1",
"revCount": 15239, "revCount": 14604,
"type": "git", "type": "git",
"url": "https://git.clan.lol/clan/clan-core" "url": "https://git.clan.lol/clan/clan-core"
}, },
@@ -164,11 +164,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1788308203, "lastModified": 1778718524,
"narHash": "sha256-dCOb9YIJv9I2udjqukvjlGiTyOvGnO7zVbot0PxjBGk=", "narHash": "sha256-pXLoI6Ax0EnUK6r34UM1vibVC7CfTu6j72R2692ZzPs=",
"rev": "644c49bbf121b3e256bc83ce10b5d97813d9181d", "rev": "12c552ad547d87254f33f33bddd1a2cdbeac754d",
"type": "tarball", "type": "tarball",
"url": "https://git.clan.lol/api/v1/repos/clan/data-mesher/archive/644c49bbf121b3e256bc83ce10b5d97813d9181d.tar.gz" "url": "https://git.clan.lol/api/v1/repos/clan/data-mesher/archive/12c552ad547d87254f33f33bddd1a2cdbeac754d.tar.gz"
}, },
"original": { "original": {
"type": "tarball", "type": "tarball",
@@ -357,11 +357,11 @@
"std": "std" "std": "std"
}, },
"locked": { "locked": {
"lastModified": 1787631179, "lastModified": 1782964989,
"narHash": "sha256-l+Zt5XNTD0f0ChkzDJURfQlFAgANIMrGYrk51SZEJKU=", "narHash": "sha256-pU2Gye+1f+nvFleBTgXdeQfrQnKaJEuO2LT7PnsJ1p0=",
"owner": "kurogeek", "owner": "kurogeek",
"repo": "frappix", "repo": "frappix",
"rev": "fcb797886ae753b26a6e4415a7f2c19ba6adcf3b", "rev": "ac5e2814fc1aca188080bf6b50504cd329790e56",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -416,11 +416,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1788355065, "lastModified": 1781557312,
"narHash": "sha256-gAz5oTI7ur34CfuakQduiQd/2ZhO62Bn2XXg08nZYYQ=", "narHash": "sha256-QOIRYSUFSq7L5mY3dZymaVhcnne3tPgoR9riB0WocjA=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "d9d750e4fc11c10cab2da677bdd31e427f3a3a71", "rev": "c03e4752899e55705dfa63979abd885c582a5c48",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -547,11 +547,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1786845137, "lastModified": 1781242433,
"narHash": "sha256-oQFip+v0luP8NIxJzmiW4Wu8bILsbFWom5l0zonl8hQ=", "narHash": "sha256-bchLZZ3sRn740zyvD2icZSnNoTaanN0nw7l6fjVXO+E=",
"owner": "nix-darwin", "owner": "nix-darwin",
"repo": "nix-darwin", "repo": "nix-darwin",
"rev": "4cff07de74b50e64bdd68cd4e722ab5b6b35ee48", "rev": "aabb2037edfc0f210723b72cd5f528aab5dd3f0b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -707,11 +707,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1788775869, "lastModified": 1781359544,
"narHash": "sha256-JRf1lSypbvKj6AzUZHpUA6YC1DirVuitZWOnRwcm+Ww=", "narHash": "sha256-iUuzKQcyXvopYDDzFpMK5eQKP3WIJExYny2kJtbgUcE=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "58973d74f1893afe13f5902919803a0e99da0ca4", "rev": "9f11f828c213641c2369a9f1fa31fe31557e3156",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -752,15 +752,16 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1787579760, "lastModified": 1708640854,
"narHash": "sha256-WGhIEINOICx7bhV3WrSz0QTzv8uzaaa9AXvD1clIWpc=", "narHash": "sha256-EpcAmvIS4ErqhXtVEfd2GPpU/E/s8CCRSfYzk6FZ/fY=",
"owner": "paisano-nix", "owner": "paisano-nix",
"repo": "core", "repo": "core",
"rev": "88739c84d308876714322eb9844ede6597c1a580", "rev": "adcf742bc9463c08764ca9e6955bd5e7dcf3a3fe",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "paisano-nix", "owner": "paisano-nix",
"ref": "0.2.0",
"repo": "core", "repo": "core",
"type": "github" "type": "github"
} }
@@ -829,11 +830,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1788337237, "lastModified": 1780547341,
"narHash": "sha256-gkSH8VUtCo6hnysNmb9DbTuDepH2t5pv+QWjP75xKAk=", "narHash": "sha256-Gq8KNx5A7hBB3uGJaj6eQfLDIz5YdLu92gqBcvHvoUo=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "fbf759290e0cb0a98dfc813a4eb7d53ad1dacb57", "rev": "9ed65852b6257fbeae4355bc24ecfea307ca759a",
"type": "github" "type": "github"
}, },
"original": { "original": {
+15 -64
View File
@@ -36,7 +36,6 @@
"cursa" "cursa"
"rigel" "rigel"
"vega" "vega"
"buna"
]; ];
dm-bootstrapper = [ dm-bootstrapper = [
@@ -46,12 +45,6 @@
"bosona" "bosona"
"canopus" "canopus"
]; ];
dm-pull-deploy = [
"rana"
"rigel"
"vega"
];
}; };
instances = { instances = {
@@ -188,7 +181,7 @@
} }
) )
]; ];
roles.default.tags = [ "dm-pull-deploy" ]; roles.default.tags = [ "all" ];
roles.default.settings.action = "switch"; roles.default.settings.action = "switch";
}; };
@@ -320,28 +313,13 @@
}; };
roles.server.machines."alasia".settings = { roles.server.machines."alasia".settings = {
public_url = "tailvpn.public.newedge.house"; public_url = "tailvpn.public.newedge.house";
base_domain = "tailnet.newedge.house";
advertise_routes = [ "10.0.10.0/24" ]; advertise_routes = [ "10.0.10.0/24" ];
dns = { nameservers = [
magic_dns = true; "10.0.10.82"
base_domain = "tailvpn.newedge.house"; "1.1.1.1"
nameservers = [ "8.8.8.8"
"10.0.10.82" ];
"1.1.1.1"
"8.8.8.8"
];
extra_records = [
{
name = "poyerp.newedge.house";
type = "A";
value = "10.0.10.1";
}
{
name = "glomerp.newedge.house";
type = "A";
value = "10.0.10.1";
}
];
};
}; };
}; };
@@ -511,47 +489,20 @@
exporters.smartctl = { }; exporters.smartctl = { };
exporters.zfs = { }; exporters.zfs = { };
}; };
buna.settings = {
exporters.smartctl = { };
};
mirach.settings = {
exporters.smartctl = { };
};
almach.settings = {
exporters.smartctl = { };
};
}; };
}; };
wifi = wifi = {
let module.name = "wifi";
networks = { module.input = "clan-community";
home = { };
glom = { };
};
in
{
module.name = "wifi";
module.input = "clan-community";
roles.default = { roles.default = {
machines."buna".settings = { inherit networks; }; machines."buna" = {
settings.networks.home = { };
extraModules = [ settings.networks.glom = { };
(
{ lib, ... }:
{
# profile names match the network attr names above;
# 0 = retry forever for both (defaults: 4 autoconnect attempts, 3 auth attempts)
networking.networkmanager.ensureProfiles.profiles = lib.mapAttrs (_: _: {
connection.autoconnect-retries = 0;
connection.auth-retries = 0;
}) networks;
}
)
];
}; };
}; };
};
}; };
}; };
+1 -1
View File
@@ -19,7 +19,7 @@
"installedAt": 1765277591 "installedAt": 1765277591
}, },
"buna": { "buna": {
"installedAt": 1787123510 "installedAt": 1787110120
}, },
"rana": { "rana": {
"installedAt": 1773134236 "installedAt": 1773134236
+1 -1
View File
@@ -1,7 +1,7 @@
{ ... }: { ... }:
let let
hashDisk = disk: "os-${builtins.substring 0 5 (builtins.hashString "sha256" disk)}"; hashDisk = disk: "os-${builtins.substring 0 5 (builtins.hashString "sha256" disk)}";
os = "/dev/disk/by-id/usb-Generic_MassStorageClass_000000001539-0:0"; os = "/dev/disk/by-id/mmc-TLimmc_0xda6d8fbf";
in in
{ {
+615 -737
View File
File diff suppressed because it is too large Load Diff
-3
View File
@@ -25,7 +25,6 @@ in
inputs.self.overlays.frappixLibsOverlay inputs.self.overlays.frappixLibsOverlay
inputs.self.overlays.frappixPythonOverlay inputs.self.overlays.frappixPythonOverlay
inputs.self.overlays.frappixToolsOverlay inputs.self.overlays.frappixToolsOverlay
inputs.self.overlays.frappixAppsOverlay
]; ];
fonts.packages = [ pkgs.tlwg ]; fonts.packages = [ pkgs.tlwg ];
@@ -60,7 +59,6 @@ in
pkgs.frappix.hrms pkgs.frappix.hrms
pkgs.frappix.crm pkgs.frappix.crm
pkgs.frappix.posprinter pkgs.frappix.posprinter
pkgs.frappix.default_thai_company
]; ];
sites = { sites = {
"${sitename}" = { "${sitename}" = {
@@ -71,7 +69,6 @@ in
"hrms" "hrms"
"crm" "crm"
"posprinter" "posprinter"
"default_thai_company"
]; ];
}; };
}; };
+8 -22
View File
@@ -5,6 +5,8 @@
}: }:
{ {
imports = [ imports = [
self.nixosModules.common
./hardware-configuration.nix ./hardware-configuration.nix
]; ];
@@ -21,12 +23,15 @@
nixpkgs.hostPlatform = { nixpkgs.hostPlatform = {
system = "aarch64-linux"; system = "aarch64-linux";
}; };
nixpkgs.buildPlatform = {
system = "x86_64-linux";
};
system.stateVersion = "25.11"; system.stateVersion = "25.11";
services.journald.extraConfig = ''
Storage=volatile
RuntimeMaxUse=30M
RuntimeMaxFileSize=10M
'';
services.udisks2.enable = false; services.udisks2.enable = false;
nix.settings.log-lines = 25; nix.settings.log-lines = 25;
@@ -49,25 +54,6 @@
"sd_mod" "sd_mod"
]; ];
boot = {
consoleLogLevel = 0;
kernel.sysctl = {
"fs.suid_dumpable" = 0;
"kernel.core_pattern" = "/dev/null";
};
tmp = {
useTmpfs = true;
};
};
services.journald.extraConfig = ''
Storage=none
'';
systemd = {
coredump.enable = false;
};
fileSystems."/mnt/hdd" = { fileSystems."/mnt/hdd" = {
device = "zdata/nas"; device = "zdata/nas";
fsType = "zfs"; fsType = "zfs";
+1
View File
@@ -1,3 +1,4 @@
# Apple Network # Apple Network
This service allows atalkd instances to connect to each other over vxlan over Yggdrasil. We need to use vxlan due to the support of broadcasting it provides. The service will form a network of star-topology vxlan using the underlying Yggdrasil network. With this vxlan network, we can have a private Apple Talk network over the internet. This service allows atalkd instances to connect to each other over vxlan over Yggdrasil. We need to use vxlan due to the support of broadcasting it provides. The service will form a network of star-topology vxlan using the underlying Yggdrasil network. With this vxlan network, we can have a private Apple Talk network over the internet.
+17 -55
View File
@@ -19,6 +19,12 @@
description = "Public URL for accessing the instance"; description = "Public URL for accessing the instance";
}; };
base_domain = lib.mkOption {
type = with lib.types; str;
default = "";
description = "Defines the base domain to create the hostnames for MagicDNS in Headscale. `base_domain` must be a FQDN, without the trailing dot. The FQDN of the hosts will be `hostname.base_domain (e.g. myhost.tailnet.example.com)";
};
advertise_routes = lib.mkOption { advertise_routes = lib.mkOption {
type = with lib.types; listOf str; type = with lib.types; listOf str;
default = [ ]; default = [ ];
@@ -26,57 +32,14 @@
example = [ "192.168.1.0/24" ]; example = [ "192.168.1.0/24" ];
}; };
dns = { nameservers = lib.mkOption {
base_domain = lib.mkOption { type = with lib.types; listOf str;
type = with lib.types; str; default = [
default = ""; "1.1.1.1"
description = "Defines the base domain to create the hostnames for MagicDNS in Headscale. `base_domain` must be a FQDN, without the trailing dot. The FQDN of the hosts will be `hostname.base_domain (e.g. myhost.tailnet.example.com)"; "8.8.8.8"
}; ];
description = "List of nameservers to pass to Tailscale clients";
nameservers = lib.mkOption { example = [ "10.0.10.1" ];
type = with lib.types; listOf str;
default = [
"1.1.1.1"
"8.8.8.8"
];
description = "List of nameservers to pass to Tailscale clients";
example = [ "10.0.10.1" ];
};
magic_dns = lib.mkOption {
type = with lib.types; bool;
default = true;
description = "Whether to enable MagicDNS";
};
extra_records = lib.mkOption {
type =
with lib.types;
nullOr (
listOf (submodule {
options = {
name = lib.mkOption {
type = lib.types.str;
description = "DNS record name.";
example = "grafana.tailnet.example.com";
};
type = lib.mkOption {
type = lib.types.enum [
"A"
"AAAA"
];
description = "DNS record type.";
example = "A";
};
value = lib.mkOption {
type = lib.types.str;
description = "DNS record value (IP address).";
example = "100.64.0.3";
};
};
})
);
};
}; };
}; };
}; };
@@ -207,11 +170,10 @@
settings.server_url = "https://${settings.public_url}"; settings.server_url = "https://${settings.public_url}";
settings.dns = { settings.dns = {
base_domain = settings.dns.base_domain; base_domain = settings.base_domain;
override_local_dns = true; override_local_dns = true;
nameservers.global = settings.dns.nameservers; nameservers.global = settings.nameservers;
magic_dns = settings.dns.magic_dns; magic_dns = false;
extra_records = settings.dns.extra_records;
}; };
}; };
@@ -11,7 +11,7 @@
homeDirectory = lib.mkForce "/home/${username}"; homeDirectory = lib.mkForce "/home/${username}";
stateVersion = osConfig.system.stateVersion; stateVersion = osConfig.system.stateVersion;
packages = with pkgs; [ packages = with pkgs; [
libreoffice-stable libreoffice-fresh
element-desktop element-desktop
signal-desktop signal-desktop
brave brave
-5
View File
@@ -1,5 +0,0 @@
{
boot.supportedFilesystems = {
ntfs = true;
};
}
+5
View File
@@ -14,6 +14,11 @@
... ...
}: }:
{ {
nixpkgs.overlays = [
(final: prev: {
libreoffice = prev.libreoffice-fresh;
})
];
services.stirling-pdf = { services.stirling-pdf = {
enable = lib.mkDefault true; enable = lib.mkDefault true;
+5 -5
View File
@@ -10,10 +10,10 @@ in
perSystem = perSystem =
{ ... }: { ... }:
{ {
# clan.nixosTests.service-stirling-pdf = { clan.nixosTests.service-stirling-pdf = {
# imports = [ ./tests/vm/default.nix ]; imports = [ ./tests/vm/default.nix ];
#
# clan.modules."@clan/stirling-pdf" = module; clan.modules."@clan/stirling-pdf" = module;
# }; };
}; };
} }
-1
View File
@@ -7,6 +7,5 @@
frappixLibsOverlay = inputs.frappix.libsOverlay.x86_64-linux; frappixLibsOverlay = inputs.frappix.libsOverlay.x86_64-linux;
frappixPythonOverlay = inputs.frappix.pythonOverlay.x86_64-linux; frappixPythonOverlay = inputs.frappix.pythonOverlay.x86_64-linux;
frappixToolsOverlay = inputs.frappix.toolsOverlay.x86_64-linux; frappixToolsOverlay = inputs.frappix.toolsOverlay.x86_64-linux;
frappixAppsOverlay = import ../pkgs/frappix/overlay.nix;
}; };
} }
-35
View File
@@ -1,35 +0,0 @@
{
buildPythonPackage,
pythonRelaxDepsHook,
flit-core,
mkAssets,
fetchFromGitea,
}:
let
version = "0.0.1";
src = fetchFromGitea {
domain = "git.b4l.co.th";
owner = "newedge";
repo = "default_thai_company";
rev = "caad6e77da35c9359b0dbd75ff0f39bb01891caf";
sha256 = "sha256-LH7E1EkecNPrhfQWSlWzPHHuJLM6SReCAifcFPDr61o=";
};
in
buildPythonPackage (finalAttrs: {
# pname doubles as the frappe app name (services.frappe reads app.pname)
pname = "default_thai_company";
inherit version;
pyproject = true;
src = mkAssets {
inherit (finalAttrs) pname version;
inherit src;
yarnHash = "sha256-oZgyP0hTU9bxszOVg3Bmiu6yos2d2Inc1Do8To4z8GQ=";
};
nativeBuildInputs = [
pythonRelaxDepsHook
flit-core
];
})
-9
View File
@@ -1,9 +0,0 @@
# Extends the frappix app scope with in-house frappe apps.
# Must be applied after frappixFrappeOverlay (needs prev.frappix).
final: prev: {
frappix = prev.frappix.overrideScope (
ffinal: _fprev: {
default_thai_company = ffinal.callPackage ./default-thai-company.nix { };
}
);
}