add mx
Signed-off-by: Harald Hoyer <harald@hoyer.xyz>
This commit is contained in:
parent
143cc1742a
commit
a412322e1c
106
flake.lock
106
flake.lock
|
@ -16,6 +16,22 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"blobs": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1604995301,
|
||||||
|
"narHash": "sha256-wcLzgLec6SGJA8fx1OEN1yV/Py5b+U5iyYpksUY/yLw=",
|
||||||
|
"owner": "simple-nixos-mailserver",
|
||||||
|
"repo": "blobs",
|
||||||
|
"rev": "2cccdf1ca48316f2cfd1c9a0017e8de5a7156265",
|
||||||
|
"type": "gitlab"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "simple-nixos-mailserver",
|
||||||
|
"repo": "blobs",
|
||||||
|
"type": "gitlab"
|
||||||
|
}
|
||||||
|
},
|
||||||
"bufdelete-nvim": {
|
"bufdelete-nvim": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
|
@ -524,6 +540,22 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-compat_4": {
|
"flake-compat_4": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1668681692,
|
||||||
|
"narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "009399224d5e398d03b22badca40a37ac85412a1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat_5": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1650374568,
|
"lastModified": 1650374568,
|
||||||
|
@ -1261,6 +1293,36 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs-23_05": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1704290814,
|
||||||
|
"narHash": "sha256-LWvKHp7kGxk/GEtlrGYV68qIvPHkU9iToomNFGagixU=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "70bdadeb94ffc8806c0570eb5c2695ad29f0e421",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "nixpkgs",
|
||||||
|
"ref": "nixos-23.05",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-23_11": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1706098335,
|
||||||
|
"narHash": "sha256-r3dWjT8P9/Ah5m5ul4WqIWD8muj5F+/gbCdjiNVBKmU=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "a77ab169a83a4175169d78684ddd2e54486ac651",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "nixpkgs",
|
||||||
|
"ref": "nixos-23.11",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs-lib": {
|
"nixpkgs-lib": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"dir": "lib",
|
"dir": "lib",
|
||||||
|
@ -1999,6 +2061,7 @@
|
||||||
"neovim-flake": "neovim-flake",
|
"neovim-flake": "neovim-flake",
|
||||||
"nixpkgs": "nixpkgs_4",
|
"nixpkgs": "nixpkgs_4",
|
||||||
"nixsgx-flake": "nixsgx-flake",
|
"nixsgx-flake": "nixsgx-flake",
|
||||||
|
"simple-nixos-mailserver": "simple-nixos-mailserver",
|
||||||
"snowfall-lib": "snowfall-lib_2",
|
"snowfall-lib": "snowfall-lib_2",
|
||||||
"sops-nix": "sops-nix",
|
"sops-nix": "sops-nix",
|
||||||
"unstable": "unstable"
|
"unstable": "unstable"
|
||||||
|
@ -2088,6 +2151,32 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"simple-nixos-mailserver": {
|
||||||
|
"inputs": {
|
||||||
|
"blobs": "blobs",
|
||||||
|
"flake-compat": "flake-compat_4",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixpkgs-23_05": "nixpkgs-23_05",
|
||||||
|
"nixpkgs-23_11": "nixpkgs-23_11",
|
||||||
|
"utils": "utils_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1706219574,
|
||||||
|
"narHash": "sha256-qO+8UErk+bXCq2ybHU4GzXG4Ejk4Tk0rnnTPNyypW4g=",
|
||||||
|
"owner": "simple-nixos-mailserver",
|
||||||
|
"repo": "nixos-mailserver",
|
||||||
|
"rev": "e47f3719f1db3e0961a4358d4cb234a0acaa7baf",
|
||||||
|
"type": "gitlab"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "simple-nixos-mailserver",
|
||||||
|
"ref": "nixos-23.11",
|
||||||
|
"repo": "nixos-mailserver",
|
||||||
|
"type": "gitlab"
|
||||||
|
}
|
||||||
|
},
|
||||||
"smartcolumn": {
|
"smartcolumn": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
|
@ -2129,7 +2218,7 @@
|
||||||
},
|
},
|
||||||
"snowfall-lib_2": {
|
"snowfall-lib_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat_4",
|
"flake-compat": "flake-compat_5",
|
||||||
"flake-utils-plus": "flake-utils-plus_2",
|
"flake-utils-plus": "flake-utils-plus_2",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
|
@ -2462,6 +2551,21 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"utils_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1605370193,
|
||||||
|
"narHash": "sha256-YyMTf3URDL/otKdKgtoMChu4vfVL3vCMkRqpGifhUn0=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "5021eac20303a61fafe17224c087f5519baed54d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"vim-dirtytalk": {
|
"vim-dirtytalk": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
|
|
|
@ -37,6 +37,9 @@
|
||||||
url = "github:matter-labs/nixsgx";
|
url = "github:matter-labs/nixsgx";
|
||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
# inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
simple-nixos-mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-23.11";
|
||||||
|
simple-nixos-mailserver.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs:
|
outputs = inputs:
|
||||||
|
@ -69,6 +72,7 @@
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
sops-nix.nixosModules.sops
|
sops-nix.nixosModules.sops
|
||||||
disko.nixosModules.disko
|
disko.nixosModules.disko
|
||||||
|
simple-nixos-mailserver.nixosModule
|
||||||
];
|
];
|
||||||
|
|
||||||
overlays = with inputs; [
|
overlays = with inputs; [
|
||||||
|
|
35
homes/x86_64-linux/harald@mx/default.nix
Normal file
35
homes/x86_64-linux/harald@mx/default.nix
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
{ lib
|
||||||
|
, pkgs
|
||||||
|
, config
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
home.sessionPath = [ "$HOME/bin" ];
|
||||||
|
|
||||||
|
programs.bash.profileExtra = ''
|
||||||
|
${lib.getExe pkgs.rust-motd}
|
||||||
|
'';
|
||||||
|
|
||||||
|
metacfg = {
|
||||||
|
user = {
|
||||||
|
enable = true;
|
||||||
|
name = config.snowfallorg.user.name;
|
||||||
|
};
|
||||||
|
cli-apps = {
|
||||||
|
bash.enable = true;
|
||||||
|
fish.enable = true;
|
||||||
|
neovim.enable = true;
|
||||||
|
bat.enable = true;
|
||||||
|
starship.enable = true;
|
||||||
|
home-manager.enable = true;
|
||||||
|
};
|
||||||
|
tools = {
|
||||||
|
git.enable = true;
|
||||||
|
direnv.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.enable = true;
|
||||||
|
xdg.mime.enable = true;
|
||||||
|
}
|
||||||
|
|
79
systems/x86_64-linux/mx/acme.nix
Normal file
79
systems/x86_64-linux/mx/acme.nix
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
{ pkgs, lib, config, ... }:
|
||||||
|
{
|
||||||
|
sops.secrets.internetbs = {
|
||||||
|
sopsFile = ../../../.secrets/hetzner/internetbs.yaml; # bring your own password file
|
||||||
|
};
|
||||||
|
|
||||||
|
security.acme = {
|
||||||
|
acceptTerms = true;
|
||||||
|
defaults = {
|
||||||
|
email = "harald@hoyer.xyz";
|
||||||
|
dnsProvider = "internetbs";
|
||||||
|
credentialsFile = config.sops.secrets.internetbs.path;
|
||||||
|
};
|
||||||
|
certs = {
|
||||||
|
"mx.surfsite.org" = { };
|
||||||
|
|
||||||
|
"surfsite.org" = {
|
||||||
|
extraDomainNames = [
|
||||||
|
"*.surfsite.org"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"hoyer.xyz" = {
|
||||||
|
dnsProvider = "cloudflare";
|
||||||
|
extraDomainNames = [
|
||||||
|
"*.hoyer.xyz"
|
||||||
|
"*.harald.hoyer.xyz"
|
||||||
|
"*.hartwin.hoyer.xyz"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"hoyer.world" = {
|
||||||
|
dnsProvider = "cloudflare";
|
||||||
|
extraDomainNames = [
|
||||||
|
"*.hoyer.world"
|
||||||
|
"*.harald.hoyer.world"
|
||||||
|
"*.hartwin.hoyer.world"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"hoyer.social" = {
|
||||||
|
dnsProvider = "cloudflare";
|
||||||
|
extraDomainNames = [
|
||||||
|
"*.hoyer.social"
|
||||||
|
"*.harald.hoyer.social"
|
||||||
|
"*.hartwin.hoyer.social"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"hoyer.photos" = {
|
||||||
|
dnsProvider = "cloudflare";
|
||||||
|
extraDomainNames = [
|
||||||
|
"*.hoyer.photos"
|
||||||
|
"*.harald.hoyer.photos"
|
||||||
|
"*.hartwin.hoyer.photos"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
"harald-hoyer.de" = {
|
||||||
|
extraDomainNames = [
|
||||||
|
"*.harald-hoyer.de"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"hartwin-hoyer.de" = {
|
||||||
|
extraDomainNames = [
|
||||||
|
"*.hartwin-hoyer.de"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"varlink.org" = {
|
||||||
|
extraDomainNames = [
|
||||||
|
"*.varlink.org"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
18
systems/x86_64-linux/mx/backup.nix
Normal file
18
systems/x86_64-linux/mx/backup.nix
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{ pkgs, lib, ... }:
|
||||||
|
{
|
||||||
|
users.users.backup = {
|
||||||
|
shell = pkgs.bash;
|
||||||
|
isNormalUser = true;
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"restrict,command=\"/run/wrappers/bin/rrsync -ro /\" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQGdtB6BFdXN+cRepkzWhbG5KRIM5nXmHiw1K+CEhGihwWsNVKGgU/q4rePK6PVNflTIoHUfL30jkA7H8VpSzu0XOa97Tqf+sF9VQOFrMjpf2rOWv38nc2GnKpnUu68c17KRZ+i8cnPZH0VUqRzaY/1IPMFH3OYO4qHJAEN5oAsyMFI9pbqFLqRnwNALjxf8fUvR/XB88zt3P34vFFer15FtLr4dlIzoEFGdUSOErmGJGmDzTptMqi/t0kn2AgaBKzMxwGTDUj6adU6KKBERj4ii3ekOrPwcNjsws3Mtlm5p8ycUkwUFoIiXukF6XRzCRSWMbZOgSnu2TfC6jRRrdbMNWn4QGF/jdBvvKcBoD4sChzpG6aF4m+7ue0QuHES7Kd2Rwnq0jbesGuBnRciDN+jssGvxZKX7XEialuXiaTQ4jPUA4zgWq474CR6ksuxpUDlKpH+leWPLtuKlhEZZnJHCMhz8Ewk/ZwiNSbLO97cwJciBM71orGWpFxHciT1QE= root@sgx"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
security.wrappers.rrsync = {
|
||||||
|
source = "${pkgs.rrsync.out}/bin/rrsync";
|
||||||
|
owner = "backup";
|
||||||
|
group = "users";
|
||||||
|
permissions = "u=rwx,g=,o=";
|
||||||
|
capabilities = "cap_dac_read_search=+ep";
|
||||||
|
};
|
||||||
|
}
|
70
systems/x86_64-linux/mx/default.nix
Normal file
70
systems/x86_64-linux/mx/default.nix
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
{ pkgs, lib, ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./hardware-configuration.nix
|
||||||
|
./rspamd.nix
|
||||||
|
./goaccess.nix
|
||||||
|
./nextcloud.nix
|
||||||
|
./backup.nix
|
||||||
|
./users.nix
|
||||||
|
./kicker.nix
|
||||||
|
./mailserver.nix
|
||||||
|
./acme.nix
|
||||||
|
./forgejo.nix
|
||||||
|
./nginx.nix
|
||||||
|
./network.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
metacfg = {
|
||||||
|
base.enable = true;
|
||||||
|
nix.enable = true;
|
||||||
|
podman.enable = true;
|
||||||
|
secureboot.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
security = {
|
||||||
|
tpm2.enable = lib.mkDefault true;
|
||||||
|
tpm2.abrmd.enable = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
|
||||||
|
system.autoUpgrade = {
|
||||||
|
enable = true;
|
||||||
|
operation = "switch";
|
||||||
|
allowReboot = true;
|
||||||
|
flake = lib.mkForce "git+file:///var/lib/gitea/repositories/harald/nixcfg.git#mx";
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
age
|
||||||
|
apacheHttpd # for mkpasswd
|
||||||
|
efibootmgr
|
||||||
|
fgallery
|
||||||
|
git
|
||||||
|
htop
|
||||||
|
mdadm
|
||||||
|
rrsync
|
||||||
|
tpm2-pkcs11
|
||||||
|
tpm2-pkcs11.out
|
||||||
|
tpm2-tools
|
||||||
|
zola
|
||||||
|
];
|
||||||
|
|
||||||
|
sops.age.sshKeyPaths = [ "/var/lib/secrets/ssh_host_ed25519_key" ];
|
||||||
|
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
hostKeys = [
|
||||||
|
{
|
||||||
|
path = "/var/lib/secrets/ssh_host_ed25519_key";
|
||||||
|
type = "ed25519";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
path = "/var/lib/secrets/ssh_host_rsa_key";
|
||||||
|
type = "rsa";
|
||||||
|
bits = 4096;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
system.stateVersion = "23.05";
|
||||||
|
}
|
54
systems/x86_64-linux/mx/forgejo.nix
Normal file
54
systems/x86_64-linux/mx/forgejo.nix
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
{ pkgs, lib, config, ... }:
|
||||||
|
{
|
||||||
|
sops.secrets."postgres/gitea_dbpass" = {
|
||||||
|
sopsFile = ../../../.secrets/hetzner/postgres.yaml; # bring your own password file
|
||||||
|
owner = config.services.forgejo.user;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.forgejo = {
|
||||||
|
enable = true;
|
||||||
|
user = "gitea";
|
||||||
|
group = "gitea";
|
||||||
|
stateDir = "/var/lib/gitea";
|
||||||
|
database = {
|
||||||
|
name = "gitea";
|
||||||
|
user = "gitea";
|
||||||
|
type = "postgres";
|
||||||
|
passwordFile = config.sops.secrets."postgres/gitea_dbpass".path;
|
||||||
|
};
|
||||||
|
settings.service.DISABLE_REGISTRATION = true;
|
||||||
|
settings.server = {
|
||||||
|
DOMAIN = "git.hoyer.xyz";
|
||||||
|
ROOT_URL = "https://git.hoyer.xyz/";
|
||||||
|
HTTP_PORT = 3001;
|
||||||
|
};
|
||||||
|
settings.log.LEVEL = "Warn";
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users.gitea = {
|
||||||
|
home = "/var/lib/gitea";
|
||||||
|
useDefaultShell = true;
|
||||||
|
group = "gitea";
|
||||||
|
isSystemUser = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
users.groups.gitea = { };
|
||||||
|
|
||||||
|
services.postgresql = {
|
||||||
|
package = pkgs.postgresql_14;
|
||||||
|
ensureDatabases = [
|
||||||
|
config.services.forgejo.database.name
|
||||||
|
"nextcloud"
|
||||||
|
];
|
||||||
|
ensureUsers = [
|
||||||
|
{
|
||||||
|
name = config.services.forgejo.database.user;
|
||||||
|
ensureDBOwnership = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "nextcloud";
|
||||||
|
ensureDBOwnership = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
26
systems/x86_64-linux/mx/goaccess.nix
Normal file
26
systems/x86_64-linux/mx/goaccess.nix
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
{ pkgs, lib, ... }:
|
||||||
|
{
|
||||||
|
systemd.timers."goaccess" = {
|
||||||
|
wantedBy = [ "timers.target" ];
|
||||||
|
timerConfig = {
|
||||||
|
OnCalendar = "*:0/15";
|
||||||
|
Unit = "goaccess.service";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services."goaccess" = {
|
||||||
|
script = ''
|
||||||
|
set -eu
|
||||||
|
${pkgs.gzip}/bin/zcat -f /var/log/nginx/access.log* | ${pkgs.goaccess}/bin/goaccess --log-format=VCOMBINED -o /var/www/hoyer.xyz/html/stats/index.html -
|
||||||
|
${pkgs.gzip}/bin/zcat -f /var/log/nginx/access.log* | ${pkgs.gnugrep}/bin/egrep '^harald.hoyer.xyz' | ${pkgs.goaccess}/bin/goaccess --log-format=VCOMBINED -o /var/www/hoyer.xyz/html/stats/harald-hoyer.html -
|
||||||
|
${pkgs.gzip}/bin/zcat -f /var/log/nginx/access.log* | ${pkgs.gnugrep}/bin/egrep '^hartwin.hoyer.xyz' | ${pkgs.goaccess}/bin/goaccess --log-format=VCOMBINED -o /var/www/hoyer.xyz/html/stats/hartwin-hoyer.html -
|
||||||
|
${pkgs.gzip}/bin/zcat -f /var/log/nginx/access.log* | ${pkgs.gnugrep}/bin/egrep '^git.hoyer.xyz' | ${pkgs.goaccess}/bin/goaccess --log-format=VCOMBINED -o /var/www/hoyer.xyz/html/stats/git-hoyer.html -
|
||||||
|
${pkgs.gzip}/bin/zcat -f /var/log/nginx/access.log* | ${pkgs.gnugrep}/bin/egrep '^nc.hoyer.xyz' | ${pkgs.goaccess}/bin/goaccess --log-format=VCOMBINED -o /var/www/hoyer.xyz/html/stats/nc-hoyer.html -
|
||||||
|
${pkgs.gzip}/bin/zcat -f /var/log/nginx/access.log* | ${pkgs.gnugrep}/bin/egrep '^kicker.surfsite.org' | ${pkgs.goaccess}/bin/goaccess --log-format=VCOMBINED -o /var/www/hoyer.xyz/html/stats/kicker.html -
|
||||||
|
'';
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
User = "root";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
45
systems/x86_64-linux/mx/hardware-configuration.nix
Normal file
45
systems/x86_64-linux/mx/hardware-configuration.nix
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.kernelPackages = lib.mkForce pkgs.linuxPackages;
|
||||||
|
|
||||||
|
boot.initrd.luks.devices.crypted = {
|
||||||
|
device = "/dev/md/raid1";
|
||||||
|
preLVM = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [
|
||||||
|
"xhci_pci"
|
||||||
|
"ahci"
|
||||||
|
"nvme"
|
||||||
|
"sd_mod"
|
||||||
|
"tpm"
|
||||||
|
"tpm_tis"
|
||||||
|
"trusted"
|
||||||
|
"tpm_crb"
|
||||||
|
"tpm_tis_core"
|
||||||
|
"rng_core"
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
boot.swraid.enable = true;
|
||||||
|
boot.swraid.mdadmConf = ''
|
||||||
|
MAILADDR admin@hoyer.xyz
|
||||||
|
'';
|
||||||
|
disko.devices = import ./server-raid.nix {
|
||||||
|
inherit lib;
|
||||||
|
disks = [ "/dev/sda" "/dev/sdb" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [{ device = "/swapfile"; }];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
17
systems/x86_64-linux/mx/kicker.nix
Normal file
17
systems/x86_64-linux/mx/kicker.nix
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
{ pkgs, lib, ... }:
|
||||||
|
{
|
||||||
|
virtualisation.oci-containers.containers = {
|
||||||
|
kicker = {
|
||||||
|
image = "quay.io/kicker/kicker:live";
|
||||||
|
ports = [ "127.0.0.1:8087:80" ];
|
||||||
|
volumes = [
|
||||||
|
"/home/hartwin/kicker/.htaccess:/app/public/.htaccess"
|
||||||
|
"/home/hartwin/kicker/.htpasswd:/app/public/.htpasswd"
|
||||||
|
"/home/hartwin/kicker/live.db:/app/db/data/current.db"
|
||||||
|
];
|
||||||
|
extraOptions = [
|
||||||
|
"--pull=always"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
232
systems/x86_64-linux/mx/mailserver.nix
Normal file
232
systems/x86_64-linux/mx/mailserver.nix
Normal file
|
@ -0,0 +1,232 @@
|
||||||
|
{ pkgs, lib, config, ... }:
|
||||||
|
{
|
||||||
|
mailserver = {
|
||||||
|
enable = true;
|
||||||
|
fqdn = "mx.surfsite.org";
|
||||||
|
sendingFqdn = "mx.surfsite.org";
|
||||||
|
domains = [
|
||||||
|
"harald-hoyer.de"
|
||||||
|
"hartwin-hoyer.de"
|
||||||
|
"herward-hoyer.de"
|
||||||
|
"meike-knutz.de"
|
||||||
|
"gerlinde-hoyer.de"
|
||||||
|
|
||||||
|
"hoyer.xyz"
|
||||||
|
"nc.hoyer.xyz"
|
||||||
|
"harald.hoyer.xyz"
|
||||||
|
|
||||||
|
"varlink.org"
|
||||||
|
"surfsite.org"
|
||||||
|
"myprivacy.tools"
|
||||||
|
"hoyer.social"
|
||||||
|
"hoyer.world"
|
||||||
|
"hoyer.photos"
|
||||||
|
"harald.hoyer.photos"
|
||||||
|
"hartwin.hoyer.photos"
|
||||||
|
"mx.surfsite.org"
|
||||||
|
];
|
||||||
|
|
||||||
|
extraVirtualAliases = {
|
||||||
|
"max@hoyer.xyz" = [
|
||||||
|
"harald@hoyer.xyz"
|
||||||
|
"mh@hoyer.xyz"
|
||||||
|
];
|
||||||
|
|
||||||
|
"felix@hoyer.xyz" = [
|
||||||
|
"harald@hoyer.xyz"
|
||||||
|
"mh@hoyer.xyz"
|
||||||
|
];
|
||||||
|
|
||||||
|
"muh@hoyer.xyz" = [
|
||||||
|
"harald@hoyer.xyz"
|
||||||
|
"mh@hoyer.xyz"
|
||||||
|
];
|
||||||
|
|
||||||
|
"kicker@surfsite.org" = [
|
||||||
|
"harald@hoyer.xyz"
|
||||||
|
"hartwin@hoyer.xyz"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
# A list of all login accounts. To create the password hashes, use
|
||||||
|
# nix-shell -p mkpasswd --run 'mkpasswd -sm bcrypt'
|
||||||
|
loginAccounts = {
|
||||||
|
"mh@hoyer.xyz" = {
|
||||||
|
hashedPasswordFile = "/home/harald/secrets/mh@hoyer.xyz";
|
||||||
|
aliases = [
|
||||||
|
"meike@harald-hoyer.de"
|
||||||
|
"meike@meike-knutz.de"
|
||||||
|
"meike.hoyer@meike-knutz.de"
|
||||||
|
"meike@hoyer.xyz"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"alex@hoyer.xyz" = {
|
||||||
|
hashedPasswordFile = "/home/hartwin/secrets/alex-mail";
|
||||||
|
aliases = [
|
||||||
|
"alex@hartwin-hoyer.de"
|
||||||
|
"alex.hoyer@hartwin-hoyer.de"
|
||||||
|
"alex@surfsite.org"
|
||||||
|
"alex.hoyer@surfsite.org"
|
||||||
|
"alexander@hoyer.xyz"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"jan@hoyer.xyz" = {
|
||||||
|
hashedPasswordFile = "/home/hartwin/secrets/jan-mail";
|
||||||
|
aliases = [
|
||||||
|
"jan@hartwin-hoyer.de"
|
||||||
|
"jan.hoyer@hartwin-hoyer.de"
|
||||||
|
"jan@surfsite.org"
|
||||||
|
"jan.hoyer@surfsite.org"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"hannah@hoyer.xyz" = {
|
||||||
|
hashedPasswordFile = "/home/hartwin/secrets/hannah-mail";
|
||||||
|
aliases = [
|
||||||
|
"hannah@hartwin-hoyer.de"
|
||||||
|
"hannah.hoyer@hartwin-hoyer.de"
|
||||||
|
"hannah@surfsite.org"
|
||||||
|
"hannah.hoyer@surfsite.org"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"steffi@hoyer.xyz" = {
|
||||||
|
hashedPasswordFile = "/home/hartwin/secrets/steffi-mail";
|
||||||
|
aliases = [
|
||||||
|
"steffi@surfsite.org"
|
||||||
|
"stefaniehoyer@surfsite.org"
|
||||||
|
"stefanie.hoyer@surfsite.org"
|
||||||
|
"stefanie.hoyer@hoyer.xyz"
|
||||||
|
"stefanie@hoyer.xyz"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"hartwin@hoyer.xyz" = {
|
||||||
|
hashedPasswordFile = "/home/hartwin/secrets/hartwin-mail";
|
||||||
|
aliases = [
|
||||||
|
"hartwin.hoyer@hartwin-hoyer.de"
|
||||||
|
"mail@hartwin-hoyer.de"
|
||||||
|
"hartwin@hartwin-hoyer.de"
|
||||||
|
"youtube@hartwin-hoyer.de"
|
||||||
|
"hartwin@nc.hoyer.xyz"
|
||||||
|
"hartwin@hoyer.photos"
|
||||||
|
"webmaster@hartwin.hoyer.photos"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"hhoyer@herward-hoyer.de" = {
|
||||||
|
hashedPasswordFile = "/home/hhoyer/secrets/hhoyer-mail";
|
||||||
|
aliases = [
|
||||||
|
"herward@herward-hoyer.de"
|
||||||
|
"herward@vs189018.vserver.de"
|
||||||
|
"gua808@herward-hoyer.de"
|
||||||
|
"mail@herward-hoyer.de"
|
||||||
|
"herward.hoyer@herward-hoyer.de"
|
||||||
|
"hhoyer@surfsite.org"
|
||||||
|
"hhoyer@hoyer.xyz"
|
||||||
|
"herward@hoyer.xyz"
|
||||||
|
"herward@nc.hoyer.xyz"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"harald@hoyer.xyz" = {
|
||||||
|
hashedPasswordFile = "/home/harald/secrets/harald@hoyer.xyz";
|
||||||
|
aliases = [
|
||||||
|
"harald@mx.surfsite.org"
|
||||||
|
"root@mx.surfsite.org"
|
||||||
|
|
||||||
|
"abuse@mx.surfsite.org"
|
||||||
|
"abuse@surfsite.org"
|
||||||
|
"abuse@hartwin-hoyer.de"
|
||||||
|
"abuse@herward-hoyer.de"
|
||||||
|
"abuse@meike-knutz.de"
|
||||||
|
"abuse@gerlinde-hoyer.de"
|
||||||
|
"abuse@hoyer.xyz"
|
||||||
|
"abuse@harald.hoyer.xyz"
|
||||||
|
"abuse@varlink.org"
|
||||||
|
"abuse@myprivacy.tools"
|
||||||
|
"abuse@hoyer.social"
|
||||||
|
"abuse@hoyer.world"
|
||||||
|
"abuse@hoyer.photos"
|
||||||
|
|
||||||
|
"postmaster@mx.surfsite.org"
|
||||||
|
"postmaster@surfsite.org"
|
||||||
|
"postmaster@hartwin-hoyer.de"
|
||||||
|
"postmaster@herward-hoyer.de"
|
||||||
|
"postmaster@meike-knutz.de"
|
||||||
|
"postmaster@gerlinde-hoyer.de"
|
||||||
|
"postmaster@hoyer.xyz"
|
||||||
|
"postmaster@harald.hoyer.xyz"
|
||||||
|
"postmaster@varlink.org"
|
||||||
|
"postmaster@myprivacy.tools"
|
||||||
|
"postmaster@hoyer.social"
|
||||||
|
"postmaster@hoyer.world"
|
||||||
|
"postmaster@hoyer.photos"
|
||||||
|
|
||||||
|
"webmaster@hoyer.xyz"
|
||||||
|
"webmaster@surfsite.org"
|
||||||
|
"webmaster@harald.hoyer.xyz"
|
||||||
|
"webmaster@varlink.org"
|
||||||
|
"webmaster@myprivacy.tools"
|
||||||
|
"webmaster@hoyer.social"
|
||||||
|
"webmaster@hoyer.world"
|
||||||
|
"webmaster@hoyer.photos"
|
||||||
|
"webmaster@harald.hoyer.photos"
|
||||||
|
|
||||||
|
"admin@hoyer.xyz"
|
||||||
|
"admin@harald.hoyer.xyz"
|
||||||
|
"admin@nc.hoyer.xyz"
|
||||||
|
"admin@mx.surfsite.org"
|
||||||
|
"admin@hoyer.social"
|
||||||
|
"admin@hoyer.world"
|
||||||
|
"admin@hoyer.photos"
|
||||||
|
|
||||||
|
"harald@surfsite.org"
|
||||||
|
"harald@hoyer.xyz"
|
||||||
|
"harald@nc.hoyer.xyz"
|
||||||
|
"harald@varlink.org"
|
||||||
|
"harald@myprivacy.tools"
|
||||||
|
"harald@hoyer.world"
|
||||||
|
"harald@hoyer.social"
|
||||||
|
"harald@hoyer.photos"
|
||||||
|
|
||||||
|
"@harald.hoyer.xyz"
|
||||||
|
"@harald-hoyer.de"
|
||||||
|
|
||||||
|
"paypal-harald@hoyer.xyz"
|
||||||
|
"photo-harald@hoyer.xyz"
|
||||||
|
|
||||||
|
"fb@surfsite.org"
|
||||||
|
"freifunk@surfsite.org"
|
||||||
|
"fbc@surfsite.org"
|
||||||
|
"mine@surfsite.org"
|
||||||
|
"bitcoin@surfsite.org"
|
||||||
|
"bitcoin@hoyer.xyz"
|
||||||
|
"roulette@surfsite.org"
|
||||||
|
"github@surfsite.org"
|
||||||
|
"mua@surfsite.org"
|
||||||
|
"aliexpress@surfsite.org"
|
||||||
|
|
||||||
|
# Max
|
||||||
|
"max@hoyer.xyz"
|
||||||
|
"max.hoyer@hoyer.xyz"
|
||||||
|
"maximilian@hoyer.xyz"
|
||||||
|
"maximilian.hoyer@hoyer.xyz"
|
||||||
|
|
||||||
|
# Felix
|
||||||
|
"felix@hoyer.xyz"
|
||||||
|
"felix.hoyer@hoyer.xyz"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
certificateScheme = "acme";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.roundcube = {
|
||||||
|
enable = true;
|
||||||
|
# this is the url of the vhost, not necessarily the same as the fqdn of
|
||||||
|
# the mailserver
|
||||||
|
hostName = "webmail.hoyer.xyz";
|
||||||
|
extraConfig = ''
|
||||||
|
# starttls needed for authentication, so the fqdn required to match
|
||||||
|
# the certificate
|
||||||
|
$config['smtp_server'] = "tls://${config.mailserver.fqdn}";
|
||||||
|
$config['smtp_user'] = "%u";
|
||||||
|
$config['smtp_pass'] = "%p";
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
45
systems/x86_64-linux/mx/network.nix
Normal file
45
systems/x86_64-linux/mx/network.nix
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
{ pkgs, lib, ... }:
|
||||||
|
{
|
||||||
|
services.fail2ban.enable = true;
|
||||||
|
services.resolved.domains = [
|
||||||
|
"surfsite.org"
|
||||||
|
"hoyer.xyz"
|
||||||
|
];
|
||||||
|
services.resolved.extraConfig = "ReadEtcHosts=no";
|
||||||
|
services.nscd.enableNsncd = false;
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ 80 443 ];
|
||||||
|
networking.firewall.allowPing = true;
|
||||||
|
|
||||||
|
networking.hostName = "mx"; # Define your hostname.
|
||||||
|
networking.domain = "surfsite.org";
|
||||||
|
networking.dhcpcd.enable = false;
|
||||||
|
networking.firewall.logRefusedConnections = false;
|
||||||
|
networking.networkmanager.enable = false;
|
||||||
|
networking.useDHCP = false;
|
||||||
|
networking.useNetworkd = true;
|
||||||
|
networking.wireless.enable = false;
|
||||||
|
networking.defaultGateway.address = "95.216.66.129";
|
||||||
|
networking.defaultGateway.interface = "enp0s31f6";
|
||||||
|
#networking.nameservers = [ "1.1.1.1" "8.8.8.8" ];
|
||||||
|
networking.enableIPv6 = true;
|
||||||
|
|
||||||
|
networking.interfaces.enp0s31f6 = {
|
||||||
|
ipv6 = {
|
||||||
|
addresses = [{
|
||||||
|
address = "2a01:4f9:2b:2e3::2"; # Your IPv6 here
|
||||||
|
prefixLength = 64;
|
||||||
|
}];
|
||||||
|
# Default IPv6 route
|
||||||
|
routes = [{
|
||||||
|
address = "::";
|
||||||
|
prefixLength = 0;
|
||||||
|
via = "fe80::1";
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
ipv4.addresses = [{
|
||||||
|
address = "95.216.66.178";
|
||||||
|
prefixLength = 26;
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
}
|
29
systems/x86_64-linux/mx/nextcloud.nix
Normal file
29
systems/x86_64-linux/mx/nextcloud.nix
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
{ pkgs, lib, ... }:
|
||||||
|
{
|
||||||
|
systemd.services."nextcloud-setup".requires = [ "postgresql.service" ];
|
||||||
|
systemd.services."nextcloud-setup".after = [ "postgresql.service" ];
|
||||||
|
|
||||||
|
environment.etc."nextcloud-admin-pass".text = "test123";
|
||||||
|
services.nextcloud = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.nextcloud28;
|
||||||
|
hostName = "nc.hoyer.xyz";
|
||||||
|
https = true;
|
||||||
|
configureRedis = true;
|
||||||
|
extraOptions = {
|
||||||
|
mail_smtpmode = "sendmail";
|
||||||
|
mail_sendmailmode = "pipe";
|
||||||
|
};
|
||||||
|
phpOptions = {
|
||||||
|
upload_max_filesize = lib.mkForce "1G";
|
||||||
|
post_max_size = lib.mkForce "1G";
|
||||||
|
"opcache.interned_strings_buffer" = "16";
|
||||||
|
};
|
||||||
|
config.adminpassFile = "/etc/nextcloud-admin-pass";
|
||||||
|
config.defaultPhoneRegion = "DE";
|
||||||
|
config.dbtype = "pgsql";
|
||||||
|
config.dbname = "nextcloud";
|
||||||
|
config.dbhost = "/run/postgresql";
|
||||||
|
config.dbuser = "nextcloud";
|
||||||
|
};
|
||||||
|
}
|
166
systems/x86_64-linux/mx/nginx.nix
Normal file
166
systems/x86_64-linux/mx/nginx.nix
Normal file
|
@ -0,0 +1,166 @@
|
||||||
|
{ pkgs, lib, ... }:
|
||||||
|
{
|
||||||
|
users.users.nginx.extraGroups = [ "acme" ];
|
||||||
|
services.nginx = {
|
||||||
|
enable = true;
|
||||||
|
appendHttpConfig = ''
|
||||||
|
log_format vcombined '$host:$server_port '
|
||||||
|
'$remote_addr - $remote_user [$time_local] '
|
||||||
|
'"$request" $status $body_bytes_sent '
|
||||||
|
'"$http_referer" "$http_user_agent"';
|
||||||
|
access_log /var/log/nginx/access.log vcombined;
|
||||||
|
'';
|
||||||
|
recommendedGzipSettings = true;
|
||||||
|
recommendedOptimisation = true;
|
||||||
|
recommendedProxySettings = true;
|
||||||
|
recommendedTlsSettings = true;
|
||||||
|
virtualHosts = {
|
||||||
|
"00000" = {
|
||||||
|
useACMEHost = "hoyer.xyz";
|
||||||
|
serverName = "_";
|
||||||
|
globalRedirect = "hoyer.xyz";
|
||||||
|
addSSL = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
"hoyer.photos" = {
|
||||||
|
enableACME = false;
|
||||||
|
useACMEHost = "hoyer.photos";
|
||||||
|
forceSSL = true;
|
||||||
|
root = "/var/www/hoyer.xyz/html";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
"hoyer.world" = {
|
||||||
|
enableACME = false;
|
||||||
|
useACMEHost = "hoyer.world";
|
||||||
|
forceSSL = true;
|
||||||
|
root = "/var/www/hoyer.xyz/html";
|
||||||
|
};
|
||||||
|
|
||||||
|
"hoyer.social" = {
|
||||||
|
enableACME = false;
|
||||||
|
useACMEHost = "hoyer.social";
|
||||||
|
forceSSL = true;
|
||||||
|
root = "/var/www/hoyer.xyz/html";
|
||||||
|
};
|
||||||
|
|
||||||
|
"hoyer.xyz" = {
|
||||||
|
# serverName = "hoyer.xyz";
|
||||||
|
serverAliases = [
|
||||||
|
"www.hoyer.xyz"
|
||||||
|
];
|
||||||
|
useACMEHost = "hoyer.xyz";
|
||||||
|
enableACME = false;
|
||||||
|
forceSSL = true;
|
||||||
|
root = "/var/www/hoyer.xyz/html";
|
||||||
|
locations."/stats" = {
|
||||||
|
basicAuthFile = "/var/www/hoyer.xyz/stats.htaccess";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"surfsite.org" = {
|
||||||
|
useACMEHost = "surfsite.org";
|
||||||
|
enableACME = false;
|
||||||
|
forceSSL = true;
|
||||||
|
root = "/var/www/surfsite.org";
|
||||||
|
};
|
||||||
|
|
||||||
|
"kicker.surfsite.org" = {
|
||||||
|
useACMEHost = "surfsite.org";
|
||||||
|
enableACME = false;
|
||||||
|
forceSSL = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://localhost:8087/";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"git.hoyer.xyz" = {
|
||||||
|
useACMEHost = "hoyer.xyz";
|
||||||
|
enableACME = false;
|
||||||
|
forceSSL = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://localhost:3001/";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"webmail.hoyer.xyz" = {
|
||||||
|
useACMEHost = "hoyer.xyz";
|
||||||
|
enableACME = false;
|
||||||
|
forceSSL = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
"harald.hoyer.photos" = {
|
||||||
|
enableACME = true;
|
||||||
|
forceSSL = true;
|
||||||
|
root = "/var/www/photo.harald-hoyer.de/html";
|
||||||
|
};
|
||||||
|
"photo.harald-hoyer.de" = {
|
||||||
|
useACMEHost = "harald-hoyer.de";
|
||||||
|
forceSSL = true;
|
||||||
|
root = "/var/www/photo.harald-hoyer.de/html";
|
||||||
|
};
|
||||||
|
"photo-harald.hoyer.xyz" = {
|
||||||
|
serverAliases = [ "photo.harald.hoyer.xyz" ];
|
||||||
|
useACMEHost = "hoyer.xyz";
|
||||||
|
forceSSL = true;
|
||||||
|
root = "/var/www/photo.harald-hoyer.de/html";
|
||||||
|
};
|
||||||
|
|
||||||
|
"harald-hoyer.de" = {
|
||||||
|
serverAliases = [
|
||||||
|
"www.harald-hoyer.de"
|
||||||
|
];
|
||||||
|
useACMEHost = "harald-hoyer.de";
|
||||||
|
globalRedirect = "harald.hoyer.xyz";
|
||||||
|
forceSSL = true;
|
||||||
|
};
|
||||||
|
"harald.hoyer.xyz" = {
|
||||||
|
serverAliases = [
|
||||||
|
"www.harald.hoyer.xyz"
|
||||||
|
];
|
||||||
|
useACMEHost = "hoyer.xyz";
|
||||||
|
root = "/var/www/harald.hoyer.xyz/html/";
|
||||||
|
extraConfig = ''
|
||||||
|
rewrite ^/feed/rss$ /rss.xml permanent;
|
||||||
|
rewrite ^/feed/rss/$ /rss.xml permanent;
|
||||||
|
rewrite ^/feed/$ /rss.xml permanent;
|
||||||
|
rewrite ^/feed/rss/index.html$ /rss.xml permanent;
|
||||||
|
rewrite ^/fedora/fedora/RSS2$ /tags/fedora/rss.xml permanent;
|
||||||
|
rewrite ^/linux/linux/RSS2$ /tags/linux/rss.xml permanent;
|
||||||
|
rewrite ^/linux/feed$ /tags/linux/rss.xml permanent;
|
||||||
|
rewrite ^/wp-rss2.php$ /rss.xml permanent;
|
||||||
|
rewrite ^/aggregator/rss.xml$ /rss.xml permanent;
|
||||||
|
rewrite ^/personal/blog/aggregator/RSS$ /rss.xml permanent;
|
||||||
|
rewrite ^/personal/blog/aggregator/RSS2$ /rss.xml permanent;
|
||||||
|
rewrite ^/aggregator/RSS$ /rss.xml permanent;
|
||||||
|
rewrite ^/aggregator/RSS2$ /rss.xml permanent;
|
||||||
|
rewrite ^/wp-commentsrss2.php$ /rss.xml permanent;
|
||||||
|
'';
|
||||||
|
forceSSL = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
"hartwin-hoyer.de" = {
|
||||||
|
serverAliases = [
|
||||||
|
"www.hartwin-hoyer.de"
|
||||||
|
];
|
||||||
|
useACMEHost = "hartwin-hoyer.de";
|
||||||
|
globalRedirect = "hartwin.hoyer.xyz";
|
||||||
|
forceSSL = true;
|
||||||
|
};
|
||||||
|
"hartwin.hoyer.xyz" = {
|
||||||
|
serverAliases = [
|
||||||
|
"testhartwin.hoyer.xyz"
|
||||||
|
"www.hartwin.hoyer.xyz"
|
||||||
|
];
|
||||||
|
useACMEHost = "hoyer.xyz";
|
||||||
|
root = "/var/www/hartwin.hoyer.xyz/html/";
|
||||||
|
forceSSL = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
"nc.hoyer.xyz" = {
|
||||||
|
useACMEHost = "hoyer.xyz";
|
||||||
|
forceSSL = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
40
systems/x86_64-linux/mx/rspamd.nix
Normal file
40
systems/x86_64-linux/mx/rspamd.nix
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
{ pkgs, lib, ... }:
|
||||||
|
{
|
||||||
|
services.rspamd.workers.controller.bindSockets = [{
|
||||||
|
socket = "/run/rspamd/worker-controller.sock";
|
||||||
|
mode = "0660";
|
||||||
|
}];
|
||||||
|
services.rspamd.locals = {
|
||||||
|
"maps.d/spf_whitelist.inc.local" = {
|
||||||
|
text = ''
|
||||||
|
epicgames.com
|
||||||
|
dmail.ai
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
"maps.d/spf_dkim_whitelist.inc.local" = {
|
||||||
|
text = ''
|
||||||
|
epicgames.com
|
||||||
|
dmail.ai
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
"maps.d/dmarc_whitelist.inc.local" = {
|
||||||
|
text = ''
|
||||||
|
epicgames.com
|
||||||
|
dmail.ai
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
"greylist-whitelist-domains.inc" = {
|
||||||
|
text = ''
|
||||||
|
dmail.ai
|
||||||
|
epicgames.com
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services.rspamd.extraConfig = ''
|
||||||
|
actions {
|
||||||
|
reject = null;
|
||||||
|
greylist = 4; # Apply greylisting when reaching this score
|
||||||
|
add_header = 4; # Add header when reaching this score
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
}
|
77
systems/x86_64-linux/mx/server-raid.nix
Normal file
77
systems/x86_64-linux/mx/server-raid.nix
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
{ disks ? [ "/dev/sda" "/dev/sdb" ], ... }: {
|
||||||
|
disk = {
|
||||||
|
one = {
|
||||||
|
type = "disk";
|
||||||
|
device = builtins.elemAt disks 0;
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
boot = {
|
||||||
|
size = "1M";
|
||||||
|
type = "EF02";
|
||||||
|
};
|
||||||
|
ESP = {
|
||||||
|
size = "256M";
|
||||||
|
type = "EF00";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "vfat";
|
||||||
|
mountpoint = "/boot";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
mdadm = {
|
||||||
|
size = "100%";
|
||||||
|
content = {
|
||||||
|
type = "mdraid";
|
||||||
|
name = "raid1";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
two = {
|
||||||
|
type = "disk";
|
||||||
|
device = builtins.elemAt disks 1;
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
boot = {
|
||||||
|
size = "1M";
|
||||||
|
type = "EF02";
|
||||||
|
};
|
||||||
|
ESP = {
|
||||||
|
size = "256M";
|
||||||
|
type = "EF00";
|
||||||
|
};
|
||||||
|
mdadm = {
|
||||||
|
size = "100%";
|
||||||
|
content = {
|
||||||
|
type = "mdraid";
|
||||||
|
name = "raid1";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
mdadm = {
|
||||||
|
raid1 = {
|
||||||
|
type = "mdadm";
|
||||||
|
level = 1;
|
||||||
|
content = {
|
||||||
|
type = "luks";
|
||||||
|
name = "crypted";
|
||||||
|
extraOpenArgs = [ "--allow-discards" ];
|
||||||
|
settings = {
|
||||||
|
allowDiscards = true;
|
||||||
|
};
|
||||||
|
initrdUnlock = false;
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "btrfs";
|
||||||
|
mountpoint = "/";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
23
systems/x86_64-linux/mx/users.nix
Normal file
23
systems/x86_64-linux/mx/users.nix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{ pkgs, lib, ... }:
|
||||||
|
{
|
||||||
|
# Herward
|
||||||
|
users.users.hhoyer = {
|
||||||
|
shell = pkgs.bash;
|
||||||
|
isNormalUser = true;
|
||||||
|
description = "hhoyer";
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCIlCnBiRkm8i/UQaTDv2UCO+mEzPC5OQ0e+DlzS1GVmJEjH5BqPosEivvDQheQP7WWNZOCWoHqAg8vvH8QpSA6AOqruvsWrbY1TmoMc4TlulgyEK5/z9aw/t3WUkQjj+fYeQbQXSNeT7pplN3hB49MCXAQNJ+LxnnntrZhp7tHRAsJFlGgK6NGFapCizeYt9DOqeh2KGTd+x9TXTa96ccWQTRovE5xWP/8X7LoejCl7sfe2dymeByU465Do+mvDs2DbyKI1XHlLpPZihsyxyU1/K0B9VF92U486vh8Ep3fnTgpu7D9n0KdN0wGMfSmH75rtrYZPiGvu6Qy0YzV6MUN newkex"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Hartwin
|
||||||
|
users.users.hartwin = {
|
||||||
|
shell = pkgs.bash;
|
||||||
|
isNormalUser = true;
|
||||||
|
description = "hartwin";
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDjeTezn11UITzlqfOS9U3/sOdEJ4au5MSo/vNUcMHVIfKWLXfOWH6skB2kVrRcSlevNydgWtmQfA/xD7n7Syx4esWLvaUUwRO75QNz8TJq9dgItxi6R+bxWlUqN79aAmNWQH6yftBs+bLDtTg7XABZYe2z53UcfLtG0iQOHG6mftcOL2YKyzdtd/1F7jgMmy2HJ1LzsFNb57hBQvA3cg+hDwXKfptrDh/8Xysm110vMj74T2ANbhmE3wT25PmUMN7B/sx0m7Rm7jg3COyLq6/MZzoFGyl+Kd9vxTPzp76aSq7bI70qGUzcq2aX6UnlkcrrAz2bzZBi5RMOHYO3QPmP hlh@aiur.localdomain"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
76
systems/x86_64-linux/sgx/backup.nix
Normal file
76
systems/x86_64-linux/sgx/backup.nix
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
{ pkgs, lib, config, ... }:
|
||||||
|
let
|
||||||
|
backup_new_path = "/mnt/raid/backup/hoyer/new/";
|
||||||
|
restic_repo = "/mnt/backup/restic-repo";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
services.restic.backups.hoyer_new = {
|
||||||
|
repository = restic_repo;
|
||||||
|
passwordFile = config.sops.secrets.backup-pw.path;
|
||||||
|
timerConfig = {
|
||||||
|
OnCalendar = "daily";
|
||||||
|
FixedRandomDelay = true;
|
||||||
|
RandomizedDelaySec = "4h";
|
||||||
|
Persistent = true;
|
||||||
|
};
|
||||||
|
paths = [ backup_new_path ];
|
||||||
|
pruneOpts = [
|
||||||
|
"-g host,paths"
|
||||||
|
"--keep-daily 7"
|
||||||
|
"--keep-weekly 4"
|
||||||
|
"--keep-monthly 3"
|
||||||
|
"--keep-yearly 1"
|
||||||
|
];
|
||||||
|
backupPrepareCommand = ''
|
||||||
|
HOME=/root ${pkgs.rsync}/bin/rsync -e "${pkgs.openssh}/bin/ssh" --exclude-from /root/excludelist --no-specials --no-devices --numeric-ids --delete-after --partial -axz backup@mx.surfsite.org:/{etc,var,home,root} ${backup_new_path}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
services.restic.backups.self = {
|
||||||
|
repository = restic_repo;
|
||||||
|
#repository = "s3:nas2a6e8f.myqnapcloud.com:8081/backup";
|
||||||
|
passwordFile = config.sops.secrets.backup-pw.path;
|
||||||
|
timerConfig = {
|
||||||
|
OnCalendar = "daily";
|
||||||
|
FixedRandomDelay = true;
|
||||||
|
RandomizedDelaySec = "4h";
|
||||||
|
Persistent = true;
|
||||||
|
};
|
||||||
|
paths = [
|
||||||
|
"/etc"
|
||||||
|
"/var"
|
||||||
|
"/home"
|
||||||
|
"/root"
|
||||||
|
"/persist"
|
||||||
|
config.services.samba.shares.Qmultimedia.path
|
||||||
|
];
|
||||||
|
extraBackupArgs =
|
||||||
|
let
|
||||||
|
ignorePatterns = [
|
||||||
|
"/mnt/raid/backup"
|
||||||
|
"/mnt/backup"
|
||||||
|
"/mnt/snap"
|
||||||
|
"/var/cache"
|
||||||
|
"/home/*/.local/share/Trash"
|
||||||
|
"/home/*/.cache"
|
||||||
|
"/home/*/Downloads"
|
||||||
|
"/home/*/.npm"
|
||||||
|
"/home/*/.local/share/containers"
|
||||||
|
".cache"
|
||||||
|
".tmp"
|
||||||
|
".log"
|
||||||
|
".Trash"
|
||||||
|
];
|
||||||
|
ignoreFile = builtins.toFile "ignore"
|
||||||
|
(lib.foldl (a: b: a + "\n" + b) "" ignorePatterns);
|
||||||
|
in
|
||||||
|
[ "--exclude-file=${ignoreFile}" ];
|
||||||
|
pruneOpts = [
|
||||||
|
"-g host,paths"
|
||||||
|
"--keep-daily 7"
|
||||||
|
"--keep-weekly 4"
|
||||||
|
"--keep-monthly 3"
|
||||||
|
"--keep-yearly 1"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,10 +1,11 @@
|
||||||
{ pkgs, lib, config, ... }:
|
{ pkgs, lib, config, ... }:
|
||||||
let
|
|
||||||
backup_new_path = "/mnt/raid/backup/hoyer/new/";
|
|
||||||
restic_repo = "/mnt/backup/restic-repo";
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
imports = [ ./hardware-configuration.nix ];
|
imports = [
|
||||||
|
./hardware-configuration.nix
|
||||||
|
./fileserver.nix
|
||||||
|
./backup.nix
|
||||||
|
./network.nix
|
||||||
|
];
|
||||||
|
|
||||||
sops.secrets.pccs.sopsFile = ../../../.secrets/sgx/pccs.yaml;
|
sops.secrets.pccs.sopsFile = ../../../.secrets/sgx/pccs.yaml;
|
||||||
sops.secrets.backup-pw.sopsFile = ../../../.secrets/sgx/backup-s3.yaml;
|
sops.secrets.backup-pw.sopsFile = ../../../.secrets/sgx/backup-s3.yaml;
|
||||||
|
@ -22,8 +23,12 @@ in
|
||||||
user.extraGroups = [ "docker" "sgx" ];
|
user.extraGroups = [ "docker" "sgx" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
virtualisation.docker.enable = true;
|
virtualisation = {
|
||||||
virtualisation.podman.dockerCompat = false;
|
docker.enable = true;
|
||||||
|
libvirtd.enable = true;
|
||||||
|
podman.dockerCompat = false;
|
||||||
|
};
|
||||||
|
systemd.services.libvirt-guests.after = [ "network-online.target" ];
|
||||||
|
|
||||||
system.autoUpgrade = {
|
system.autoUpgrade = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -31,15 +36,8 @@ in
|
||||||
allowReboot = true;
|
allowReboot = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
security.tpm2.enable = false;
|
|
||||||
security.tpm2.abrmd.enable = false;
|
|
||||||
|
|
||||||
services.pcscd.enable = true;
|
services.pcscd.enable = true;
|
||||||
|
|
||||||
powerManagement.cpuFreqGovernor = "ondemand";
|
|
||||||
|
|
||||||
system.stateVersion = "23.11";
|
|
||||||
|
|
||||||
environment.etc."sgx_default_qcnl.conf".text = ''
|
environment.etc."sgx_default_qcnl.conf".text = ''
|
||||||
{
|
{
|
||||||
"pccs_url": "https://127.0.0.1:8081/sgx/certification/v4/",
|
"pccs_url": "https://127.0.0.1:8081/sgx/certification/v4/",
|
||||||
|
@ -53,190 +51,5 @@ in
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
services.netatalk = {
|
system.stateVersion = "23.11";
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
Homes = {
|
|
||||||
"basedir regex" = "/home";
|
|
||||||
path = "Public";
|
|
||||||
};
|
|
||||||
time-machine = {
|
|
||||||
path = "/mnt/backup/tm_share";
|
|
||||||
"valid users" = "harald";
|
|
||||||
"time machine" = true;
|
|
||||||
};
|
|
||||||
Qmultimedia = {
|
|
||||||
path = "/mnt/raid/Qmultimedia";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.avahi = {
|
|
||||||
enable = true;
|
|
||||||
nssmdns = true;
|
|
||||||
publish = {
|
|
||||||
enable = true;
|
|
||||||
userServices = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.samba = {
|
|
||||||
enable = true;
|
|
||||||
securityType = "user";
|
|
||||||
extraConfig = ''
|
|
||||||
read raw = Yes
|
|
||||||
write raw = Yes
|
|
||||||
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072
|
|
||||||
min receivefile size = 16384
|
|
||||||
use sendfile = true
|
|
||||||
aio read size = 16384
|
|
||||||
aio write size = 16384
|
|
||||||
workgroup = WORKGROUP
|
|
||||||
server string = sgx
|
|
||||||
netbios name = sgx
|
|
||||||
security = user
|
|
||||||
#max protocol = smb2
|
|
||||||
hosts allow = 192.168.178. 127.0.0.1 localhost 2003::/16 ::1
|
|
||||||
hosts deny = ALL
|
|
||||||
guest account = nobody
|
|
||||||
map to guest = bad user
|
|
||||||
'';
|
|
||||||
shares = {
|
|
||||||
# public = {
|
|
||||||
# path = "/mnt/Shares/Public";
|
|
||||||
# browseable = "yes";
|
|
||||||
# "read only" = "no";
|
|
||||||
# "guest ok" = "yes";
|
|
||||||
# "create mask" = "0644";
|
|
||||||
# "directory mask" = "0755";
|
|
||||||
# "force user" = "username";
|
|
||||||
# "force group" = "groupname";
|
|
||||||
# };
|
|
||||||
Qmultimedia = {
|
|
||||||
path = "/mnt/raid/Qmultimedia";
|
|
||||||
browseable = "yes";
|
|
||||||
"read only" = "no";
|
|
||||||
"guest ok" = "no";
|
|
||||||
"create mask" = "0644";
|
|
||||||
"directory mask" = "0755";
|
|
||||||
"force user" = "harald";
|
|
||||||
"force group" = "users";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.restic.backups.hoyer_new = {
|
|
||||||
repository = restic_repo;
|
|
||||||
passwordFile = config.sops.secrets.backup-pw.path;
|
|
||||||
timerConfig = {
|
|
||||||
OnCalendar = "daily";
|
|
||||||
FixedRandomDelay = true;
|
|
||||||
RandomizedDelaySec = "4h";
|
|
||||||
Persistent = true;
|
|
||||||
};
|
|
||||||
paths = [ backup_new_path ];
|
|
||||||
pruneOpts = [
|
|
||||||
"-g host,paths"
|
|
||||||
"--keep-daily 7"
|
|
||||||
"--keep-weekly 4"
|
|
||||||
"--keep-monthly 3"
|
|
||||||
"--keep-yearly 1"
|
|
||||||
];
|
|
||||||
backupPrepareCommand = ''
|
|
||||||
HOME=/root ${pkgs.rsync}/bin/rsync -e "${pkgs.openssh}/bin/ssh" --exclude-from /root/excludelist --no-specials --no-devices --numeric-ids --delete-after --partial -axz backup@mx.surfsite.org:/{etc,var,home,root} ${backup_new_path}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
services.restic.backups.self = {
|
|
||||||
repository = restic_repo;
|
|
||||||
#repository = "s3:nas2a6e8f.myqnapcloud.com:8081/backup";
|
|
||||||
passwordFile = config.sops.secrets.backup-pw.path;
|
|
||||||
timerConfig = {
|
|
||||||
OnCalendar = "daily";
|
|
||||||
FixedRandomDelay = true;
|
|
||||||
RandomizedDelaySec = "4h";
|
|
||||||
Persistent = true;
|
|
||||||
};
|
|
||||||
paths = [
|
|
||||||
"/etc"
|
|
||||||
"/var"
|
|
||||||
"/home"
|
|
||||||
"/root"
|
|
||||||
"/persist"
|
|
||||||
config.services.samba.shares.Qmultimedia.path
|
|
||||||
];
|
|
||||||
extraBackupArgs =
|
|
||||||
let
|
|
||||||
ignorePatterns = [
|
|
||||||
"/mnt/raid/backup"
|
|
||||||
"/mnt/backup"
|
|
||||||
"/mnt/snap"
|
|
||||||
"/var/cache"
|
|
||||||
"/home/*/.local/share/Trash"
|
|
||||||
"/home/*/.cache"
|
|
||||||
"/home/*/Downloads"
|
|
||||||
"/home/*/.npm"
|
|
||||||
"/home/*/.local/share/containers"
|
|
||||||
".cache"
|
|
||||||
".tmp"
|
|
||||||
".log"
|
|
||||||
".Trash"
|
|
||||||
];
|
|
||||||
ignoreFile = builtins.toFile "ignore"
|
|
||||||
(lib.foldl (a: b: a + "\n" + b) "" ignorePatterns);
|
|
||||||
in
|
|
||||||
[ "--exclude-file=${ignoreFile}" ];
|
|
||||||
pruneOpts = [
|
|
||||||
"-g host,paths"
|
|
||||||
"--keep-daily 7"
|
|
||||||
"--keep-weekly 4"
|
|
||||||
"--keep-monthly 3"
|
|
||||||
"--keep-yearly 1"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.libvirt-guests.after = [ "network-online.target" ];
|
|
||||||
virtualisation.libvirtd.enable = true;
|
|
||||||
|
|
||||||
networking.hostName = "sgx"; # Define your hostname.
|
|
||||||
networking.useDHCP = false;
|
|
||||||
|
|
||||||
#networking.domain = "fritz.box";
|
|
||||||
networking.wireless.enable = false; # Enables wireless support via wpa_supplicant.
|
|
||||||
networking.networkmanager.enable = false; # use networkd
|
|
||||||
networking.dhcpcd.enable = false; # use networkd
|
|
||||||
# services.nscd.enableNsncd = false;
|
|
||||||
|
|
||||||
# systemd-networkd
|
|
||||||
systemd.network.enable = true;
|
|
||||||
#systemd.network.wait-online.anyInterface = true;
|
|
||||||
#systemd.services."systemd-networkd".environment.SYSTEMD_LOG_LEVEL = "debug";
|
|
||||||
|
|
||||||
systemd.network.networks."10-br0" = {
|
|
||||||
matchConfig.Name = "br0";
|
|
||||||
DHCP = "yes";
|
|
||||||
linkConfig.RequiredForOnline = "routable";
|
|
||||||
linkConfig.RequiredFamilyForOnline = "both";
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.network.netdevs."br0" = {
|
|
||||||
netdevConfig = {
|
|
||||||
Name = "br0";
|
|
||||||
Kind = "bridge";
|
|
||||||
MACAddress = "00:a1:2f:68:07:ea";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.network.networks."11-en" = {
|
|
||||||
linkConfig.RequiredForOnline = "enslaved";
|
|
||||||
matchConfig.Name = "enp3s0";
|
|
||||||
networkConfig = {
|
|
||||||
Bridge = "br0";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [ 548 ];
|
|
||||||
networking.firewall.allowPing = true;
|
|
||||||
services.samba.openFirewall = true;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
75
systems/x86_64-linux/sgx/fileserver.nix
Normal file
75
systems/x86_64-linux/sgx/fileserver.nix
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
{ pkgs, lib, config, ... }:
|
||||||
|
{
|
||||||
|
services.netatalk = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
Homes = {
|
||||||
|
"basedir regex" = "/home";
|
||||||
|
path = "Public";
|
||||||
|
};
|
||||||
|
time-machine = {
|
||||||
|
path = "/mnt/backup/tm_share";
|
||||||
|
"valid users" = "harald";
|
||||||
|
"time machine" = true;
|
||||||
|
};
|
||||||
|
Qmultimedia = {
|
||||||
|
path = "/mnt/raid/Qmultimedia";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.avahi = {
|
||||||
|
enable = true;
|
||||||
|
nssmdns = true;
|
||||||
|
publish = {
|
||||||
|
enable = true;
|
||||||
|
userServices = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.samba = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
securityType = "user";
|
||||||
|
extraConfig = ''
|
||||||
|
read raw = Yes
|
||||||
|
write raw = Yes
|
||||||
|
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072
|
||||||
|
min receivefile size = 16384
|
||||||
|
use sendfile = true
|
||||||
|
aio read size = 16384
|
||||||
|
aio write size = 16384
|
||||||
|
workgroup = WORKGROUP
|
||||||
|
server string = sgx
|
||||||
|
netbios name = sgx
|
||||||
|
security = user
|
||||||
|
#max protocol = smb2
|
||||||
|
hosts allow = 192.168.178. 127.0.0.1 localhost 2003::/16 ::1
|
||||||
|
hosts deny = ALL
|
||||||
|
guest account = nobody
|
||||||
|
map to guest = bad user
|
||||||
|
'';
|
||||||
|
shares = {
|
||||||
|
# public = {
|
||||||
|
# path = "/mnt/Shares/Public";
|
||||||
|
# browseable = "yes";
|
||||||
|
# "read only" = "no";
|
||||||
|
# "guest ok" = "yes";
|
||||||
|
# "create mask" = "0644";
|
||||||
|
# "directory mask" = "0755";
|
||||||
|
# "force user" = "username";
|
||||||
|
# "force group" = "groupname";
|
||||||
|
# };
|
||||||
|
Qmultimedia = {
|
||||||
|
path = "/mnt/raid/Qmultimedia";
|
||||||
|
browseable = "yes";
|
||||||
|
"read only" = "no";
|
||||||
|
"guest ok" = "no";
|
||||||
|
"create mask" = "0644";
|
||||||
|
"directory mask" = "0755";
|
||||||
|
"force user" = "harald";
|
||||||
|
"force group" = "users";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -57,4 +57,8 @@
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
|
||||||
|
security.tpm2.enable = false;
|
||||||
|
security.tpm2.abrmd.enable = false;
|
||||||
|
powerManagement.cpuFreqGovernor = "ondemand";
|
||||||
}
|
}
|
||||||
|
|
42
systems/x86_64-linux/sgx/network.nix
Normal file
42
systems/x86_64-linux/sgx/network.nix
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
{ pkgs, lib, config, ... }:
|
||||||
|
{
|
||||||
|
networking.hostName = "sgx"; # Define your hostname.
|
||||||
|
networking.useDHCP = false;
|
||||||
|
|
||||||
|
#networking.domain = "fritz.box";
|
||||||
|
networking.wireless.enable = false; # Enables wireless support via wpa_supplicant.
|
||||||
|
networking.networkmanager.enable = false; # use networkd
|
||||||
|
networking.dhcpcd.enable = false; # use networkd
|
||||||
|
# services.nscd.enableNsncd = false;
|
||||||
|
|
||||||
|
# systemd-networkd
|
||||||
|
systemd.network.enable = true;
|
||||||
|
#systemd.network.wait-online.anyInterface = true;
|
||||||
|
#systemd.services."systemd-networkd".environment.SYSTEMD_LOG_LEVEL = "debug";
|
||||||
|
|
||||||
|
systemd.network.networks."10-br0" = {
|
||||||
|
matchConfig.Name = "br0";
|
||||||
|
DHCP = "yes";
|
||||||
|
linkConfig.RequiredForOnline = "routable";
|
||||||
|
linkConfig.RequiredFamilyForOnline = "both";
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.network.netdevs."br0" = {
|
||||||
|
netdevConfig = {
|
||||||
|
Name = "br0";
|
||||||
|
Kind = "bridge";
|
||||||
|
MACAddress = "00:a1:2f:68:07:ea";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.network.networks."11-en" = {
|
||||||
|
linkConfig.RequiredForOnline = "enslaved";
|
||||||
|
matchConfig.Name = "enp3s0";
|
||||||
|
networkConfig = {
|
||||||
|
Bridge = "br0";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ 548 ];
|
||||||
|
networking.firewall.allowPing = true;
|
||||||
|
}
|
Loading…
Reference in a new issue