Compare commits
32 Commits
router/mod
...
updates
| Author | SHA1 | Date | |
|---|---|---|---|
|
a278a69f05
|
|||
|
2de612bc4f
|
|||
|
8593abc8a5
|
|||
|
91727dd2df
|
|||
|
4e08c64ce5
|
|||
|
d61c23f8e7
|
|||
|
07d3706a14
|
|||
|
1f647856ab
|
|||
|
05a20f830f
|
|||
|
35bb5e411e
|
|||
|
5353ad048c
|
|||
|
9bb5b596b7
|
|||
|
ce9bcb785a
|
|||
|
178626a193
|
|||
|
3074b81b45
|
|||
|
e7ebaf371b
|
|||
|
bd44812337
|
|||
|
d7ee1f6434
|
|||
|
8880ac8158
|
|||
|
57d47def99
|
|||
|
8762c5b555
|
|||
|
eee8fd5ece
|
|||
|
e09bca0feb
|
|||
|
f9b152cd52
|
|||
|
2de9229027
|
|||
|
00bc6f8de3
|
|||
|
21a058f5ea
|
|||
|
574ba8a951
|
|||
|
15dc8dd7c4
|
|||
|
2bd88d7a93
|
|||
|
5ec716919d
|
|||
|
47c9cff8f5
|
178
flake.lock
generated
178
flake.lock
generated
@@ -1,5 +1,79 @@
|
|||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
|
"crane": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1754269165,
|
||||||
|
"narHash": "sha256-0tcS8FHd4QjbCVoxN9jI+PjHgA4vc/IjkUSp+N3zy0U=",
|
||||||
|
"owner": "ipetkov",
|
||||||
|
"repo": "crane",
|
||||||
|
"rev": "444e81206df3f7d92780680e45858e31d2f07a08",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "ipetkov",
|
||||||
|
"repo": "crane",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1747046372,
|
||||||
|
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-parts": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": [
|
||||||
|
"lanzaboote",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1754091436,
|
||||||
|
"narHash": "sha256-XKqDMN1/Qj1DKivQvscI4vmHfDfvYR2pfuFOJiCeewM=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "67df8c627c2c39c41dbec76a1f201929929ab0bd",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitignore": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"lanzaboote",
|
||||||
|
"pre-commit-hooks-nix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709087332,
|
||||||
|
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -7,11 +81,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1749178927,
|
"lastModified": 1765480374,
|
||||||
"narHash": "sha256-bXcEx1aZUNm5hMLVJeuofcOrZyOiapzvQ7K36HYK3YQ=",
|
"narHash": "sha256-HlbvQAqLx7WqZFFQZ8nu5UUJAVlXiV/kqKbyueA8srw=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "91287a0e9d42570754487b7e38c6697e15a9aab2",
|
"rev": "39cb677ed9e908e90478aa9fe5f3383dfc1a63f3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -20,6 +94,32 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"lanzaboote": {
|
||||||
|
"inputs": {
|
||||||
|
"crane": "crane",
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"flake-parts": "flake-parts",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"pre-commit-hooks-nix": "pre-commit-hooks-nix",
|
||||||
|
"rust-overlay": "rust-overlay"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1762205063,
|
||||||
|
"narHash": "sha256-If6vQ+KvtKs3ARBO9G3l+4wFSCYtRBrwX1z+I+B61wQ=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "lanzaboote",
|
||||||
|
"rev": "88b8a563ff5704f4e8d8e5118fb911fa2110ca05",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"ref": "v0.4.3",
|
||||||
|
"repo": "lanzaboote",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixlib": {
|
"nixlib": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1736643958,
|
"lastModified": 1736643958,
|
||||||
@@ -43,11 +143,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1747663185,
|
"lastModified": 1764234087,
|
||||||
"narHash": "sha256-Obh50J+O9jhUM/FgXtI3he/QRNiV9+J53+l+RlKSaAk=",
|
"narHash": "sha256-NHF7QWa0ZPT8hsJrvijREW3+nifmF2rTXgS2v0tpcEA=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixos-generators",
|
"repo": "nixos-generators",
|
||||||
"rev": "ee07ba0d36c38e9915c55d2ac5a8fb0f05f2afcc",
|
"rev": "032a1878682fafe829edfcf5fdfad635a2efe748",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -58,11 +158,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1748929857,
|
"lastModified": 1765186076,
|
||||||
"narHash": "sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj+Q=",
|
"narHash": "sha256-hM20uyap1a0M9d344I692r+ik4gTMyj60cQWO+hAYP8=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "c2a03962b8e24e669fb37b7df10e7c79531ff1a4",
|
"rev": "addf7cf5f383a3101ecfba091b98d0a1263dc9b8",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -82,11 +182,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1748196248,
|
"lastModified": 1763909441,
|
||||||
"narHash": "sha256-1iHjsH6/5UOerJEoZKE+Gx1BgAoge/YcnUsOA4wQ/BU=",
|
"narHash": "sha256-56LwV51TX/FhgX+5LCG6akQ5KrOWuKgcJa+eUsRMxsc=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "plasma-manager",
|
"repo": "plasma-manager",
|
||||||
"rev": "b7697abe89967839b273a863a3805345ea54ab56",
|
"rev": "b24ed4b272256dfc1cc2291f89a9821d5f9e14b4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -95,15 +195,63 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"pre-commit-hooks-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": [
|
||||||
|
"lanzaboote",
|
||||||
|
"flake-compat"
|
||||||
|
],
|
||||||
|
"gitignore": "gitignore",
|
||||||
|
"nixpkgs": [
|
||||||
|
"lanzaboote",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1750779888,
|
||||||
|
"narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "pre-commit-hooks.nix",
|
||||||
|
"rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "pre-commit-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
|
"lanzaboote": "lanzaboote",
|
||||||
"nixos-generators": "nixos-generators",
|
"nixos-generators": "nixos-generators",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
"plasma-manager": "plasma-manager",
|
"plasma-manager": "plasma-manager",
|
||||||
"secrix": "secrix"
|
"secrix": "secrix"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"rust-overlay": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"lanzaboote",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1761791894,
|
||||||
|
"narHash": "sha256-myRIDh+PxaREz+z9LzbqBJF+SnTFJwkthKDX9zMyddY=",
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"rev": "59c45eb69d9222a4362673141e00ff77842cd219",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"secrix": {
|
"secrix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -111,11 +259,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1746643487,
|
"lastModified": 1763929380,
|
||||||
"narHash": "sha256-dcB/DArJObCvqE/ZEdQSDW2BZMeDyF83Se5KPfJvz60=",
|
"narHash": "sha256-Yc7gZME/lcHoJH6bMPCG7CyjKWhOLJPqLI8MXtyKPHo=",
|
||||||
"owner": "Platonic-Systems",
|
"owner": "Platonic-Systems",
|
||||||
"repo": "secrix",
|
"repo": "secrix",
|
||||||
"rev": "4c64203fa5b377953b1fb6d5388187df8b60c6d5",
|
"rev": "c6e3ca7af47c329dcf442a3d017ae171eee5612f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
36
flake.nix
36
flake.nix
@@ -22,21 +22,38 @@
|
|||||||
url = "github:Platonic-Systems/secrix";
|
url = "github:Platonic-Systems/secrix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
lanzaboote = {
|
||||||
|
url = "github:nix-community/lanzaboote/v0.4.3";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, home-manager, plasma-manager, nixos-generators, secrix }:
|
outputs = { self, nixpkgs, home-manager, plasma-manager, nixos-generators, secrix, lanzaboote }:
|
||||||
let
|
let
|
||||||
hmModule = file: {
|
hmModule = file: {
|
||||||
imports = [ home-manager.nixosModules.home-manager ];
|
imports = [ home-manager.nixosModules.home-manager ];
|
||||||
|
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
home-manager.sharedModules = [ plasma-manager.homeManagerModules.plasma-manager ];
|
home-manager.sharedModules = [ plasma-manager.homeModules.plasma-manager ];
|
||||||
|
|
||||||
home-manager.users.cazzzer = import file;
|
home-manager.users.cazzzer = import file;
|
||||||
# Optionally, use home-manager.extraSpecialArgs to pass
|
# Optionally, use home-manager.extraSpecialArgs to pass
|
||||||
# arguments to home.nix
|
# arguments to home.nix
|
||||||
};
|
};
|
||||||
|
|
||||||
|
mkRouter = hostFile: nixpkgs.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
modules = [
|
||||||
|
secrix.nixosModules.default
|
||||||
|
./modules
|
||||||
|
./modules/router
|
||||||
|
./hosts/common.nix
|
||||||
|
hostFile
|
||||||
|
./users/cazzzer
|
||||||
|
(hmModule ./home/common.nix)
|
||||||
|
];
|
||||||
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
apps.x86_64-linux.secrix = secrix.secrix self;
|
apps.x86_64-linux.secrix = secrix.secrix self;
|
||||||
@@ -57,6 +74,7 @@
|
|||||||
Yura-TPX13 = nixpkgs.lib.nixosSystem {
|
Yura-TPX13 = nixpkgs.lib.nixosSystem {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
modules = [
|
modules = [
|
||||||
|
lanzaboote.nixosModules.lanzaboote
|
||||||
./modules
|
./modules
|
||||||
./hosts/common.nix
|
./hosts/common.nix
|
||||||
./hosts/common-desktop.nix
|
./hosts/common-desktop.nix
|
||||||
@@ -77,17 +95,9 @@
|
|||||||
(hmModule ./home/cazzzer-pc.nix)
|
(hmModule ./home/cazzzer-pc.nix)
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
router = nixpkgs.lib.nixosSystem {
|
router = mkRouter ./hosts/router;
|
||||||
system = "x86_64-linux";
|
router-1 = mkRouter ./hosts/router-1;
|
||||||
modules = [
|
router-2 = mkRouter ./hosts/router-2;
|
||||||
secrix.nixosModules.default
|
|
||||||
./modules
|
|
||||||
./hosts/common.nix
|
|
||||||
./hosts/router
|
|
||||||
./users/cazzzer
|
|
||||||
(hmModule ./home/common.nix)
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
# https://github.com/nix-community/nixos-generators?tab=readme-ov-file#using-in-a-flake
|
# https://github.com/nix-community/nixos-generators?tab=readme-ov-file#using-in-a-flake
|
||||||
packages.x86_64-linux = {
|
packages.x86_64-linux = {
|
||||||
|
|||||||
@@ -8,21 +8,23 @@ in
|
|||||||
programs.git = {
|
programs.git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
userName = name;
|
|
||||||
userEmail = email;
|
|
||||||
|
|
||||||
signing = {
|
signing = {
|
||||||
key = signingKey;
|
key = signingKey;
|
||||||
signByDefault = true;
|
signByDefault = true;
|
||||||
format = "ssh";
|
format = "ssh";
|
||||||
};
|
};
|
||||||
|
|
||||||
aliases = {
|
settings = {
|
||||||
co = "checkout";
|
user = {
|
||||||
s = "switch";
|
name = name;
|
||||||
};
|
email = email;
|
||||||
|
};
|
||||||
|
|
||||||
|
alias = {
|
||||||
|
co = "checkout";
|
||||||
|
s = "switch";
|
||||||
|
};
|
||||||
|
|
||||||
extraConfig = {
|
|
||||||
url = {
|
url = {
|
||||||
"https://gitea.cazzzer.com/" = {
|
"https://gitea.cazzzer.com/" = {
|
||||||
insteadOf = "caztea:";
|
insteadOf = "caztea:";
|
||||||
|
|||||||
@@ -55,6 +55,8 @@
|
|||||||
activities-icons."809dc779-bf5b-49e6-8e3f-cbe283cb05b6" = "keyboard";
|
activities-icons."809dc779-bf5b-49e6-8e3f-cbe283cb05b6" = "keyboard";
|
||||||
activities-icons."b34a506d-ac4f-4797-8c08-6ef45bc49341" = "preferences-desktop-gaming";
|
activities-icons."b34a506d-ac4f-4797-8c08-6ef45bc49341" = "preferences-desktop-gaming";
|
||||||
};
|
};
|
||||||
|
baloofilerc.General."exclude folders".persistent = true;
|
||||||
|
systemsettingsrc.systemsettings_sidebar_mode.HighlightNonDefaultSettings=true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,11 @@
|
|||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
fileSystems."/nix" =
|
||||||
|
{ device = "zroot/data/nix";
|
||||||
|
fsType = "zfs";
|
||||||
|
};
|
||||||
|
|
||||||
fileSystems."/boot" =
|
fileSystems."/boot" =
|
||||||
{ device = "/dev/disk/by-uuid/970C-6A15";
|
{ device = "/dev/disk/by-uuid/970C-6A15";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
|
|||||||
@@ -11,10 +11,18 @@
|
|||||||
"sysrq_always_enabled=1"
|
"sysrq_always_enabled=1"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
boot.loader.systemd-boot.enable = false;
|
||||||
|
boot.lanzaboote = {
|
||||||
|
enable = true;
|
||||||
|
pkiBundle = "/var/lib/sbctl";
|
||||||
|
};
|
||||||
|
|
||||||
networking.hostName = "Yura-TPX13"; # Define your hostname.
|
networking.hostName = "Yura-TPX13"; # Define your hostname.
|
||||||
networking.hostId = "8425e349"; # Required for ZFS.
|
networking.hostId = "8425e349"; # Required for ZFS.
|
||||||
|
|
||||||
services.fprintd.enable = true;
|
services.fprintd.enable = true;
|
||||||
|
security.pam.services.login.fprintAuth = false;
|
||||||
|
|
||||||
|
|
||||||
# Install firefox.
|
# Install firefox.
|
||||||
programs.firefox.enable = true;
|
programs.firefox.enable = true;
|
||||||
|
|||||||
@@ -7,14 +7,11 @@
|
|||||||
"sysrq_always_enabled=1"
|
"sysrq_always_enabled=1"
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.kernelPackages = pkgs.linuxKernel.packages.linux_6_14;
|
boot.kernelPackages = pkgs.linuxKernel.packages.linux_6_17;
|
||||||
boot.loader = {
|
boot.loader = {
|
||||||
efi.canTouchEfiVariables = true;
|
efi.canTouchEfiVariables = true;
|
||||||
timeout = 3;
|
timeout = 3;
|
||||||
systemd-boot = {
|
systemd-boot.enable = lib.mkDefault true;
|
||||||
enable = true;
|
|
||||||
configurationLimit = 5;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# https://nixos.wiki/wiki/Accelerated_Video_Playback
|
# https://nixos.wiki/wiki/Accelerated_Video_Playback
|
||||||
@@ -24,6 +21,9 @@
|
|||||||
|
|
||||||
# Enable networking
|
# Enable networking
|
||||||
networking.networkmanager.enable = true;
|
networking.networkmanager.enable = true;
|
||||||
|
networking.networkmanager.plugins = [
|
||||||
|
pkgs.networkmanager-openvpn
|
||||||
|
];
|
||||||
|
|
||||||
# Enable the X11 windowing system.
|
# Enable the X11 windowing system.
|
||||||
# You can disable this if you're only using the Wayland session.
|
# You can disable this if you're only using the Wayland session.
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
programs.git.enable = true;
|
programs.git.enable = true;
|
||||||
programs.git.lfs.enable = true;
|
programs.git.lfs.enable = true;
|
||||||
# https://nixos.wiki/wiki/Git
|
# https://nixos.wiki/wiki/Git
|
||||||
programs.git.package = pkgs.git.override { withLibsecret = true; };
|
programs.git.package = pkgs.git.override { withLibsecret = true; doInstallCheck = false; };
|
||||||
programs.lazygit.enable = true;
|
programs.lazygit.enable = true;
|
||||||
programs.neovim.enable = true;
|
programs.neovim.enable = true;
|
||||||
programs.wireshark.enable = true;
|
programs.wireshark.enable = true;
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
fantasque-sans-mono
|
fantasque-sans-mono
|
||||||
nerd-fonts.fantasque-sans-mono
|
nerd-fonts.fantasque-sans-mono
|
||||||
noto-fonts
|
noto-fonts
|
||||||
noto-fonts-emoji
|
noto-fonts-color-emoji
|
||||||
noto-fonts-cjk-sans
|
noto-fonts-cjk-sans
|
||||||
noto-fonts-cjk-serif
|
noto-fonts-cjk-serif
|
||||||
jetbrains-mono
|
jetbrains-mono
|
||||||
@@ -107,6 +107,7 @@
|
|||||||
jq
|
jq
|
||||||
ldns
|
ldns
|
||||||
mediainfo
|
mediainfo
|
||||||
|
powertop
|
||||||
rbw
|
rbw
|
||||||
restic
|
restic
|
||||||
resticprofile
|
resticprofile
|
||||||
@@ -120,14 +121,20 @@
|
|||||||
bitwarden-desktop
|
bitwarden-desktop
|
||||||
darkman
|
darkman
|
||||||
host-spawn # for flatpaks
|
host-spawn # for flatpaks
|
||||||
|
jellyfin-mpv-shim
|
||||||
kdePackages.filelight
|
kdePackages.filelight
|
||||||
kdePackages.flatpak-kcm
|
kdePackages.flatpak-kcm
|
||||||
kdePackages.kate
|
kdePackages.kate
|
||||||
kdePackages.yakuake
|
kdePackages.yakuake
|
||||||
mpv
|
(mpv.override {
|
||||||
|
scripts = with pkgs.mpvScripts; [
|
||||||
|
mpris
|
||||||
|
videoclip
|
||||||
|
];
|
||||||
|
})
|
||||||
nextcloud-client
|
nextcloud-client
|
||||||
lxqt.pavucontrol-qt
|
lxqt.pavucontrol-qt
|
||||||
pinentry
|
pinentry-all
|
||||||
tela-circle-icon-theme
|
tela-circle-icon-theme
|
||||||
virt-viewer
|
virt-viewer
|
||||||
waypipe
|
waypipe
|
||||||
@@ -141,7 +148,12 @@
|
|||||||
android-studio
|
android-studio
|
||||||
rustup
|
rustup
|
||||||
zed-editor
|
zed-editor
|
||||||
|
package-version-server # for zed
|
||||||
] ++ [
|
] ++ [
|
||||||
|
# C
|
||||||
|
gcc
|
||||||
|
valgrind
|
||||||
|
|
||||||
# Python
|
# Python
|
||||||
python3
|
python3
|
||||||
poetry
|
poetry
|
||||||
@@ -163,5 +175,11 @@
|
|||||||
# Gleam
|
# Gleam
|
||||||
gleam
|
gleam
|
||||||
beamMinimal26Packages.erlang
|
beamMinimal26Packages.erlang
|
||||||
|
|
||||||
|
# Racket
|
||||||
|
racket
|
||||||
|
|
||||||
|
# Ruby
|
||||||
|
ruby
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
24
hosts/router-1/default.nix
Normal file
24
hosts/router-1/default.nix
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../hw-vm.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
router = {
|
||||||
|
enableDesktop = false;
|
||||||
|
enableDhcpClient = false;
|
||||||
|
wanMAC = "bc:24:11:af:bd:84";
|
||||||
|
lanMAC = "bc:24:11:38:b1:91";
|
||||||
|
wanLL = "fe80::be24:11ff:feaf:bd84";
|
||||||
|
lanLL = "fe80::be24:11ff:fe38:b191";
|
||||||
|
defaultToken = 251;
|
||||||
|
|
||||||
|
pdFromWan = "fd46:fbbe:ca55:100";
|
||||||
|
wanAddr4 = "192.168.1.63";
|
||||||
|
wanGw4 = "192.168.1.254";
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.hostName = "grouty";
|
||||||
|
|
||||||
|
# override hw-vm.nix default
|
||||||
|
networking.useDHCP = false;
|
||||||
|
}
|
||||||
24
hosts/router-2/default.nix
Normal file
24
hosts/router-2/default.nix
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../hw-vm.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
router = {
|
||||||
|
enableDesktop = false;
|
||||||
|
enableDhcpClient = false;
|
||||||
|
wanMAC = "bc:24:11:bc:db:c1";
|
||||||
|
lanMAC = "bc:24:11:19:2a:96";
|
||||||
|
wanLL = "fe80::be24:11ff:febc:dbc1";
|
||||||
|
lanLL = "fe80::be24:11ff:fe19:2a96";
|
||||||
|
defaultToken = 252;
|
||||||
|
|
||||||
|
pdFromWan = "fd46:fbbe:ca55:100";
|
||||||
|
wanAddr4 = "192.168.1.64";
|
||||||
|
wanGw4 = "192.168.1.254";
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.hostName = "grouta";
|
||||||
|
|
||||||
|
# override hw-vm.nix default
|
||||||
|
networking.useDHCP = false;
|
||||||
|
}
|
||||||
@@ -1,91 +1,18 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
|
||||||
let
|
|
||||||
vars = import ./vars.nix;
|
|
||||||
enableDesktop = false;
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
imports =
|
imports = [
|
||||||
[ # Include the results of the hardware scan.
|
./hardware-configuration.nix
|
||||||
./hardware-configuration.nix
|
./private.nix
|
||||||
./ifconfig.nix
|
|
||||||
./wireguard.nix
|
|
||||||
./firewall.nix
|
|
||||||
./dns.nix
|
|
||||||
./kea.nix
|
|
||||||
./glance.nix
|
|
||||||
./services.nix
|
|
||||||
];
|
|
||||||
# Secrix for secrets management
|
|
||||||
secrix.hostPubKey = vars.pubkey;
|
|
||||||
|
|
||||||
# Bootloader.
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
|
||||||
boot.loader.efi.canTouchEfiVariables = false;
|
|
||||||
boot.kernelParams = [
|
|
||||||
"sysrq_always_enabled=1"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.loader.timeout = 2;
|
router = {
|
||||||
boot.loader.systemd-boot.configurationLimit = 5;
|
enableDesktop = false;
|
||||||
boot.kernelPackages = pkgs.linuxKernel.packages.linux_6_12;
|
enableDhcpClient = true;
|
||||||
boot.growPartition = true;
|
wanMAC = "bc:24:11:4f:c9:c4";
|
||||||
|
lanMAC = "bc:24:11:83:d8:de";
|
||||||
|
wanLL = "fe80::be24:11ff:fe4f:c9c4";
|
||||||
|
lanLL = "fe80::be24:11ff:fe83:d8de";
|
||||||
|
defaultToken = 1;
|
||||||
|
};
|
||||||
|
|
||||||
networking.hostName = "grouter";
|
networking.hostName = "grouter";
|
||||||
|
|
||||||
# Enable the X11 windowing system.
|
|
||||||
# You can disable this if you're only using the Wayland session.
|
|
||||||
services.xserver.enable = false;
|
|
||||||
|
|
||||||
# Enable the KDE Plasma Desktop Environment.
|
|
||||||
# Useful for debugging with wireshark.
|
|
||||||
hardware.graphics.enable = true;
|
|
||||||
services.displayManager.sddm.enable = enableDesktop;
|
|
||||||
services.displayManager.sddm.wayland.enable = enableDesktop;
|
|
||||||
services.desktopManager.plasma6.enable = enableDesktop;
|
|
||||||
# No need for audio in VM
|
|
||||||
services.pipewire.enable = false;
|
|
||||||
|
|
||||||
# VM services
|
|
||||||
services.qemuGuest.enable = true;
|
|
||||||
services.spice-vdagentd.enable = true;
|
|
||||||
|
|
||||||
security.sudo.wheelNeedsPassword = false;
|
|
||||||
|
|
||||||
programs.firefox.enable = true;
|
|
||||||
programs.fish.enable = true;
|
|
||||||
programs.git.enable = true;
|
|
||||||
programs.neovim.enable = true;
|
|
||||||
programs.bat.enable = true;
|
|
||||||
programs.htop.enable = true;
|
|
||||||
programs.wireshark.enable = true;
|
|
||||||
programs.wireshark.package = pkgs.wireshark; # wireshark-cli by default
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
dust
|
|
||||||
eza
|
|
||||||
fastfetch
|
|
||||||
fd
|
|
||||||
kdePackages.kate
|
|
||||||
ldns
|
|
||||||
lsof
|
|
||||||
micro
|
|
||||||
mpv
|
|
||||||
openssl
|
|
||||||
ripgrep
|
|
||||||
rustscan
|
|
||||||
starship
|
|
||||||
tealdeer
|
|
||||||
transcrypt
|
|
||||||
waypipe
|
|
||||||
whois
|
|
||||||
wireguard-tools
|
|
||||||
];
|
|
||||||
|
|
||||||
# This value determines the NixOS release from which the default
|
|
||||||
# settings for stateful data, like file locations and database versions
|
|
||||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
|
||||||
# this value at the release version of the first install of this system.
|
|
||||||
# Before changing this value read the documentation for this option
|
|
||||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
|
||||||
system.stateVersion = "24.11"; # Did you read the comment?
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
U2FsdGVkX1/MGwxIMmhbZuPqJUZzex9v5tTuiOrEvDVldI7xY0edUy9Ii5udFLXt
|
U2FsdGVkX1+eMFkQxarJDGLkX0zXyMRPukeRNvzd/BJ0XDAUZ2EeZvQnZw8U53Xz
|
||||||
AbxShsH43FH1ucgygKDlKTB/yXZWDoDVhjdgLFjaBtAt0xyAL9Doet844oDVhbbO
|
W97X4rvT+K/NQ7FVCYfOg1XpQhzlSiC9z1M4WLmPRutUgsDY5n5RFJu2R8K5DAfi
|
||||||
FqOwXHMd+PE23rgqiCscsA==
|
sAPcxiQUGVKrmDUva16yNqoR2Dkx2XE9iW1hpkfGFYVUK+QKIBkUEowQQlJJ1Wg1
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 D2MY/A Kj69kavxx+ATNHP5pX0JtGggU76f9uRwkZp2HbjwiWc
|
|
||||||
SbU3jIcQzUzaQjRHzVSoW1WKiUj+1ijbkUKqVb406fY
|
|
||||||
--- vMV0TcchFvxw1xetQQZ0xVi2KwjLFRfZBM1gl7BGbGI
|
|
||||||
<EFBFBD><EFBFBD>1<10><><EFBFBD><EFBFBD>K<EFBFBD><<3C>
|
|
||||||
@@ -45,7 +45,7 @@ in {
|
|||||||
enable = true;
|
enable = true;
|
||||||
type = "fcitx5";
|
type = "fcitx5";
|
||||||
fcitx5.waylandFrontend = true;
|
fcitx5.waylandFrontend = true;
|
||||||
fcitx5.plasma6Support = true;
|
# fcitx5.plasma6Support = true;
|
||||||
fcitx5.addons = [ pkgs.fcitx5-mozc ];
|
fcitx5.addons = [ pkgs.fcitx5-mozc ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
92
modules/router/default.nix
Normal file
92
modules/router/default.nix
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
vars = import ./vars.nix config;
|
||||||
|
enableDesktop = config.router.enableDesktop;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ # Include the results of the hardware scan.
|
||||||
|
./opts.nix
|
||||||
|
./ifconfig.nix
|
||||||
|
./wireguard.nix
|
||||||
|
./firewall.nix
|
||||||
|
./dns.nix
|
||||||
|
./kea.nix
|
||||||
|
./glance.nix
|
||||||
|
./services.nix
|
||||||
|
];
|
||||||
|
# Secrix for secrets management
|
||||||
|
secrix.hostPubKey = vars.pubkey;
|
||||||
|
|
||||||
|
# Bootloader.
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = false;
|
||||||
|
boot.kernelParams = [
|
||||||
|
"sysrq_always_enabled=1"
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.loader.timeout = 2;
|
||||||
|
boot.loader.systemd-boot.configurationLimit = 5;
|
||||||
|
boot.kernelPackages = pkgs.linuxKernel.packages.linux_6_12;
|
||||||
|
boot.growPartition = true;
|
||||||
|
|
||||||
|
# Enable the X11 windowing system.
|
||||||
|
# You can disable this if you're only using the Wayland session.
|
||||||
|
services.xserver.enable = false;
|
||||||
|
|
||||||
|
# Enable the KDE Plasma Desktop Environment.
|
||||||
|
# Useful for debugging with wireshark.
|
||||||
|
hardware.graphics.enable = true;
|
||||||
|
services.xserver.desktopManager.xfce.enable = enableDesktop;
|
||||||
|
services.xserver.desktopManager.xfce.enableWaylandSession = enableDesktop;
|
||||||
|
# services.displayManager.sddm.enable = enableDesktop;
|
||||||
|
# services.displayManager.sddm.wayland.enable = enableDesktop;
|
||||||
|
# services.desktopManager.plasma6.enable = enableDesktop;
|
||||||
|
# No need for audio in VM
|
||||||
|
services.pipewire.enable = false;
|
||||||
|
|
||||||
|
# VM services
|
||||||
|
services.qemuGuest.enable = true;
|
||||||
|
services.spice-vdagentd.enable = true;
|
||||||
|
|
||||||
|
security.sudo.wheelNeedsPassword = false;
|
||||||
|
|
||||||
|
programs.firefox.enable = true;
|
||||||
|
programs.fish.enable = true;
|
||||||
|
programs.git.enable = true;
|
||||||
|
programs.neovim.enable = true;
|
||||||
|
programs.bat.enable = true;
|
||||||
|
programs.htop.enable = true;
|
||||||
|
programs.wireshark.enable = true;
|
||||||
|
programs.wireshark.package = pkgs.wireshark; # wireshark-cli by default
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
dust
|
||||||
|
eza
|
||||||
|
fastfetch
|
||||||
|
fd
|
||||||
|
kdePackages.kate
|
||||||
|
ldns
|
||||||
|
lsof
|
||||||
|
micro
|
||||||
|
mpv
|
||||||
|
openssl
|
||||||
|
ripgrep
|
||||||
|
rustscan
|
||||||
|
starship
|
||||||
|
tealdeer
|
||||||
|
transcrypt
|
||||||
|
wakeonlan
|
||||||
|
waypipe
|
||||||
|
whois
|
||||||
|
wireguard-tools
|
||||||
|
];
|
||||||
|
|
||||||
|
# This value determines the NixOS release from which the default
|
||||||
|
# settings for stateful data, like file locations and database versions
|
||||||
|
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||||
|
# this value at the release version of the first install of this system.
|
||||||
|
# Before changing this value read the documentation for this option
|
||||||
|
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||||
|
system.stateVersion = "24.11"; # Did you read the comment?
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
vars = import ./vars.nix;
|
vars = import ./vars.nix config;
|
||||||
domain = vars.domain;
|
domain = vars.domain;
|
||||||
ldomain = vars.ldomain;
|
ldomain = vars.ldomain;
|
||||||
sysdomain = vars.sysdomain;
|
sysdomain = vars.sysdomain;
|
||||||
@@ -28,6 +28,8 @@ let
|
|||||||
"|woodpecker."
|
"|woodpecker."
|
||||||
"||pgrok."
|
"||pgrok."
|
||||||
"|sync."
|
"|sync."
|
||||||
|
"|minecruft."
|
||||||
|
"|n8n."
|
||||||
];
|
];
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
@@ -80,11 +82,14 @@ in
|
|||||||
"|etappi.${sysdomain}^$dnsrewrite=${ifs.lan.p4}.12"
|
"|etappi.${sysdomain}^$dnsrewrite=${ifs.lan.p4}.12"
|
||||||
"|etappi.${sysdomain}^$dnsrewrite=${ifs.lan.ulaPrefix}::12:1"
|
"|etappi.${sysdomain}^$dnsrewrite=${ifs.lan.ulaPrefix}::12:1"
|
||||||
|
|
||||||
|
"|hass.${domain}^$dnsrewrite=${ifs.lan.ulaAddr}"
|
||||||
|
|
||||||
# Lab DNS rewrites
|
# Lab DNS rewrites
|
||||||
"||lab.${domain}^$dnsrewrite=etappi.${sysdomain}"
|
"||lab.${domain}^$dnsrewrite=etappi.${sysdomain}"
|
||||||
|
|
||||||
# Allowed exceptions
|
# Allowed exceptions
|
||||||
"@@||googleads.g.doubleclick.net"
|
"@@||googleads.g.doubleclick.net"
|
||||||
|
"@@||stats.grafana.org"
|
||||||
]
|
]
|
||||||
# Alpina DNS rewrites
|
# Alpina DNS rewrites
|
||||||
++ map (host: "${host}${domain}^$dnsrewrite=debbi.${sysdomain}") alpinaDomains;
|
++ map (host: "${host}${domain}^$dnsrewrite=debbi.${sysdomain}") alpinaDomains;
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
vars = import ./vars.nix;
|
vars = import ./vars.nix config;
|
||||||
links = vars.links;
|
links = vars.links;
|
||||||
ifs = vars.ifs;
|
ifs = vars.ifs;
|
||||||
pdFromWan = vars.pdFromWan;
|
pdFromWan = vars.pdFromWan;
|
||||||
@@ -56,6 +56,12 @@ in
|
|||||||
udp . 45608 : ${vars.extra.opnsense.addr4} . 45608,
|
udp . 45608 : ${vars.extra.opnsense.addr4} . 45608,
|
||||||
udp . 35848 : ${vars.extra.opnsense.addr4} . 35848,
|
udp . 35848 : ${vars.extra.opnsense.addr4} . 35848,
|
||||||
udp . 48425 : ${vars.extra.opnsense.addr4} . 48425,
|
udp . 48425 : ${vars.extra.opnsense.addr4} . 48425,
|
||||||
|
# Amnezia VPN server
|
||||||
|
udp . 37138 : ${vars.extra.amnezia.addr4} . 37138,
|
||||||
|
# Minecruft server
|
||||||
|
tcp . 25565 : ${vars.extra.minecruft.addr4} . 25565,
|
||||||
|
udp . 25565 : ${vars.extra.minecruft.addr4} . 25565,
|
||||||
|
udp . 24454 : ${vars.extra.minecruft.addr4} . 24454,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
vars = import ./vars.nix;
|
vars = import ./vars.nix config;
|
||||||
domain = vars.domain;
|
domain = vars.domain;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
vars = import ./vars.nix;
|
cfg = config.router;
|
||||||
|
vars = import ./vars.nix config;
|
||||||
links = vars.links;
|
links = vars.links;
|
||||||
ifs = vars.ifs;
|
ifs = vars.ifs;
|
||||||
pdFromWan = vars.pdFromWan;
|
pdFromWan = vars.pdFromWan;
|
||||||
@@ -57,7 +58,7 @@ in
|
|||||||
# https://github.com/systemd/systemd/issues/22571
|
# https://github.com/systemd/systemd/issues/22571
|
||||||
# https://github.com/systemd/systemd/issues/22571#issuecomment-2094905496
|
# https://github.com/systemd/systemd/issues/22571#issuecomment-2094905496
|
||||||
# https://gist.github.com/csamsel/0f8cca3b2e64d7e4cc47819ec5ba9396
|
# https://gist.github.com/csamsel/0f8cca3b2e64d7e4cc47819ec5ba9396
|
||||||
networking.dhcpcd.enable = true;
|
networking.dhcpcd.enable = cfg.enableDhcpClient;
|
||||||
networking.dhcpcd.allowInterfaces = [ ifs.wan.name ];
|
networking.dhcpcd.allowInterfaces = [ ifs.wan.name ];
|
||||||
networking.dhcpcd.extraConfig = ''
|
networking.dhcpcd.extraConfig = ''
|
||||||
debug
|
debug
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
vars = import ./vars.nix;
|
vars = import ./vars.nix config;
|
||||||
ldomain = vars.ldomain;
|
ldomain = vars.ldomain;
|
||||||
ifs = vars.ifs;
|
ifs = vars.ifs;
|
||||||
|
|
||||||
69
modules/router/opts.nix
Normal file
69
modules/router/opts.nix
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
{ lib, config, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
router = {
|
||||||
|
enableDesktop = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "Enable desktop environment for debugging";
|
||||||
|
};
|
||||||
|
|
||||||
|
enableDhcpClient = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "Enable DHCP client (should only be set on the main router)";
|
||||||
|
};
|
||||||
|
|
||||||
|
wanMAC = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
example = "bc:24:11:4f:c9:c4";
|
||||||
|
description = "WAN interface MAC address";
|
||||||
|
};
|
||||||
|
|
||||||
|
lanMAC = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
example = "bc:24:11:83:d8:de";
|
||||||
|
description = "LAN interface MAC address";
|
||||||
|
};
|
||||||
|
|
||||||
|
wanLL = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
example = "fe80::be24:11ff:fe4f:c9c4";
|
||||||
|
description = "WAN IPv6 link-local address";
|
||||||
|
};
|
||||||
|
|
||||||
|
lanLL = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
example = "fe80::be24:11ff:fe83:d8de";
|
||||||
|
description = "LAN IPv6 link-local address";
|
||||||
|
};
|
||||||
|
|
||||||
|
defaultToken = mkOption {
|
||||||
|
type = types.int;
|
||||||
|
default = 1;
|
||||||
|
description = "Default token for interface addressing";
|
||||||
|
};
|
||||||
|
|
||||||
|
wanAddr4 = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
example = "192.168.1.61";
|
||||||
|
description = "WAN IPv4 address";
|
||||||
|
};
|
||||||
|
|
||||||
|
wanGw4 = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
example = "192.168.1.254";
|
||||||
|
description = "WAN IPv4 gateway";
|
||||||
|
};
|
||||||
|
|
||||||
|
pdFromWan = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
example = "2001:db8:0:000";
|
||||||
|
description = "IPv6 prefix delegation from ISP (/60)";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
BIN
modules/router/secrets/cf-api-key.age
Normal file
BIN
modules/router/secrets/cf-api-key.age
Normal file
Binary file not shown.
@@ -1,6 +1,6 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
vars = import ./vars.nix;
|
vars = import ./vars.nix config;
|
||||||
domain = vars.domain;
|
domain = vars.domain;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
@@ -58,27 +58,36 @@ in
|
|||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.caddy.withPlugins {
|
package = pkgs.caddy.withPlugins {
|
||||||
plugins = [ "github.com/caddy-dns/cloudflare@v0.2.1" ];
|
plugins = [ "github.com/caddy-dns/cloudflare@v0.2.1" ];
|
||||||
hash = "sha256-Gsuo+ripJSgKSYOM9/yl6Kt/6BFCA6BuTDvPdteinAI=";
|
hash = "sha256-Dvifm7rRwFfgXfcYvXcPDNlMaoxKd5h4mHEK6kJ+T4A=";
|
||||||
};
|
};
|
||||||
virtualHosts."grouter.${domain}".extraConfig = ''
|
virtualHosts."*.${domain}".extraConfig = ''
|
||||||
encode
|
encode
|
||||||
tls {
|
tls {
|
||||||
dns cloudflare {env.CF_API_KEY}
|
dns cloudflare {env.CF_API_KEY}
|
||||||
resolvers 1.1.1.1
|
resolvers 1.1.1.1
|
||||||
}
|
}
|
||||||
@grafana path /grafana /grafana/*
|
|
||||||
handle @grafana {
|
@grouter host grouter.${domain}
|
||||||
reverse_proxy localhost:${toString config.services.grafana.settings.server.http_port}
|
handle @grouter {
|
||||||
}
|
@grafana path /grafana /grafana/*
|
||||||
redir /adghome /adghome/
|
handle @grafana {
|
||||||
handle_path /adghome/* {
|
reverse_proxy localhost:${toString config.services.grafana.settings.server.http_port}
|
||||||
reverse_proxy localhost:${toString config.services.adguardhome.port}
|
}
|
||||||
basic_auth {
|
redir /adghome /adghome/
|
||||||
Bob $2a$14$HsWmmzQTN68K3vwiRAfiUuqIjKoXEXaj9TOLUtG2mO1vFpdovmyBy
|
handle_path /adghome/* {
|
||||||
|
reverse_proxy localhost:${toString config.services.adguardhome.port}
|
||||||
|
basic_auth {
|
||||||
|
Bob $2a$14$HsWmmzQTN68K3vwiRAfiUuqIjKoXEXaj9TOLUtG2mO1vFpdovmyBy
|
||||||
|
}
|
||||||
|
}
|
||||||
|
handle /* {
|
||||||
|
reverse_proxy localhost:${toString config.services.glance.settings.server.port}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
handle /* {
|
|
||||||
reverse_proxy localhost:${toString config.services.glance.settings.server.port}
|
@hass host hass.${domain}
|
||||||
|
handle @hass {
|
||||||
|
reverse_proxy homeassistant.4.lab.l.cazzzer.com:8123
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
|
config:
|
||||||
let
|
let
|
||||||
private = import ./private.nix;
|
cfg = config.router;
|
||||||
|
|
||||||
mkIfConfig = {
|
mkIfConfig = {
|
||||||
name_,
|
name_,
|
||||||
domain_,
|
domain_,
|
||||||
@@ -10,7 +10,7 @@ let
|
|||||||
p6Size_ ? 64,
|
p6Size_ ? 64,
|
||||||
ulaPrefix_, # /64
|
ulaPrefix_, # /64
|
||||||
ulaSize_ ? 64,
|
ulaSize_ ? 64,
|
||||||
token? 1,
|
token? cfg.defaultToken,
|
||||||
ip6Token_? "::${toString token}",
|
ip6Token_? "::${toString token}",
|
||||||
ulaToken_? "::${toString token}",
|
ulaToken_? "::${toString token}",
|
||||||
}: rec {
|
}: rec {
|
||||||
@@ -41,21 +41,21 @@ rec {
|
|||||||
ldomain = "l.${domain}";
|
ldomain = "l.${domain}";
|
||||||
sysdomain = "sys.${domain}";
|
sysdomain = "sys.${domain}";
|
||||||
links = {
|
links = {
|
||||||
wanMAC = "bc:24:11:4f:c9:c4";
|
wanMAC = cfg.wanMAC;
|
||||||
lanMAC = "bc:24:11:83:d8:de";
|
lanMAC = cfg.lanMAC;
|
||||||
wanLL = "fe80::be24:11ff:fe4f:c9c4";
|
wanLL = cfg.wanLL;
|
||||||
lanLL = "fe80::be24:11ff:fe83:d8de";
|
lanLL = cfg.lanLL;
|
||||||
};
|
};
|
||||||
|
|
||||||
p4 = "10.17"; # .0.0/16
|
p4 = "10.17"; # .0.0/16
|
||||||
pdFromWan = private.pdFromWan; # ::/60
|
pdFromWan = cfg.pdFromWan; # ::/60
|
||||||
ulaPrefix = "fdab:07d3:581d"; # ::/48
|
ulaPrefix = "fdab:07d3:581d"; # ::/48
|
||||||
ifs = rec {
|
ifs = rec {
|
||||||
wan = rec {
|
wan = rec {
|
||||||
name = "wan";
|
name = "wan";
|
||||||
addr4 = private.wanAddr4;
|
addr4 = cfg.wanAddr4;
|
||||||
addr4Sized = "${addr4}/23";
|
addr4Sized = "${addr4}/24";
|
||||||
gw4 = private.wanGw4;
|
gw4 = cfg.wanGw4;
|
||||||
};
|
};
|
||||||
lan = mkIfConfig {
|
lan = mkIfConfig {
|
||||||
name_ = "lan";
|
name_ = "lan";
|
||||||
@@ -77,7 +77,7 @@ rec {
|
|||||||
p4_ = "${p4}.20"; # .0/24
|
p4_ = "${p4}.20"; # .0/24
|
||||||
p6_ = "${pdFromWan}0"; # ::/64 managed by Att box
|
p6_ = "${pdFromWan}0"; # ::/64 managed by Att box
|
||||||
ulaPrefix_ = "${ulaPrefix}:0020"; # ::/64
|
ulaPrefix_ = "${ulaPrefix}:0020"; # ::/64
|
||||||
ip6Token_ = "::1:1"; # override ipv6 for lan20, since the Att box uses ::1 here
|
ip6Token_ = "::1:${toString cfg.defaultToken}"; # override ipv6 for lan20, since the Att box uses ::1 here
|
||||||
};
|
};
|
||||||
lan30 = mkIfConfig {
|
lan30 = mkIfConfig {
|
||||||
name_ = "${lan.name}.30";
|
name_ = "${lan.name}.30";
|
||||||
@@ -135,5 +135,7 @@ rec {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
amnezia.addr4 = "${ifs.lan10.p4}.31";
|
||||||
|
minecruft.addr4 = "${ifs.lan.p4}.11";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
vars = import ./vars.nix;
|
vars = import ./vars.nix config;
|
||||||
wg0 = vars.ifs.wg0;
|
wg0 = vars.ifs.wg0;
|
||||||
|
|
||||||
peerIps = ifObj: token: [
|
peerIps = ifObj: token: [
|
||||||
@@ -28,7 +28,7 @@ in {
|
|||||||
inherit
|
inherit
|
||||||
(pkgs)
|
(pkgs)
|
||||||
noto-fonts
|
noto-fonts
|
||||||
noto-fonts-emoji
|
noto-fonts-color-emoji
|
||||||
noto-fonts-cjk-sans
|
noto-fonts-cjk-sans
|
||||||
noto-fonts-cjk-serif
|
noto-fonts-cjk-serif
|
||||||
;
|
;
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
description = "Yura";
|
description = "Yura";
|
||||||
group = "cazzzer";
|
group = "cazzzer";
|
||||||
extraGroups = [ "wheel" ]
|
extraGroups = [ "wheel" "dialout" ]
|
||||||
++ lib.optionals config.networking.networkmanager.enable [ "networkmanager" ]
|
++ lib.optionals config.networking.networkmanager.enable [ "networkmanager" ]
|
||||||
++ lib.optionals config.virtualisation.docker.enable [ "docker" ]
|
++ lib.optionals config.virtualisation.docker.enable [ "docker" ]
|
||||||
++ lib.optionals config.programs.wireshark.enable [ "wireshark" ]
|
++ lib.optionals config.programs.wireshark.enable [ "wireshark" ]
|
||||||
|
|||||||
Reference in New Issue
Block a user