Complete Merge of all Hosts
WIP but should should be mostly working
This commit is contained in:
parent
24d157223d
commit
ee1ed4739e
49 changed files with 805 additions and 150 deletions
18
common/acme/default.nix
Normal file
18
common/acme/default.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
|
||||
# letsencrypt
|
||||
security.acme = {
|
||||
acceptTerms = true;
|
||||
defaults = {
|
||||
email = "chris@toph.cc";
|
||||
dnsProvider = "cloudflare";
|
||||
environmentFile = ./cloudflare.ini;
|
||||
};
|
||||
certs = {
|
||||
"ryot.foo" = {
|
||||
extraDomainNames = ["*.ryot.foo"];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
21
common/lxc/default.nix
Normal file
21
common/lxc/default.nix
Normal file
|
@ -0,0 +1,21 @@
|
|||
{ modulesPath, ... }:
|
||||
{
|
||||
imports = [
|
||||
# Include the default lxc/lxd configuration.
|
||||
"${modulesPath}/virtualisation/lxc-container.nix"
|
||||
];
|
||||
|
||||
# Treats the system as a container.
|
||||
boot.isContainer = true;
|
||||
|
||||
# Set your system kind (needed for flakes)
|
||||
nixpkgs.hostPlatform = "x86_64-linux";
|
||||
|
||||
# Supress systemd units that don't work because of LXC.
|
||||
# https://blog.xirion.net/posts/nixos-proxmox-lxc/#configurationnix-tweak
|
||||
systemd.suppressedSystemUnits = [
|
||||
"dev-mqueue.mount"
|
||||
"sys-kernel-debug.mount"
|
||||
"sys-fs-fuse-connections.mount"
|
||||
];
|
||||
}
|
37
flake.nix
37
flake.nix
|
@ -15,14 +15,47 @@
|
|||
lib = nixpkgs.lib;
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
overlays = [ (import ./nixos/overlays) ];
|
||||
# overlays = [ (import ./nixos/overlays) ];
|
||||
};
|
||||
in {
|
||||
nixosConfigurations = {
|
||||
caenus = lib.nixosSystem {
|
||||
inherit system;
|
||||
modules = [
|
||||
./nix
|
||||
./host/caenus
|
||||
];
|
||||
};
|
||||
|
||||
cloud = lib.nixosSystem {
|
||||
inherit system;
|
||||
modules = [
|
||||
./nixos
|
||||
./nix
|
||||
./host/cloud
|
||||
];
|
||||
};
|
||||
|
||||
dockge = lib.nixosSystem {
|
||||
inherit system;
|
||||
modules = [
|
||||
./nix
|
||||
./host/dockge
|
||||
];
|
||||
};
|
||||
|
||||
nix = lib.nixosSystem {
|
||||
inherit system;
|
||||
modules = [
|
||||
./nix
|
||||
./host/nix
|
||||
];
|
||||
};
|
||||
|
||||
proxy = lib.nixosSystem {
|
||||
inherit system;
|
||||
modules = [
|
||||
./nix
|
||||
./host/proxy
|
||||
];
|
||||
};
|
||||
};
|
||||
|
|
BIN
home/modules/fastfetch/host/caenus/oracle.png
Normal file
BIN
home/modules/fastfetch/host/caenus/oracle.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.9 KiB |
12
home/modules/fastfetch/host/caenus/oracle.txt
Normal file
12
home/modules/fastfetch/host/caenus/oracle.txt
Normal file
|
@ -0,0 +1,12 @@
|
|||
|
||||
|
||||
|
||||
[?25l[0m [38;2;129;0;0m▄[38;2;248;0;0m▄[38;2;254;0;0;48;2;131;0;0m▄[48;2;201;0;0m▄[48;2;238;0;0m▄[48;2;247;0;0m▄▄▄▄▄▄▄▄▄▄[48;2;238;0;0m▄[48;2;201;0;0m▄[48;2;131;0;0m▄[0m[38;2;248;0;0m▄[38;2;130;0;0m▄[0m [0m
|
||||
[38;2;137;0;0m▄[38;2;254;0;0;48;2;174;0;0m▄[48;2;254;0;0m╳╳[38;2;180;0;0m▄[0m[7m[38;2;254;0;0m▄[38;2;234;0;0m▄[38;2;213;0;0m▄[38;2;212;0;0m▄▄▄▄▄▄▄▄[38;2;213;0;0m▄[38;2;234;0;0m▄[38;2;254;0;0m▄[0m[38;2;179;0;0;48;2;254;0;0m▄[38;2;254;0;0m╳╳[48;2;174;0;0m▄[0m[38;2;137;0;0m▄[0m [0m
|
||||
[7m[38;2;162;0;0m▌[0m[38;2;247;0;0;48;2;254;0;0m╳[38;2;254;0;0m╳[38;2;200;0;0m▄[0m[7m[38;2;140;0;0m▄[0m [7m[38;2;139;0;0m▄[0m[38;2;200;0;0;48;2;254;0;0m▄[38;2;254;0;0m╳[38;2;247;0;0m╳[0m[38;2;162;0;0m▌[0m
|
||||
[38;2;202;0;0;48;2;254;0;0m▌[38;2;254;0;0m╳╳[0m[38;2;130;0;0m▌[0m [7m[38;2;130;0;0m▌[0m[38;2;254;0;0;48;2;254;0;0m╳╳[48;2;202;0;0m▌[0m
|
||||
[38;2;203;0;0;48;2;254;0;0m▌[38;2;254;0;0m╳╳[0m[38;2;129;0;0m▌[0m [7m[38;2;129;0;0m▌[0m[38;2;254;0;0;48;2;254;0;0m╳╳[48;2;203;0;0m▌[0m
|
||||
[7m[38;2;164;0;0m▌[0m[38;2;248;0;0;48;2;254;0;0m╳[38;2;254;0;0m╳[48;2;199;0;0m▄[0m[38;2;138;0;0m▄[0m [38;2;137;0;0m▄[38;2;254;0;0;48;2;199;0;0m▄[48;2;254;0;0m╳[38;2;248;0;0m╳[0m[38;2;164;0;0m▌[0m
|
||||
[7m[38;2;139;0;0m▄[0m[38;2;175;0;0;48;2;254;0;0m▄[38;2;254;0;0m╳╳[48;2;178;0;0m▄[0m[38;2;254;0;0m▄[38;2;234;0;0m▄[38;2;212;0;0m▄[38;2;211;0;0m▄▄▄▄▄▄▄▄[38;2;212;0;0m▄[38;2;234;0;0m▄[38;2;254;0;0m▄[48;2;178;0;0m▄[48;2;254;0;0m╳╳[38;2;176;0;0m▄[0m[7m[38;2;139;0;0m▄[0m [0m
|
||||
[7m[38;2;131;0;0m▄[38;2;248;0;0m▄[0m[38;2;132;0;0;48;2;254;0;0m▄[38;2;201;0;0m▄[38;2;239;0;0m▄[38;2;248;0;0m▄▄▄▄▄▄▄▄▄▄[38;2;239;0;0m▄[38;2;202;0;0m▄[38;2;132;0;0m▄[0m[7m[38;2;248;0;0m▄[38;2;131;0;0m▄[0m [0m
|
||||
[?25h
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
84
home/modules/fastfetch/host/nix/default.nix
Normal file
84
home/modules/fastfetch/host/nix/default.nix
Normal file
|
@ -0,0 +1,84 @@
|
|||
{
|
||||
programs.fastfetch = {
|
||||
enable = true;
|
||||
settings = {
|
||||
logo = {
|
||||
# Created with Chafa
|
||||
# chafa -s 26x13 -w 9 --symbols stipple+vhalf --view-size 26x13 nixos.png > nixos.txt
|
||||
source = builtins.readFile ./nixos.txt;
|
||||
type = "data";
|
||||
position = "left";
|
||||
padding = {
|
||||
top = 0;
|
||||
};
|
||||
};
|
||||
display = {
|
||||
separator = " ";
|
||||
};
|
||||
modules = [
|
||||
{
|
||||
key = "╭───────────╮";
|
||||
type = "custom";
|
||||
}
|
||||
{
|
||||
key = "│ {#31} user {#keys}│";
|
||||
type = "title";
|
||||
format = "{user-name}";
|
||||
}
|
||||
{
|
||||
key = "│ {#32} host {#keys}│";
|
||||
type = "title";
|
||||
format = "{host-name}";
|
||||
}
|
||||
{
|
||||
key = "│ {#33} uptime {#keys}│";
|
||||
type = "uptime";
|
||||
}
|
||||
{
|
||||
key = "│ {#34}{icon} distro {#keys}│";
|
||||
type = "os";
|
||||
}
|
||||
{
|
||||
key = "│ {#36} desktop {#keys}│";
|
||||
type = "de";
|
||||
}
|
||||
{
|
||||
key = "│ {#32} shell {#keys}│";
|
||||
type = "shell";
|
||||
}
|
||||
{
|
||||
key = "│ {#33} cpu {#keys}│";
|
||||
type = "cpu";
|
||||
showPeCoreCount = true;
|
||||
}
|
||||
{
|
||||
key = "│ {#34} disk {#keys}│";
|
||||
type = "disk";
|
||||
folders = "/";
|
||||
}
|
||||
{
|
||||
key = "│ {#35} memory {#keys}│";
|
||||
type = "memory";
|
||||
}
|
||||
{
|
||||
key = "│ {#36} network {#keys}│";
|
||||
type = "localip";
|
||||
format = "{ipv4} ({ifname})";
|
||||
}
|
||||
{
|
||||
key = "├───────────┤";
|
||||
type = "custom";
|
||||
}
|
||||
{
|
||||
key = "│ {#39} colors {#keys}│";
|
||||
type = "colors";
|
||||
symbol = "circle";
|
||||
}
|
||||
{
|
||||
key = "╰───────────╯";
|
||||
type = "custom";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
BIN
home/modules/fastfetch/host/nix/nixos.png
Normal file
BIN
home/modules/fastfetch/host/nix/nixos.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 31 KiB |
13
home/modules/fastfetch/host/nix/nixos.txt
Normal file
13
home/modules/fastfetch/host/nix/nixos.txt
Normal file
|
@ -0,0 +1,13 @@
|
|||
|
||||
[?25l[0m [38;2;201;171;246;48;2;170;145;205m▄[38;2;198;167;250;48;2;196;166;243m▄[0m[38;2;157;132;205m▄[0m [38;2;42;98;133;48;2;68;158;214m▄[38;2;80;187;253;48;2;70;163;221m▄[48;2;55;130;176m▄[0m [38;2;69;145;208m▄[38;2;85;173;253;48;2;72;159;221m▄[38;2;83;164;244;48;2;53;114;162m▄[0m [0m
|
||||
[7m[38;2;113;96;142m▄[0m[38;2;174;146;228;48;2;194;163;249m▄[38;2;183;153;247;48;2;187;156;248m▄[38;2;173;143;242;48;2;93;77;127m▄[0m [7m[38;2;72;162;224m▄[0m[38;2;86;171;253;48;2;83;180;253m▄[38;2;87;167;253;48;2;76;160;230m▄[38;2;88;163;253;48;2;44;86;128m▄[38;2;90;159;253;48;2;87;168;253m▄[38;2;86;147;239;48;2;88;164;253m▄[0m[7m[38;2;49;89;139m▄[0m [0m
|
||||
[38;2;169;144;202m▄[38;2;203;172;250;48;2;172;146;208m▄[38;2;196;166;249;48;2;168;142;209m▄[38;2;189;159;248;48;2;163;137;210m▄[38;2;182;152;247;48;2;176;147;235m▄[38;2;175;145;246;48;2;179;149;247m▄[38;2;168;138;245;48;2;172;142;246m▄[38;2;161;131;244;48;2;160;131;237m▄[38;2;153;124;243;48;2;147;120;228m▄[38;2;146;117;242;48;2;140;113;226m▄[38;2;139;110;241;48;2;132;105;223m▄[38;2;127;110;241;48;2;104;146;249m▄[38;2;94;147;253;48;2;90;158;253m▄[38;2;94;145;254;48;2;91;154;253m▄[38;2;94;139;251;48;2;92;150;253m▄[0m[7m[38;2;47;74;127m▄[0m [38;2;110;93;135m▄[38;2;155;132;185m▄[0m [0m
|
||||
[7m[38;2;121;102;146m▄[38;2;115;97;144m▄[38;2;111;93;143m▄[38;2;107;90;143m▄[0m[38;2;102;106;245;48;2;134;115;214m▄[38;2;107;106;254;48;2;146;126;249m▄[38;2;93;90;220;48;2;141;122;249m▄[0m[7m[38;2;107;89;178m▄[38;2;86;70;140m▄[38;2;82;66;139m▄[38;2;78;62;138m▄[38;2;74;58;138m▄[38;2;77;93;184m▄[0m[38;2;90;113;228;48;2;97;136;254m▄[38;2;102;123;254;48;2;99;132;254m▄[0m[38;2;97;111;239m▄[0m [38;2;138;116;182m▄[38;2;189;159;239;48;2;197;167;249m░[38;2;199;168;246;48;2;207;176;251m▄[0m [0m
|
||||
[38;2;49;75;132m▄[38;2;61;88;161m▄[38;2;99;132;254;48;2;73;89;183m▄[38;2;100;127;254;48;2;103;119;254m▄[38;2;68;82;171;48;2;104;113;254m▄[0m [38;2;81;80;192;48;2;104;113;254m▄[38;2;110;106;254;48;2;106;109;254m▄[38;2;166;139;247;48;2;112;102;207m▄[38;2;180;150;247;48;2;184;154;248m▄[38;2;182;153;242;48;2;191;161;249m▄[0m[7m[38;2;111;94;140m▄[0m [0m
|
||||
[38;2;48;101;145;48;2;67;132;197m▄[38;2;85;174;253;48;2;88;165;253m▄[38;2;86;169;253;48;2;89;160;253m▄[38;2;88;164;253;48;2;91;155;253m▄[38;2;90;159;253;48;2;92;150;253m▄[38;2;91;154;253;48;2;94;146;254m▄[38;2;93;149;253;48;2;96;141;254m▄[38;2;102;111;228;48;2;92;129;241m▄[0m [38;2;153;125;238;48;2;135;118;246m▄[38;2;164;135;245;48;2;169;139;245m▄[38;2;171;141;246;48;2;176;146;246m▄[38;2;178;148;247;48;2;182;152;247m▄[38;2;185;155;248;48;2;189;159;248m▄[38;2;192;161;249;48;2;196;166;249m▄[38;2;199;168;250;48;2;203;172;250m▄[38;2;155;132;188;48;2;137;117;166m░[0m
|
||||
[38;2;56;124;173m▄[38;2;84;176;253;48;2;85;164;248m▄[38;2;85;170;252;48;2;88;163;253m▄[38;2;110;110;212;48;2;98;148;251m▄[38;2;141;112;241;48;2;132;105;240m▄[38;2;139;111;238;48;2;78;61;139m▄[0m [38;2;142;113;241;48;2;106;85;175m▄[38;2;149;120;242;48;2;153;124;243m▄[38;2;103;83;161;48;2;160;130;244m▄[0m [0m
|
||||
[38;2;80;187;253;48;2;80;187;253m░[38;2;74;173;234;48;2;81;184;253m▄[0m[7m[38;2;51;110;155m▄[0m [38;2;98;80;153;48;2;148;119;241m▄[38;2;158;129;244;48;2;149;120;242m▄[48;2;114;92;184m▄[0m[38;2;99;87;187m▄[38;2;76;74;180m▄[38;2;75;77;180m▄[38;2;73;84;180m▄[38;2;70;91;180m▄[38;2;80;107;203m▄[38;2;103;134;249;48;2;116;91;212m▄[38;2;103;143;249;48;2;137;109;240m▄[38;2;89;141;227;48;2;137;109;229m▄[0m[38;2;60;128;183m▄[38;2;58;134;183m▄[38;2;58;135;183m▄[38;2;55;129;175m▄[0m [0m
|
||||
[7m[38;2;56;130;176m▄[0m [38;2;107;89;151m▄[38;2;174;145;246;48;2;166;137;245m▄[38;2;175;145;246m▄[48;2;161;134;246m▄[38;2;139;122;238;48;2;110;106;254m▄[38;2;85;88;204;48;2;106;109;254m▄[38;2;82;96;204;48;2;103;119;254m▄[38;2;80;103;204;48;2;100;129;254m▄[38;2;91;131;241;48;2;97;138;254m▄[38;2;93;148;253;48;2;93;148;253m░[38;2;90;157;253;48;2;90;158;253m░[38;2;74;141;214;48;2;87;167;253m▄[38;2;60;127;182;48;2;84;177;253m▄[38;2;57;132;180;48;2;81;186;253m▄[38;2;53;123;167;48;2;80;187;253m▄[0m [0m
|
||||
[38;2;128;107;166m▄[38;2;191;160;249;48;2;180;150;244m▄[38;2;191;161;249;48;2;183;153;247m▄[38;2;98;82;128;48;2;183;153;248m▄[38;2;189;159;245m▄[38;2;192;161;249;48;2;179;149;242m▄[0m[38;2;139;117;180m▄[0m [38;2;62;99;169;48;2;93;148;253m▄[38;2;90;157;253;48;2;90;158;253m░[38;2;87;167;253;48;2;71;135;206m▄[0m [0m
|
||||
[38;2;170;144;207;48;2;198;167;249m▄[38;2;191;162;231;48;2;199;168;250m▄[0m[7m[38;2;145;122;182m▄[0m [7m[38;2;113;96;142m▄[0m[38;2;181;154;218;48;2;200;169;250m▄[38;2;199;169;239;48;2;201;170;250m▄[0m[38;2;174;148;209m▄[0m [7m[38;2;82;145;231m▄[0m[38;2;74;142;215;48;2;87;167;253m▄[0m[7m[38;2;75;158;227m▄[0m [0m
|
||||
[?25h
|
60
host/caenus/default.nix
Normal file
60
host/caenus/default.nix
Normal file
|
@ -0,0 +1,60 @@
|
|||
{ modulesPath, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
||||
hostname = "caenus";
|
||||
|
||||
in {
|
||||
|
||||
## MODULES & IMPORTS ##
|
||||
|
||||
imports =
|
||||
[
|
||||
# FRP
|
||||
./modules/frp
|
||||
# Nginx
|
||||
./modules/nginx
|
||||
# Include the results of the hardware scan.
|
||||
./hardware.nix
|
||||
];
|
||||
|
||||
## BOOTLOADER ##
|
||||
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
## NETWORKING ##
|
||||
networking = {
|
||||
firewall = {
|
||||
allowedTCPPorts = [ 22 80 443 4040 ];
|
||||
allowedUDPPorts = [ 25565 4040 ];
|
||||
};
|
||||
dhcpcd.enable = false;
|
||||
hostName = hostname;
|
||||
networkmanager.enable = true;
|
||||
useHostResolvConf = false;
|
||||
};
|
||||
|
||||
systemd.network = {
|
||||
enable = true;
|
||||
networks."50-enp0s6" = {
|
||||
matchConfig.Name = "enp0s6";
|
||||
networkConfig = {
|
||||
DHCP = "yes";
|
||||
IPv6AcceptRA = true;
|
||||
};
|
||||
linkConfig.RequiredForOnline = "routable";
|
||||
};
|
||||
};
|
||||
|
||||
## PACKAGES ##
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
git
|
||||
micro
|
||||
openssh
|
||||
ranger
|
||||
sshfs
|
||||
wget
|
||||
];
|
||||
}
|
42
host/caenus/hardware.nix
Normal file
42
host/caenus/hardware.nix
Normal file
|
@ -0,0 +1,42 @@
|
|||
# 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.
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
(modulesPath + "/profiles/qemu-guest.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "virtio_scsi" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/467be3e2-75cb-439f-8255-e1ed3a00c2d8";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/storage" =
|
||||
{ device = "/dev/disk/by-uuid/a3666a64-591c-45ab-8393-3dd1a0a51d79";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/E12E-D69C";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0022" "dmask=0022" ];
|
||||
};
|
||||
|
||||
swapDevices = [ ];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.eth0.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
|
||||
}
|
13
host/caenus/modules/frp/default.nix
Normal file
13
host/caenus/modules/frp/default.nix
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
services.frp = {
|
||||
enable = true;
|
||||
role = "server";
|
||||
settings = {
|
||||
bindPort = 4040;
|
||||
auth = {
|
||||
method = "token";
|
||||
token = builtins.readFile ./frp.token;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
1
host/caenus/modules/frp/frp.token
Normal file
1
host/caenus/modules/frp/frp.token
Normal file
|
@ -0,0 +1 @@
|
|||
$2b$05$3hq3mA559Yxy679kKbzou..ao9d7annFWAo4MRo0tO04bYJsteWTu
|
1
host/caenus/modules/frp/frp.token.example
Normal file
1
host/caenus/modules/frp/frp.token.example
Normal file
|
@ -0,0 +1 @@
|
|||
<SHA token>
|
36
host/caenus/modules/nginx/default.nix
Normal file
36
host/caenus/modules/nginx/default.nix
Normal file
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
users.users.nginx.extraGroups = [ "acme" ];
|
||||
|
||||
# Nginx
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
# Use recommended settings
|
||||
recommendedGzipSettings = true;
|
||||
recommendedOptimisation = true;
|
||||
recommendedProxySettings = true;
|
||||
recommendedTlsSettings = true;
|
||||
|
||||
virtualHosts = {
|
||||
"ryot.foo" = {
|
||||
http2 = true;
|
||||
forceSSL = true;
|
||||
useACMEHost = "ryot.foo";
|
||||
locations."/".proxyPass = "http://0.0.0.0:8080";
|
||||
};
|
||||
|
||||
"*.ryot.foo" = {
|
||||
http2 = true;
|
||||
forceSSL = true;
|
||||
useACMEHost = "ryot.foo";
|
||||
locations."/" = {
|
||||
proxyPass = "http://0.0.0.0:8080";
|
||||
proxyWebsockets = true;
|
||||
extraConfig = ''
|
||||
proxy_ssl_server_name on;
|
||||
proxy_pass_header Authorization;
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
71
host/cloud/default.nix
Normal file
71
host/cloud/default.nix
Normal file
|
@ -0,0 +1,71 @@
|
|||
{ modulesPath, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
||||
hostname = "cloud";
|
||||
|
||||
in {
|
||||
|
||||
## MODULES & IMPORTS ##
|
||||
imports = [
|
||||
# Common Modules
|
||||
../../common/acme
|
||||
../../common/lxc
|
||||
../../common/ssh
|
||||
|
||||
# Import hardware configuration.
|
||||
./hardware.nix
|
||||
|
||||
# Local Modules
|
||||
|
||||
# cron
|
||||
./modules/cron
|
||||
# Logrotate
|
||||
./modules/logrotate
|
||||
# Nextcloud
|
||||
./modules/nextcloud
|
||||
# Nginx
|
||||
./modules/nginx
|
||||
# Snapraid-runner
|
||||
./modules/snapraid
|
||||
];
|
||||
|
||||
## NETWORKING ##
|
||||
networking = {
|
||||
firewall = {
|
||||
allowedTCPPorts = [ 22 80 443 ];
|
||||
allowedUDPPorts = [ ];
|
||||
};
|
||||
dhcpcd.enable = false;
|
||||
hostName = hostname;
|
||||
networkmanager.enable = true;
|
||||
useDHCP = false;
|
||||
useHostResolvConf = false;
|
||||
};
|
||||
|
||||
systemd.network = {
|
||||
enable = true;
|
||||
networks."50-eth0" = {
|
||||
matchConfig.Name = "eth0";
|
||||
networkConfig = {
|
||||
DHCP = "ipv4";
|
||||
IPv6AcceptRA = true;
|
||||
};
|
||||
linkConfig.RequiredForOnline = "routable";
|
||||
};
|
||||
};
|
||||
|
||||
## PACKAGES ##
|
||||
nixpkgs.overlays = [ (import ./overlays) ];
|
||||
environment.systemPackages = with pkgs; [
|
||||
git
|
||||
mergerfs
|
||||
micro
|
||||
openssh
|
||||
ranger
|
||||
sshfs
|
||||
snapraid
|
||||
snapraid-runner
|
||||
wget
|
||||
];
|
||||
}
|
|
@ -1,7 +1,5 @@
|
|||
{
|
||||
# Treats the system as a container.
|
||||
boot.isContainer = true;
|
||||
|
||||
# for sshfs
|
||||
programs.fuse.userAllowOther = true;
|
||||
|
||||
fileSystems = {
|
||||
|
@ -17,7 +15,4 @@
|
|||
options = ["bind" "nofail"];
|
||||
};
|
||||
};
|
||||
|
||||
# Set your system kind (needed for flakes)
|
||||
nixpkgs.hostPlatform = "x86_64-linux";
|
||||
}
|
1
host/cloud/modules/nextcloud/nextcloud-admin-pass
Normal file
1
host/cloud/modules/nextcloud/nextcloud-admin-pass
Normal file
|
@ -0,0 +1 @@
|
|||
snYBkSxkFZ6a7Y
|
55
host/dockge/default.nix
Normal file
55
host/dockge/default.nix
Normal file
|
@ -0,0 +1,55 @@
|
|||
{ modulesPath, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
||||
hostname = "cloud";
|
||||
|
||||
in {
|
||||
|
||||
## MODULES & IMPORTS ##
|
||||
imports = [
|
||||
# Common Modules
|
||||
../../common/lxc
|
||||
../../common/ssh
|
||||
|
||||
# Import hardware configuration.
|
||||
./hardware.nix
|
||||
|
||||
# Local Modules
|
||||
];
|
||||
|
||||
## NETWORKING ##
|
||||
networking = {
|
||||
firewall = {
|
||||
allowedTCPPorts = [ 22 80 443 ];
|
||||
allowedUDPPorts = [ ];
|
||||
};
|
||||
dhcpcd.enable = false;
|
||||
hostName = hostname;
|
||||
networkmanager.enable = true;
|
||||
useDHCP = false;
|
||||
useHostResolvConf = false;
|
||||
};
|
||||
|
||||
systemd.network = {
|
||||
enable = true;
|
||||
networks."50-eth0" = {
|
||||
matchConfig.Name = "eth0";
|
||||
networkConfig = {
|
||||
DHCP = "ipv4";
|
||||
IPv6AcceptRA = true;
|
||||
};
|
||||
linkConfig.RequiredForOnline = "routable";
|
||||
};
|
||||
};
|
||||
|
||||
## PACKAGES ##
|
||||
environment.systemPackages = with pkgs; [
|
||||
git
|
||||
micro
|
||||
openssh
|
||||
ranger
|
||||
sshfs
|
||||
wget
|
||||
];
|
||||
}
|
13
host/dockge/hardware.nix
Normal file
13
host/dockge/hardware.nix
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
# Treats the system as a container.
|
||||
boot.isContainer = true;
|
||||
|
||||
# TODO: SSHFS
|
||||
# fileSystems."/" = {
|
||||
# device = "/dev/sda1";
|
||||
# fsType = "ext4";
|
||||
# };
|
||||
|
||||
# Set your system kind (needed for flakes)
|
||||
nixpkgs.hostPlatform = "x86_64-linux";
|
||||
}
|
56
host/nix/default.nix
Normal file
56
host/nix/default.nix
Normal file
|
@ -0,0 +1,56 @@
|
|||
{ modulesPath, config, pkgs, ... }:
|
||||
let
|
||||
|
||||
admin = "toph";
|
||||
password = "[REDACTED]";
|
||||
timeZone = "America/New_York";
|
||||
defaultLocale = "en_US.UTF-8";
|
||||
|
||||
in {
|
||||
|
||||
## MODULES & IMPORTS ##
|
||||
imports = [
|
||||
# Common Modules
|
||||
../../common/lxc
|
||||
../../common/ssh
|
||||
|
||||
# Import hardware configuration.
|
||||
./hardware.nix
|
||||
];
|
||||
|
||||
## NETWORKING ##
|
||||
networking = {
|
||||
firewall = {
|
||||
allowedTCPPorts = [ 80 443 ];
|
||||
};
|
||||
dhcpcd.enable = false;
|
||||
hostName = hostname;
|
||||
networkmanager.enable = true;
|
||||
useDHCP = false;
|
||||
useHostResolvConf = false;
|
||||
};
|
||||
|
||||
systemd.network = {
|
||||
enable = true;
|
||||
networks."50-eth0" = {
|
||||
matchConfig.Name = "eth0";
|
||||
networkConfig = {
|
||||
DHCP = "ipv4";
|
||||
IPv6AcceptRA = true;
|
||||
};
|
||||
linkConfig.RequiredForOnline = "routable";
|
||||
};
|
||||
};
|
||||
|
||||
## PACKAGES ##
|
||||
environment.systemPackages = with pkgs; [
|
||||
git
|
||||
micro
|
||||
openbox
|
||||
openssh
|
||||
ranger
|
||||
sshfs
|
||||
wget
|
||||
x2goserver
|
||||
];
|
||||
}
|
7
host/nix/hardware.nix
Normal file
7
host/nix/hardware.nix
Normal file
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
# TODO: SSHFS
|
||||
# fileSystems."/" = {
|
||||
# device = "/dev/sda1";
|
||||
# fsType = "ext4";
|
||||
# };
|
||||
}
|
61
host/proxy/default.nix
Normal file
61
host/proxy/default.nix
Normal file
|
@ -0,0 +1,61 @@
|
|||
{ modulesPath, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
||||
hostname = "proxy";
|
||||
admin = "toph";
|
||||
password = "[REDACTED]";
|
||||
timeZone = "America/New_York";
|
||||
defaultLocale = "en_US.UTF-8";
|
||||
|
||||
in {
|
||||
|
||||
## MODULES & IMPORTS ##
|
||||
imports = [
|
||||
# Common Modules
|
||||
../../common/acme
|
||||
../../common/lxc
|
||||
../../common/ssh
|
||||
|
||||
# Import hardware configuration.
|
||||
./hardware.nix
|
||||
|
||||
# Local Modules
|
||||
|
||||
# caddy
|
||||
./modules/caddy
|
||||
];
|
||||
|
||||
## NETWORKING ##
|
||||
networking = {
|
||||
firewall = {
|
||||
allowedTCPPorts = [ 22 80 443 ];
|
||||
allowedUDPPorts = [ ];
|
||||
};
|
||||
dhcpcd.enable = false;
|
||||
hostName = hostname;
|
||||
networkmanager.enable = true;
|
||||
useHostResolvConf = false;
|
||||
};
|
||||
|
||||
systemd.network = {
|
||||
enable = true;
|
||||
networks."50-net0" = {
|
||||
matchConfig.Name = "net0";
|
||||
networkConfig = {
|
||||
DHCP = "yes";
|
||||
IPv6AcceptRA = true;
|
||||
};
|
||||
linkConfig.RequiredForOnline = "routable";
|
||||
};
|
||||
};
|
||||
|
||||
## PACKAGES ##
|
||||
environment.systemPackages = with pkgs; [
|
||||
git
|
||||
micro
|
||||
openssh
|
||||
ranger
|
||||
sshfs
|
||||
];
|
||||
}
|
6
host/proxy/hardware.nix
Normal file
6
host/proxy/hardware.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
# fileSystems."/" = {
|
||||
# device = "/dev/sda1";
|
||||
# fsType = "ext4";
|
||||
# };
|
||||
}
|
1
host/proxy/modules/acme/cloudflare.ini.example
Normal file
1
host/proxy/modules/acme/cloudflare.ini.example
Normal file
|
@ -0,0 +1 @@
|
|||
CF_DNS_API_TOKEN=
|
107
host/proxy/modules/caddy/default.nix
Normal file
107
host/proxy/modules/caddy/default.nix
Normal file
|
@ -0,0 +1,107 @@
|
|||
{
|
||||
services.caddy = {
|
||||
enable = true;
|
||||
virtualHosts = {
|
||||
"ryot.foo" = {
|
||||
useACMEHost = "ryot.foo";
|
||||
extraConfig = ''
|
||||
reverse_proxy 104.40.4.44:80
|
||||
'';
|
||||
};
|
||||
|
||||
"adguard.ryot.foo" = {
|
||||
useACMEHost = "ryot.foo";
|
||||
extraConfig = ''
|
||||
reverse_proxy opnsense:81
|
||||
'';
|
||||
};
|
||||
|
||||
"cloud.ryot.foo" = {
|
||||
useACMEHost = "ryot.foo";
|
||||
extraConfig = ''
|
||||
reverse_proxy https://104.40.4.24:443 {
|
||||
transport http {
|
||||
tls_insecure_skip_verify
|
||||
}
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
"cloudflared.ryot.foo" = {
|
||||
useACMEHost = "ryot.foo";
|
||||
extraConfig = ''
|
||||
reverse_proxy http://104.40.4.44:14333
|
||||
'';
|
||||
};
|
||||
|
||||
"dash.ryot.foo" = {
|
||||
useACMEHost = "ryot.foo";
|
||||
extraConfig = ''
|
||||
reverse_proxy http://104.40.4.44:3001
|
||||
'';
|
||||
};
|
||||
|
||||
"dazzle.ryot.foo" = {
|
||||
useACMEHost = "ryot.foo";
|
||||
extraConfig = ''
|
||||
reverse_proxy http://104.40.4.44:8070
|
||||
'';
|
||||
};
|
||||
|
||||
"dockge.ryot.foo" = {
|
||||
useACMEHost = "ryot.foo";
|
||||
extraConfig = ''
|
||||
reverse_proxy http://104.40.4.44:5001
|
||||
'';
|
||||
};
|
||||
|
||||
"drive.ryot.foo" = {
|
||||
useACMEHost = "ryot.foo";
|
||||
extraConfig = ''
|
||||
reverse_proxy http://104.40.4.44:8080
|
||||
'';
|
||||
};
|
||||
|
||||
"frp.ryot.foo" = {
|
||||
useACMEHost = "ryot.foo";
|
||||
extraConfig = ''
|
||||
reverse_proxy http://104.40.4.44:4041
|
||||
'';
|
||||
};
|
||||
|
||||
|
||||
"home.ryot.foo" = {
|
||||
useACMEHost = "ryot.foo";
|
||||
extraConfig = ''
|
||||
reverse_proxy http://104.40.4.44:7575
|
||||
'';
|
||||
};
|
||||
|
||||
|
||||
"nginx.ryot.foo" = {
|
||||
useACMEHost = "ryot.foo";
|
||||
extraConfig = ''
|
||||
reverse_proxy http://104.40.4.44:81
|
||||
'';
|
||||
};
|
||||
|
||||
"pve.ryot.foo" = {
|
||||
useACMEHost = "ryot.foo";
|
||||
extraConfig = ''
|
||||
reverse_proxy 10.163.22.82:8006 {
|
||||
transport http {
|
||||
tls_insecure_skip_verify
|
||||
}
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
"upsnap.ryot.foo" = {
|
||||
useACMEHost = "ryot.foo";
|
||||
extraConfig = ''
|
||||
reverse_proxy http://104.40.4.44:8090
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
18
host/proxy/modules/nginx/default.nix
Normal file
18
host/proxy/modules/nginx/default.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
|
||||
# INFO: migth need at some point so keeping it here
|
||||
|
||||
# Nginx
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
# Use recommended settings
|
||||
recommendedGzipSettings = true;
|
||||
recommendedOptimisation = true;
|
||||
recommendedProxySettings = true;
|
||||
recommendedTlsSettings = true;
|
||||
|
||||
# Add a virtual host
|
||||
virtualHosts."ryot.com" = {};
|
||||
|
||||
};
|
||||
}
|
18
host/proxy/modules/ssh/default.nix
Normal file
18
host/proxy/modules/ssh/default.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
programs.ssh.startAgent = true;
|
||||
|
||||
users.users.root.openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIClZstYoT64zHnGfE7LMYNiQPN5/gmCt382lC+Ji8lrH PVE"
|
||||
];
|
||||
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
AllowUsers = null; # everyone
|
||||
GatewayPorts = "yes"; # allow remote port forwarding with AutoSSH
|
||||
KbdInteractiveAuthentication = false;
|
||||
PasswordAuthentication = false;
|
||||
PermitRootLogin = "yes";
|
||||
};
|
||||
};
|
||||
}
|
49
nix/default.nix
Normal file
49
nix/default.nix
Normal file
|
@ -0,0 +1,49 @@
|
|||
{ modulesPath, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
||||
admin = "toph";
|
||||
password = "[REDACTED]";
|
||||
timeZone = "America/New_York";
|
||||
defaultLocale = "en_US.UTF-8";
|
||||
|
||||
in {
|
||||
## TIMEZONE & LOCALE ##
|
||||
time.timeZone = timeZone;
|
||||
i18n.defaultLocale = defaultLocale;
|
||||
|
||||
## USERS ##
|
||||
users.mutableUsers = false;
|
||||
users.users."${admin}" = {
|
||||
isNormalUser = true;
|
||||
createHome = true;
|
||||
homeMode = "750";
|
||||
home = "/home/${admin}";
|
||||
password = password;
|
||||
extraGroups = [ "wheel" ];
|
||||
shell = pkgs.fish;
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIClZstYoT64zHnGfE7LMYNiQPN5/gmCt382lC+Ji8lrH PVE"
|
||||
];
|
||||
};
|
||||
|
||||
# INFO: Enable passwordless sudo.
|
||||
security.sudo.extraRules = [{
|
||||
users = [ admin ];
|
||||
commands = [{
|
||||
command = "ALL" ;
|
||||
options = [ "NOPASSWD" ];
|
||||
}];
|
||||
}];
|
||||
|
||||
## PROGRAMS & SERVICES ##
|
||||
# Shells
|
||||
environment.shells = with pkgs; [ bash fish ];
|
||||
programs.fish.enable = true;
|
||||
|
||||
## NIXOS ##
|
||||
# This value determines the NixOS release with which your system is to be
|
||||
system.stateVersion = "24.11";
|
||||
# Enable Flakes
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
}
|
|
@ -1,137 +0,0 @@
|
|||
{ modulesPath, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
||||
hostname = "cloud";
|
||||
admin = "toph";
|
||||
password = "[REDACTED]";
|
||||
timeZone = "America/New_York";
|
||||
defaultLocale = "en_US.UTF-8";
|
||||
|
||||
in {
|
||||
|
||||
## MODULES & IMPORTS ##
|
||||
|
||||
imports =
|
||||
[
|
||||
# Include the default lxc/lxd configuration.
|
||||
"${modulesPath}/virtualisation/lxc-container.nix"
|
||||
# Import hardware configuration.
|
||||
./hardware-configuration.nix
|
||||
|
||||
# Module imports
|
||||
|
||||
# ACME
|
||||
./modules/acme
|
||||
# cron
|
||||
./modules/cron
|
||||
# Logrotate
|
||||
./modules/logrotate
|
||||
# Nextcloud
|
||||
./modules/nextcloud
|
||||
# Nginx
|
||||
./modules/nginx
|
||||
# Snapraid-runner
|
||||
./modules/snapraid
|
||||
# SSH
|
||||
./modules/ssh
|
||||
];
|
||||
|
||||
## NETWORKING ##
|
||||
networking = {
|
||||
firewall = {
|
||||
allowedTCPPorts = [ 80 443 ];
|
||||
};
|
||||
dhcpcd.enable = false;
|
||||
hostName = hostname;
|
||||
networkmanager.enable = true;
|
||||
useDHCP = false;
|
||||
useHostResolvConf = false;
|
||||
};
|
||||
|
||||
systemd.network = {
|
||||
enable = true;
|
||||
networks."50-eth0" = {
|
||||
matchConfig.Name = "eth0";
|
||||
networkConfig = {
|
||||
DHCP = "ipv4";
|
||||
IPv6AcceptRA = true;
|
||||
};
|
||||
linkConfig.RequiredForOnline = "routable";
|
||||
};
|
||||
};
|
||||
|
||||
## TIMEZONE & LOCALE ##
|
||||
time.timeZone = timeZone;
|
||||
i18n.defaultLocale = defaultLocale;
|
||||
|
||||
## USERS ##
|
||||
users = {
|
||||
mutableUsers = false;
|
||||
users = {
|
||||
"${admin}" = {
|
||||
isNormalUser = true;
|
||||
createHome = true;
|
||||
homeMode = "750";
|
||||
home = "/home/${admin}";
|
||||
password = password;
|
||||
extraGroups = [ "wheel" ];
|
||||
shell = pkgs.fish;
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIClZstYoT64zHnGfE7LMYNiQPN5/gmCt382lC+Ji8lrH PVE"
|
||||
];
|
||||
};
|
||||
|
||||
nextcloud.extraGroups = [ "users" "root" "wheel" ];
|
||||
nextcloud.homeMode = "750";
|
||||
};
|
||||
};
|
||||
|
||||
# INFO: Enable passwordless sudo.
|
||||
security.sudo.extraRules= [
|
||||
{ users = [ admin ];
|
||||
commands = [
|
||||
{ command = "ALL" ;
|
||||
options= [ "NOPASSWD" ];
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
|
||||
## PACKAGES ##
|
||||
|
||||
nixpkgs.overlays = [ (import ./overlays) ];
|
||||
environment.systemPackages = with pkgs; [
|
||||
git
|
||||
mergerfs
|
||||
micro
|
||||
openssh
|
||||
ranger
|
||||
sshfs
|
||||
snapraid
|
||||
snapraid-runner
|
||||
wget
|
||||
];
|
||||
|
||||
## PROGRAMS & SERVICES ##
|
||||
|
||||
# Shells
|
||||
environment.shells = with pkgs; [ bash fish ];
|
||||
programs.fish.enable = true;
|
||||
|
||||
## NIXOS ##
|
||||
|
||||
# LXC specific configuration
|
||||
# Supress systemd units that don't work because of LXC.
|
||||
# https://blog.xirion.net/posts/nixos-proxmox-lxc/#configurationnix-tweak
|
||||
systemd.suppressedSystemUnits = [
|
||||
"dev-mqueue.mount"
|
||||
"sys-kernel-debug.mount"
|
||||
"sys-fs-fuse-connections.mount"
|
||||
];
|
||||
|
||||
# This value determines the NixOS release with which your system is to be
|
||||
system.stateVersion = "24.11";
|
||||
# Enable Flakes
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
}
|
Loading…
Add table
Reference in a new issue