feat: initial
This commit is contained in:
commit
bba9ceff39
18 changed files with 750 additions and 0 deletions
67
data/network.nix
Normal file
67
data/network.nix
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
let
|
||||
lib = import <nixpkgs/lib>;
|
||||
in
|
||||
rec {
|
||||
network = {
|
||||
subnet = "192.168.2.0/24";
|
||||
subnet_base = "192.168.2.0";
|
||||
gateway = ips.router;
|
||||
cidr = 24;
|
||||
};
|
||||
|
||||
ips = {
|
||||
pi = "192.168.2.100";
|
||||
desktop = "192.168.2.101";
|
||||
router = "192.168.2.1";
|
||||
};
|
||||
|
||||
dhcp = {
|
||||
pool_start = "192.168.2.50";
|
||||
pool_end = "192.168.2.90";
|
||||
default_lease = 3600;
|
||||
max_lease = 86400;
|
||||
reservations = [{
|
||||
ip-address = ips.desktop;
|
||||
hw-address = "30:9c:23:81:91:ea";
|
||||
hostname = "desktop";
|
||||
}];
|
||||
};
|
||||
|
||||
fallback_dns_servers = [
|
||||
"1.1.1.1"
|
||||
"8.8.8.8"
|
||||
];
|
||||
|
||||
local_domain = "home";
|
||||
|
||||
services = {
|
||||
"pi" = {
|
||||
ip = ips.pi;
|
||||
};
|
||||
"desktop" = {
|
||||
ip = ips.desktop;
|
||||
};
|
||||
"torrent" = {
|
||||
ip = ips.pi;
|
||||
reverse_proxy = {
|
||||
port = 8085;
|
||||
};
|
||||
};
|
||||
"wiki" = {
|
||||
ip = ips.pi;
|
||||
reverse_proxy = {
|
||||
port = 8086;
|
||||
};
|
||||
};
|
||||
"router" = {
|
||||
ip = ips.router;
|
||||
};
|
||||
};
|
||||
|
||||
dnsMappings = builtins.listToAttrs (map (name: {
|
||||
name = "${name}.${local_domain}";
|
||||
value = services.${name}.ip;
|
||||
}) (builtins.attrNames services));
|
||||
|
||||
reverse_proxy = lib.filterAttrs (name: value: value ? reverse_proxy) services;
|
||||
}
|
||||
41
data/services.nix
Normal file
41
data/services.nix
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
let
|
||||
lib = import <nixpkgs/lib>;
|
||||
storage_data = import ./storage.nix;
|
||||
in
|
||||
rec {
|
||||
qbittorrent = {
|
||||
root_dir = "${storage_data.ssd.path}/qbittorrent";
|
||||
vpn = {
|
||||
username = "KNLdup50RYT1911K";
|
||||
password = "FQCd6rfszoze0BJGgBhMHa3pIzpUdtyt";
|
||||
};
|
||||
};
|
||||
kiwix = {
|
||||
root_dir = "${storage_data.ssd.path}/kiwix";
|
||||
urls = [
|
||||
"https://ftp.fau.de/kiwix/zim/wikipedia/wikipedia_en_all_nopic_2025-08.zim"
|
||||
"https://download.kiwix.org/zim/wikipedia/wikipedia_de_all_nopic_2026-01.zim"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
37
data/ssh.nix
Normal file
37
data/ssh.nix
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
let
|
||||
allKeyDir = "/etc/nixos/ssh_keys";
|
||||
readKeyFile = filePath:
|
||||
let
|
||||
content = builtins.readFile filePath;
|
||||
# Split on newlines and filter out empty strings
|
||||
lines = builtins.filter (line: line != "") (
|
||||
builtins.filter builtins.isString (
|
||||
builtins.split "\n" content
|
||||
)
|
||||
);
|
||||
in lines;
|
||||
|
||||
# Get all keys for a user
|
||||
getUserKeys = username:
|
||||
let
|
||||
userDir = "${allKeyDir}/${username}";
|
||||
in
|
||||
if builtins.pathExists userDir then
|
||||
let
|
||||
files = builtins.attrNames (builtins.readDir userDir);
|
||||
# Read all key files and flatten the list
|
||||
allKeys = builtins.concatMap (file:
|
||||
readKeyFile "${userDir}/${file}"
|
||||
) files;
|
||||
in allKeys
|
||||
else [];
|
||||
users = builtins.attrNames (builtins.readDir allKeyDir);
|
||||
in
|
||||
rec {
|
||||
keys = builtins.listToAttrs (map (user: {
|
||||
name = user;
|
||||
value = getUserKeys user;
|
||||
}) users);
|
||||
ssh_users = users;
|
||||
getKeys = getUserKeys;
|
||||
}
|
||||
14
data/storage.nix
Normal file
14
data/storage.nix
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
rec {
|
||||
sdcard = {
|
||||
path = "/";
|
||||
type = "ext4";
|
||||
source = "/dev/disk/by-label/NIXOS_SD";
|
||||
options = ["noatime"];
|
||||
};
|
||||
ssd = {
|
||||
path = "/mnt/ssd";
|
||||
type = "ext4";
|
||||
source = "/dev/disk/by-uuid/a3ffb02e-fe9f-4bce-bd94-af0294ebff8f";
|
||||
options = ["noatime"];
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue