Compare commits

..
7 Commits
Author SHA1 Message Date
kurogeek fbc489ff28 mob next [ci-skip] [ci skip] [skip ci]
lastFile:modules/clan/apple-network/README.md
2026-08-19 12:00:51 +07:00
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
14 changed files with 80 additions and 228 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
{ {
-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";
+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 = "68f08171252099920d52f5c47800d65ddf4689b3";
sha256 = "sha256-9UomP8G5K+nkAMCfn+gXbBNivLlDo0c/36FYZgHm2Cw=";
};
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 { };
}
);
}