@@ -22,7 +22,7 @@ in
|
|||||||
home = {
|
home = {
|
||||||
homeDirectory = "/home/spark";
|
homeDirectory = "/home/spark";
|
||||||
username = "spark";
|
username = "spark";
|
||||||
stateVersion = "22.11";
|
stateVersion = "23.05";
|
||||||
};
|
};
|
||||||
}] ++ commonModules;
|
}] ++ commonModules;
|
||||||
pkgs = self.legacyPackages.aarch64-linux;
|
pkgs = self.legacyPackages.aarch64-linux;
|
||||||
@@ -33,7 +33,18 @@ in
|
|||||||
home = {
|
home = {
|
||||||
homeDirectory = "/home/bat";
|
homeDirectory = "/home/bat";
|
||||||
username = "bat";
|
username = "bat";
|
||||||
stateVersion = "22.11";
|
stateVersion = "23.05";
|
||||||
|
};
|
||||||
|
}] ++ commonModules;
|
||||||
|
pkgs = self.legacyPackages.x86_64-linux;
|
||||||
|
};
|
||||||
|
|
||||||
|
spin = inputs.home-manager.lib.homeManagerConfiguration {
|
||||||
|
modules = [{
|
||||||
|
home = {
|
||||||
|
homeDirectory = "/home/spin";
|
||||||
|
username = "spin";
|
||||||
|
stateVersion = "23.05";
|
||||||
};
|
};
|
||||||
}] ++ commonModules;
|
}] ++ commonModules;
|
||||||
pkgs = self.legacyPackages.x86_64-linux;
|
pkgs = self.legacyPackages.x86_64-linux;
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
+ satori is my home laptop
|
+ satori is my home laptop
|
||||||
+ marisa is my Raspberry Pi 4 (B)
|
+ marisa is my Raspberry Pi 4 (B)
|
||||||
+ remilia is my cloud VM
|
+ remilia is my cloud VM
|
||||||
|
+ hina is another cloud VM I use for ZNC
|
||||||
|
@@ -45,5 +45,17 @@ in
|
|||||||
++ commonModules
|
++ commonModules
|
||||||
++ serverModules;
|
++ serverModules;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#Oracle Cloud VM
|
||||||
|
hina = nixpkgs.lib.nixosSystem rec {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
modules = [
|
||||||
|
./hina
|
||||||
|
./modules/x86builder.nix
|
||||||
|
{ nixpkgs.pkgs = self.legacyPackages.${system}; }
|
||||||
|
]
|
||||||
|
++ commonModules
|
||||||
|
++ serverModules;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
14
hosts/hina/boot.nix
Normal file
14
hosts/hina/boot.nix
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{ config, ... }:
|
||||||
|
{
|
||||||
|
boot = {
|
||||||
|
kernel.sysctl."net.ipv4.ip_forward" = 1;
|
||||||
|
initrd.kernelModules = [ "bochs" ];
|
||||||
|
initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" ];
|
||||||
|
kernelModules = [ "kvm-amd" ];
|
||||||
|
kernelParams = [ "console=ttyS0" "console=tty1" "nvme.shutdown_timeout=10" "libiscsi.debug_libiscsi_eh=1" ];
|
||||||
|
loader = {
|
||||||
|
systemd-boot.enable = true;
|
||||||
|
efi.canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
22
hosts/hina/default.nix
Normal file
22
hosts/hina/default.nix
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{ config, pkgs, lib', ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./networking.nix
|
||||||
|
./hardware.nix
|
||||||
|
./boot.nix
|
||||||
|
./services.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
time.timeZone = "Asia/Kolkata";
|
||||||
|
|
||||||
|
users.users.spin = {
|
||||||
|
isNormalUser = true;
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
home = "/home/spin";
|
||||||
|
extraGroups = [ "wheel" ];
|
||||||
|
openssh.authorizedKeys.keys = lib'.network.commonSSHKeys;
|
||||||
|
};
|
||||||
|
programs.zsh.enable = true;
|
||||||
|
|
||||||
|
system.stateVersion = "21.11";
|
||||||
|
}
|
22
hosts/hina/hardware.nix
Normal file
22
hosts/hina/hardware.nix
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[
|
||||||
|
(modulesPath + "/profiles/qemu-guest.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{
|
||||||
|
device = "/dev/disk/by-uuid/d91adce2-9059-4a8a-86e7-dee6ecc85b2b";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [
|
||||||
|
{
|
||||||
|
device = "/swapfile";
|
||||||
|
size = 7168;
|
||||||
|
priority = 0;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
35
hosts/hina/networking.nix
Normal file
35
hosts/hina/networking.nix
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{ lib, config, lib', pkgs, ... }:
|
||||||
|
{
|
||||||
|
networking = {
|
||||||
|
useDHCP = false;
|
||||||
|
hostName = "hina";
|
||||||
|
firewall =
|
||||||
|
{
|
||||||
|
interfaces = {
|
||||||
|
ens3 = {
|
||||||
|
allowedTCPPorts = [ 9898 80 443 ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
interfaces = {
|
||||||
|
ens3 = {
|
||||||
|
useDHCP = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
wireguard.interfaces.wg0 = with lib'.network.addresses.wireguard.ips; {
|
||||||
|
ips = [ hina ];
|
||||||
|
listenPort = 17840;
|
||||||
|
privateKeyFile = "/var/secrets/wg.key";
|
||||||
|
peers = [
|
||||||
|
{
|
||||||
|
#Oracle VM1
|
||||||
|
publicKey = "z0Y2VNEWcyVQVSqRHiwmiJ5/0MgSPM+HZfEcwIccSxM=";
|
||||||
|
allowedIPs = [ remilia ];
|
||||||
|
endpoint = "${lib'.network.addresses.domain.natto}:17840";
|
||||||
|
persistentKeepalive = 25;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
42
hosts/hina/services.nix
Normal file
42
hosts/hina/services.nix
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
{ config, pkgs, lib, lib', ... }:
|
||||||
|
let
|
||||||
|
domain = lib'.network.addresses.domain.natto;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
services = {
|
||||||
|
cron.enable = true;
|
||||||
|
|
||||||
|
openssh = {
|
||||||
|
enable = true;
|
||||||
|
permitRootLogin = "yes";
|
||||||
|
ports = [ 22 ];
|
||||||
|
};
|
||||||
|
|
||||||
|
znc = {
|
||||||
|
enable = true;
|
||||||
|
mutable = true;
|
||||||
|
useLegacyConfig = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
nginx = {
|
||||||
|
enable = true;
|
||||||
|
virtualHosts = with lib'.network.addresses.wireguard.ips; {
|
||||||
|
"znc.${domain}" = {
|
||||||
|
enableACME = true;
|
||||||
|
forceSSL = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "https://${hina}:9898";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
security.acme = {
|
||||||
|
acceptTerms = true;
|
||||||
|
certs = lib.mapAttrs (n: _: { email = "natto@${domain}"; })
|
||||||
|
(lib.filterAttrs (_: v: v.enableACME) config.services.nginx.virtualHosts);
|
||||||
|
};
|
||||||
|
security.pki.certificateFiles = [ ../../cert.pem ];
|
||||||
|
}
|
||||||
|
|
@@ -68,6 +68,10 @@
|
|||||||
publicKey = "SqskEH7hz7Gv9ZS+FYLRFgKZyJCFbBFCyuvzBYnbfVU=";
|
publicKey = "SqskEH7hz7Gv9ZS+FYLRFgKZyJCFbBFCyuvzBYnbfVU=";
|
||||||
allowedIPs = [ ips.satori ];
|
allowedIPs = [ ips.satori ];
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
publicKey = "IHYIan9Xq2PBTSzcMdHpzx4PM67l09WdsGa6s+siyH0=";
|
||||||
|
allowedIPs = [ ips.hina ];
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@@ -10,11 +10,6 @@ in
|
|||||||
permitRootLogin = "yes";
|
permitRootLogin = "yes";
|
||||||
ports = [ 22 22002 ];
|
ports = [ 22 22002 ];
|
||||||
};
|
};
|
||||||
znc = {
|
|
||||||
enable = true;
|
|
||||||
mutable = true;
|
|
||||||
useLegacyConfig = false;
|
|
||||||
};
|
|
||||||
nginx = {
|
nginx = {
|
||||||
enable = true;
|
enable = true;
|
||||||
clientMaxBodySize = "512m";
|
clientMaxBodySize = "512m";
|
||||||
@@ -52,7 +47,6 @@ in
|
|||||||
};
|
};
|
||||||
serverAliases = [ "www.${domain}" ];
|
serverAliases = [ "www.${domain}" ];
|
||||||
};
|
};
|
||||||
"znc.weirdnatto.in" = genericHttpRProxy { addr = "https://${remilia}:9898"; };
|
|
||||||
# "vault.${domain}" = genericHttpRProxy { addr = "https://${marisa}:8800"; };
|
# "vault.${domain}" = genericHttpRProxy { addr = "https://${marisa}:8800"; };
|
||||||
# "consul.${domain}" = genericHttpRProxy { addr = "http://${marisa}:8500"; };
|
# "consul.${domain}" = genericHttpRProxy { addr = "http://${marisa}:8500"; };
|
||||||
"f.${domain}" = genericHttpRProxy { addr = "http://${marisa}:8000"; };
|
"f.${domain}" = genericHttpRProxy { addr = "http://${marisa}:8000"; };
|
||||||
|
@@ -8,6 +8,7 @@
|
|||||||
remilia = "${ipPrefix}.1";
|
remilia = "${ipPrefix}.1";
|
||||||
marisa = "${ipPrefix}.2";
|
marisa = "${ipPrefix}.2";
|
||||||
satori = "${ipPrefix}.3";
|
satori = "${ipPrefix}.3";
|
||||||
|
hina = "${ipPrefix}.4";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
domain = {
|
domain = {
|
||||||
@@ -21,5 +22,6 @@
|
|||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOSQnDNrNP69tIK7U2D7qaMjycfIjpgx0at4U2D5Ufib"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOSQnDNrNP69tIK7U2D7qaMjycfIjpgx0at4U2D5Ufib"
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK5V/hdkTTQSkDLXaEwY8xb/T8+sWtw5c6UjYOPaTrO8"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK5V/hdkTTQSkDLXaEwY8xb/T8+sWtw5c6UjYOPaTrO8"
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKFyKi0HYfkgvEDvjzmDRGwAq2z2KOkfv7scTVSnonBh"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKFyKi0HYfkgvEDvjzmDRGwAq2z2KOkfv7scTVSnonBh"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIICEow6+G9F0JjvVwnyrFoObFAKKBQQ2wwScST0Xzs1l"
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user