trator terranix config functional; move disko configs to individual outputs; touching up trantor
This commit is contained in:
parent
5899e42fa4
commit
716ed5cc53
19 changed files with 298 additions and 193 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -2,6 +2,7 @@
|
||||||
result
|
result
|
||||||
result-*
|
result-*
|
||||||
.direnv/
|
.direnv/
|
||||||
|
oci-trantor/
|
||||||
|
|
||||||
# Personal notes and temporary files
|
# Personal notes and temporary files
|
||||||
todo.md
|
todo.md
|
||||||
|
|
|
||||||
75
disko/io.nix
Normal file
75
disko/io.nix
Normal file
|
|
@ -0,0 +1,75 @@
|
||||||
|
{
|
||||||
|
disko.devices.disk.main = {
|
||||||
|
type = "disk";
|
||||||
|
device = "/dev/disk/by-id/mmc-hDEaP3_0x1041b689";
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
ESP = {
|
||||||
|
priority = 1;
|
||||||
|
name = "ESP";
|
||||||
|
start = "1MiB";
|
||||||
|
end = "1GiB";
|
||||||
|
type = "EF00";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "vfat";
|
||||||
|
mountpoint = "/boot/efi";
|
||||||
|
mountOptions = [
|
||||||
|
"noatime"
|
||||||
|
"fmask=0077"
|
||||||
|
"dmask=0077"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
cryptroot = {
|
||||||
|
priority = 2;
|
||||||
|
name = "root";
|
||||||
|
size = "100%";
|
||||||
|
content = {
|
||||||
|
type = "luks";
|
||||||
|
name = "cryptroot";
|
||||||
|
content = {
|
||||||
|
type = "btrfs";
|
||||||
|
extraArgs = [ "-f" ];
|
||||||
|
subvolumes = {
|
||||||
|
"@root" = {
|
||||||
|
mountpoint = "/";
|
||||||
|
mountOptions = [
|
||||||
|
"noatime"
|
||||||
|
"compress=zstd"
|
||||||
|
"subvol=@root"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"@home" = {
|
||||||
|
mountpoint = "/home";
|
||||||
|
mountOptions = [
|
||||||
|
"noatime"
|
||||||
|
"compress=zstd"
|
||||||
|
"subvol=@home"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"@nix" = {
|
||||||
|
mountpoint = "/nix";
|
||||||
|
mountOptions = [
|
||||||
|
"noatime"
|
||||||
|
"compress=zstd"
|
||||||
|
"subvol=@nix"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"@persistent" = {
|
||||||
|
mountpoint = "/persistent";
|
||||||
|
mountOptions = [
|
||||||
|
"noatime"
|
||||||
|
"compress=zstd"
|
||||||
|
"subvol=@persistent"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
61
disko/trantor.nix
Normal file
61
disko/trantor.nix
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
{
|
||||||
|
disko.devices.disk.main = {
|
||||||
|
type = "disk";
|
||||||
|
device = "/dev/disk/by-id/scsi-36067d367fe184830a89bbe708c7b1066";
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
ESP = {
|
||||||
|
priority = 1;
|
||||||
|
name = "ESP";
|
||||||
|
start = "1MiB";
|
||||||
|
end = "512MiB";
|
||||||
|
type = "EF00";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "vfat";
|
||||||
|
mountpoint = "/boot/efi";
|
||||||
|
mountOptions = [
|
||||||
|
"noatime"
|
||||||
|
"fmask=0077"
|
||||||
|
"dmask=0077"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
root = {
|
||||||
|
priority = 2;
|
||||||
|
name = "root";
|
||||||
|
size = "100%";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "btrfs";
|
||||||
|
extraArgs = [ "-f" ];
|
||||||
|
subvolumes = {
|
||||||
|
"@root" = {
|
||||||
|
mountpoint = "/";
|
||||||
|
mountOptions = [
|
||||||
|
"noatime"
|
||||||
|
"compress=zstd"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"@nix" = {
|
||||||
|
mountpoint = "/nix";
|
||||||
|
mountOptions = [
|
||||||
|
"noatime"
|
||||||
|
"compress=zstd"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"@persistent" = {
|
||||||
|
mountpoint = "/persistent";
|
||||||
|
mountOptions = [
|
||||||
|
"noatime"
|
||||||
|
"compress=zstd"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
12
diskoConfigurations.nix
Normal file
12
diskoConfigurations.nix
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
{ inputs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.disko.flakeModule
|
||||||
|
];
|
||||||
|
|
||||||
|
flake.diskoConfigurations = {
|
||||||
|
io.modules = [ ./disko/io.nix ];
|
||||||
|
trantor.modules = [ ./disko/trantor.nix ];
|
||||||
|
};
|
||||||
|
}
|
||||||
53
flake.lock
generated
53
flake.lock
generated
|
|
@ -135,21 +135,18 @@
|
||||||
},
|
},
|
||||||
"disko": {
|
"disko": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": "nixpkgs_2"
|
||||||
"nixpkgs-stable"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1736864502,
|
"lastModified": 1761899396,
|
||||||
"narHash": "sha256-ItkIZyebGvNH2dK9jVGzJHGPtb6BSWLN8Gmef16NeY0=",
|
"narHash": "sha256-XOpKBp6HLzzMCbzW50TEuXN35zN5WGQREC7n34DcNMM=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "disko",
|
"repo": "disko",
|
||||||
"rev": "0141aabed359f063de7413f80d906e1d98c0c123",
|
"rev": "6f4cf5abbe318e4cd1e879506f6eeafd83f7b998",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"ref": "v1.11.0",
|
|
||||||
"repo": "disko",
|
"repo": "disko",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
|
@ -393,7 +390,7 @@
|
||||||
},
|
},
|
||||||
"niri": {
|
"niri": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": "nixpkgs_3",
|
||||||
"rust-overlay": "rust-overlay"
|
"rust-overlay": "rust-overlay"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
|
|
@ -415,7 +412,7 @@
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"niri-stable": "niri-stable",
|
"niri-stable": "niri-stable",
|
||||||
"niri-unstable": "niri-unstable",
|
"niri-unstable": "niri-unstable",
|
||||||
"nixpkgs": "nixpkgs_3",
|
"nixpkgs": "nixpkgs_4",
|
||||||
"nixpkgs-stable": "nixpkgs-stable",
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
"xwayland-satellite-stable": "xwayland-satellite-stable",
|
"xwayland-satellite-stable": "xwayland-satellite-stable",
|
||||||
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
||||||
|
|
@ -506,7 +503,7 @@
|
||||||
"nix-options-doc": {
|
"nix-options-doc": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils",
|
||||||
"nixpkgs": "nixpkgs_4",
|
"nixpkgs": "nixpkgs_5",
|
||||||
"rust-overlay": "rust-overlay_2"
|
"rust-overlay": "rust-overlay_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
|
|
@ -528,7 +525,7 @@
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat_2",
|
"flake-compat": "flake-compat_2",
|
||||||
"nix-options-doc": "nix-options-doc",
|
"nix-options-doc": "nix-options-doc",
|
||||||
"nixpkgs": "nixpkgs_5"
|
"nixpkgs": "nixpkgs_6"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1760856139,
|
"lastModified": 1760856139,
|
||||||
|
|
@ -608,6 +605,22 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1761880412,
|
||||||
|
"narHash": "sha256-QoJjGd4NstnyOG4mm4KXF+weBzA2AH/7gn1Pmpfcb0A=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "a7fc11be66bdfb5cdde611ee5ce381c183da8386",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1757967192,
|
"lastModified": 1757967192,
|
||||||
"narHash": "sha256-/aA9A/OBmnuOMgwfzdsXRusqzUpd8rQnQY8jtrHK+To=",
|
"narHash": "sha256-/aA9A/OBmnuOMgwfzdsXRusqzUpd8rQnQY8jtrHK+To=",
|
||||||
|
|
@ -623,7 +636,7 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_4": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1760878510,
|
"lastModified": 1760878510,
|
||||||
"narHash": "sha256-K5Osef2qexezUfs0alLvZ7nQFTGS9DL2oTVsIXsqLgs=",
|
"narHash": "sha256-K5Osef2qexezUfs0alLvZ7nQFTGS9DL2oTVsIXsqLgs=",
|
||||||
|
|
@ -639,7 +652,7 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_4": {
|
"nixpkgs_5": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1740695751,
|
"lastModified": 1740695751,
|
||||||
"narHash": "sha256-D+R+kFxy1KsheiIzkkx/6L63wEHBYX21OIwlFV8JvDs=",
|
"narHash": "sha256-D+R+kFxy1KsheiIzkkx/6L63wEHBYX21OIwlFV8JvDs=",
|
||||||
|
|
@ -655,7 +668,7 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_5": {
|
"nixpkgs_6": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1759070547,
|
"lastModified": 1759070547,
|
||||||
"narHash": "sha256-JVZl8NaVRYb0+381nl7LvPE+A774/dRpif01FKLrYFQ=",
|
"narHash": "sha256-JVZl8NaVRYb0+381nl7LvPE+A774/dRpif01FKLrYFQ=",
|
||||||
|
|
@ -671,7 +684,7 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_6": {
|
"nixpkgs_7": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1760878510,
|
"lastModified": 1760878510,
|
||||||
"narHash": "sha256-K5Osef2qexezUfs0alLvZ7nQFTGS9DL2oTVsIXsqLgs=",
|
"narHash": "sha256-K5Osef2qexezUfs0alLvZ7nQFTGS9DL2oTVsIXsqLgs=",
|
||||||
|
|
@ -687,7 +700,7 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_7": {
|
"nixpkgs_8": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1758690382,
|
"lastModified": 1758690382,
|
||||||
"narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=",
|
"narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=",
|
||||||
|
|
@ -703,7 +716,7 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_8": {
|
"nixpkgs_9": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1755615617,
|
"lastModified": 1755615617,
|
||||||
"narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=",
|
"narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=",
|
||||||
|
|
@ -800,7 +813,7 @@
|
||||||
"nix-flatpak": "nix-flatpak",
|
"nix-flatpak": "nix-flatpak",
|
||||||
"nix-index-database": "nix-index-database",
|
"nix-index-database": "nix-index-database",
|
||||||
"nixos-cli": "nixos-cli",
|
"nixos-cli": "nixos-cli",
|
||||||
"nixpkgs": "nixpkgs_6",
|
"nixpkgs": "nixpkgs_7",
|
||||||
"nixpkgs-stable": "nixpkgs-stable_2",
|
"nixpkgs-stable": "nixpkgs-stable_2",
|
||||||
"noctalia": "noctalia",
|
"noctalia": "noctalia",
|
||||||
"stylix": "stylix",
|
"stylix": "stylix",
|
||||||
|
|
@ -860,7 +873,7 @@
|
||||||
"firefox-gnome-theme": "firefox-gnome-theme",
|
"firefox-gnome-theme": "firefox-gnome-theme",
|
||||||
"flake-parts": "flake-parts_2",
|
"flake-parts": "flake-parts_2",
|
||||||
"gnome-shell": "gnome-shell",
|
"gnome-shell": "gnome-shell",
|
||||||
"nixpkgs": "nixpkgs_7",
|
"nixpkgs": "nixpkgs_8",
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
"systems": "systems_5",
|
"systems": "systems_5",
|
||||||
"tinted-foot": "tinted-foot",
|
"tinted-foot": "tinted-foot",
|
||||||
|
|
@ -1130,7 +1143,7 @@
|
||||||
"zen-browser": {
|
"zen-browser": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"home-manager": "home-manager_3",
|
"home-manager": "home-manager_3",
|
||||||
"nixpkgs": "nixpkgs_8"
|
"nixpkgs": "nixpkgs_9"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1760934351,
|
"lastModified": 1760934351,
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,7 @@
|
||||||
inputs.nixpkgs.follows = "nixpkgs-stable";
|
inputs.nixpkgs.follows = "nixpkgs-stable";
|
||||||
};
|
};
|
||||||
|
|
||||||
disko = {
|
disko.url = "github:nix-community/disko";
|
||||||
url = "github:nix-community/disko?ref=v1.11.0";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs-stable";
|
|
||||||
};
|
|
||||||
|
|
||||||
noctalia = {
|
noctalia = {
|
||||||
url = "github:noctalia-dev/noctalia-shell";
|
url = "github:noctalia-dev/noctalia-shell";
|
||||||
|
|
@ -63,13 +60,14 @@
|
||||||
];
|
];
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
|
./deploy.nix
|
||||||
./devShells.nix
|
./devShells.nix
|
||||||
|
./diskoConfigurations.nix
|
||||||
./homeConfigurations.nix
|
./homeConfigurations.nix
|
||||||
./nixosConfigurations.nix
|
./nixosConfigurations.nix
|
||||||
./nixosModules.nix
|
./nixosModules.nix
|
||||||
./overlays.nix
|
./overlays.nix
|
||||||
./packages.nix
|
./packages.nix
|
||||||
./deploy.nix
|
|
||||||
./terranixConfigurations.nix
|
./terranixConfigurations.nix
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,83 +0,0 @@
|
||||||
{ inputs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [ inputs.disko.nixosModules.default ];
|
|
||||||
|
|
||||||
disko.devices = {
|
|
||||||
disk = {
|
|
||||||
main = {
|
|
||||||
type = "disk";
|
|
||||||
device = "/dev/disk/by-id/mmc-hDEaP3_0x1041b689";
|
|
||||||
content = {
|
|
||||||
type = "gpt";
|
|
||||||
partitions = {
|
|
||||||
ESP = {
|
|
||||||
priority = 1;
|
|
||||||
name = "ESP";
|
|
||||||
start = "1MiB";
|
|
||||||
end = "1GiB";
|
|
||||||
type = "EF00";
|
|
||||||
content = {
|
|
||||||
type = "filesystem";
|
|
||||||
format = "vfat";
|
|
||||||
mountpoint = "/boot/efi";
|
|
||||||
mountOptions = [
|
|
||||||
"noatime"
|
|
||||||
"fmask=0077"
|
|
||||||
"dmask=0077"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
cryptroot = {
|
|
||||||
priority = 2;
|
|
||||||
name = "root";
|
|
||||||
size = "100%";
|
|
||||||
content = {
|
|
||||||
type = "luks";
|
|
||||||
name = "cryptroot";
|
|
||||||
content = {
|
|
||||||
type = "btrfs";
|
|
||||||
extraArgs = [ "-f" ];
|
|
||||||
subvolumes = {
|
|
||||||
"@root" = {
|
|
||||||
mountpoint = "/";
|
|
||||||
mountOptions = [
|
|
||||||
"noatime"
|
|
||||||
"compress=zstd"
|
|
||||||
"subvol=@root"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"@home" = {
|
|
||||||
mountpoint = "/home";
|
|
||||||
mountOptions = [
|
|
||||||
"noatime"
|
|
||||||
"compress=zstd"
|
|
||||||
"subvol=@home"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"@nix" = {
|
|
||||||
mountpoint = "/nix";
|
|
||||||
mountOptions = [
|
|
||||||
"noatime"
|
|
||||||
"compress=zstd"
|
|
||||||
"subvol=@nix"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"@persistent" = {
|
|
||||||
mountpoint = "/persistent";
|
|
||||||
mountOptions = [
|
|
||||||
"noatime"
|
|
||||||
"compress=zstd"
|
|
||||||
"subvol=@persistent"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -2,11 +2,15 @@
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
modulesPath,
|
modulesPath,
|
||||||
|
self,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
imports = [
|
||||||
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
self.diskoConfigurations.io
|
||||||
|
];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
initrd = {
|
initrd = {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{ inputs, ... }:
|
{ config, inputs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
|
@ -8,7 +8,11 @@
|
||||||
|
|
||||||
ephemeral = {
|
ephemeral = {
|
||||||
enable = true;
|
enable = true;
|
||||||
rootDevice = "/dev/mapper/cryptroot";
|
rootDevice =
|
||||||
|
if config.networking.hostName == "trantor" then
|
||||||
|
"/dev/disk/by-id/scsi-36067d367fe184830a89bbe708c7b1066"
|
||||||
|
else
|
||||||
|
"/dev/mapper/cryptroot";
|
||||||
rootSubvolume = "@root";
|
rootSubvolume = "@root";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,3 @@
|
||||||
{
|
{
|
||||||
boot = {
|
boot.initrd.systemd.enable = true;
|
||||||
loader.efi.efiSysMountPoint = "/boot";
|
|
||||||
initrd.systemd.enable = true;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
||||||
{ inputs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [ inputs.disko.nixosModules.default ];
|
|
||||||
|
|
||||||
disko.devices = {
|
|
||||||
disk = {
|
|
||||||
main = {
|
|
||||||
type = "disk";
|
|
||||||
device = "/dev/disk/by-id/scsi-3605e4addb4c640319c8c03436205530b";
|
|
||||||
content = {
|
|
||||||
type = "gpt";
|
|
||||||
partitions = {
|
|
||||||
boot = {
|
|
||||||
size = "512M";
|
|
||||||
type = "EF00";
|
|
||||||
content = {
|
|
||||||
type = "filesystem";
|
|
||||||
format = "vfat";
|
|
||||||
mountpoint = "/boot";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
root = {
|
|
||||||
size = "100%";
|
|
||||||
content = {
|
|
||||||
type = "filesystem";
|
|
||||||
format = "ext4";
|
|
||||||
mountpoint = "/";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,11 +1,15 @@
|
||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
modulesPath,
|
modulesPath,
|
||||||
|
self,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
|
imports = [
|
||||||
|
(modulesPath + "/profiles/qemu-guest.nix")
|
||||||
|
self.diskoConfigurations.trantor
|
||||||
|
];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
kernelModules = [ ];
|
kernelModules = [ ];
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,7 @@ in
|
||||||
system = "aarch64-linux";
|
system = "aarch64-linux";
|
||||||
tags = [
|
tags = [
|
||||||
"server"
|
"server"
|
||||||
|
"ephemeral"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
0
terranix/cloudflare/baduhai.dev.nix
Normal file
0
terranix/cloudflare/baduhai.dev.nix
Normal file
0
terranix/cloudflare/kernelpanic.space.nix
Normal file
0
terranix/cloudflare/kernelpanic.space.nix
Normal file
0
terranix/oci/terminus.nix
Normal file
0
terranix/oci/terminus.nix
Normal file
|
|
@ -3,16 +3,16 @@
|
||||||
{
|
{
|
||||||
terraform.required_providers.oci = {
|
terraform.required_providers.oci = {
|
||||||
source = "oracle/oci";
|
source = "oracle/oci";
|
||||||
version = "~> 5.0";
|
version = "~> 7.0";
|
||||||
};
|
};
|
||||||
|
|
||||||
provider.oci.region = "sa-saopaulo-1";
|
provider.oci.region = "sa-saopaulo-1";
|
||||||
|
|
||||||
terraform.backend.s3 = {
|
terraform.backend.s3 = {
|
||||||
bucket = "terraform-state";
|
bucket = "terraform-state";
|
||||||
key = "oci/homelab.tfstate";
|
key = "oci/trantor.tfstate";
|
||||||
region = "auto";
|
region = "auto";
|
||||||
endpoint = "https://<ACCOUNT_ID>.r2.cloudflarestorage.com";
|
endpoint = "https://fcdf920bde00c3d013ee541f984da70e.r2.cloudflarestorage.com";
|
||||||
skip_credentials_validation = true;
|
skip_credentials_validation = true;
|
||||||
skip_metadata_api_check = true;
|
skip_metadata_api_check = true;
|
||||||
skip_region_validation = true;
|
skip_region_validation = true;
|
||||||
|
|
@ -21,8 +21,13 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
variable = {
|
variable = {
|
||||||
|
tenancy_ocid = {
|
||||||
|
default = "ocid1.tenancy.oc1..aaaaaaaap3vfdz4piygqza6e6zqunbcuso43ddqfo3ydmpmnomidyghh7rvq";
|
||||||
|
type = "string";
|
||||||
|
};
|
||||||
|
|
||||||
compartment_name = {
|
compartment_name = {
|
||||||
default = "homelab";
|
default = "trantor";
|
||||||
type = "string";
|
type = "string";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -46,14 +51,12 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
oci_identity_tenancy.tenancy = { };
|
|
||||||
|
|
||||||
oci_identity_availability_domains.ads = {
|
oci_identity_availability_domains.ads = {
|
||||||
compartment_id = config.data.oci_identity_tenancy.tenancy.id;
|
compartment_id = config.variable.tenancy_ocid.default;
|
||||||
};
|
};
|
||||||
|
|
||||||
oci_core_images.ubuntu_arm = {
|
oci_core_images.ubuntu_arm = {
|
||||||
compartment_id = config.data.oci_identity_tenancy.tenancy.id;
|
compartment_id = config.variable.tenancy_ocid.default;
|
||||||
operating_system = "Canonical Ubuntu";
|
operating_system = "Canonical Ubuntu";
|
||||||
operating_system_version = "24.04";
|
operating_system_version = "24.04";
|
||||||
shape = "VM.Standard.A1.Flex";
|
shape = "VM.Standard.A1.Flex";
|
||||||
|
|
@ -63,34 +66,34 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
resource = {
|
resource = {
|
||||||
oci_identity_compartment.homelab = {
|
oci_identity_compartment.trantor = {
|
||||||
compartment_id = config.data.oci_identity_tenancy.tenancy.id;
|
compartment_id = config.variable.tenancy_ocid.default;
|
||||||
description = "Homelab infrastructure compartment";
|
description = "trantor infrastructure compartment";
|
||||||
name = config.variable.compartment_name.default;
|
name = config.variable.compartment_name.default;
|
||||||
};
|
};
|
||||||
|
|
||||||
oci_core_vcn.vcn = {
|
oci_core_vcn.vcn = {
|
||||||
compartment_id = config.resource.oci_identity_compartment.homelab.id;
|
compartment_id = config.resource.oci_identity_compartment.trantor "id";
|
||||||
cidr_blocks = [ config.variable.vcn_cidr.default ];
|
cidr_blocks = [ config.variable.vcn_cidr.default ];
|
||||||
display_name = "homelab-vcn";
|
display_name = "trantor-vcn";
|
||||||
dns_label = "homelab";
|
dns_label = "trantor";
|
||||||
};
|
};
|
||||||
|
|
||||||
oci_core_internet_gateway.ig = {
|
oci_core_internet_gateway.ig = {
|
||||||
compartment_id = config.resource.oci_identity_compartment.homelab.id;
|
compartment_id = config.resource.oci_identity_compartment.trantor "id";
|
||||||
vcn_id = config.resource.oci_core_vcn.vcn.id;
|
vcn_id = config.resource.oci_core_vcn.vcn "id";
|
||||||
display_name = "homelab-ig";
|
display_name = "trantor-ig";
|
||||||
enabled = true;
|
enabled = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
oci_core_route_table.rt = {
|
oci_core_route_table.rt = {
|
||||||
compartment_id = config.resource.oci_identity_compartment.homelab.id;
|
compartment_id = config.resource.oci_identity_compartment.trantor "id";
|
||||||
vcn_id = config.resource.oci_core_vcn.vcn.id;
|
vcn_id = config.resource.oci_core_vcn.vcn "id";
|
||||||
display_name = "homelab-rt";
|
display_name = "trantor-rt";
|
||||||
|
|
||||||
route_rules = [
|
route_rules = [
|
||||||
{
|
{
|
||||||
network_entity_id = config.resource.oci_core_internet_gateway.ig.id;
|
network_entity_id = config.resource.oci_core_internet_gateway.ig "id";
|
||||||
destination = "0.0.0.0/0";
|
destination = "0.0.0.0/0";
|
||||||
destination_type = "CIDR_BLOCK";
|
destination_type = "CIDR_BLOCK";
|
||||||
}
|
}
|
||||||
|
|
@ -98,9 +101,9 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
oci_core_security_list.sl = {
|
oci_core_security_list.sl = {
|
||||||
compartment_id = config.resource.oci_identity_compartment.homelab.id;
|
compartment_id = config.resource.oci_identity_compartment.trantor "id";
|
||||||
vcn_id = config.resource.oci_core_vcn.vcn.id;
|
vcn_id = config.resource.oci_core_vcn.vcn "id";
|
||||||
display_name = "homelab-sl";
|
display_name = "trantor-sl";
|
||||||
|
|
||||||
egress_security_rules = [
|
egress_security_rules = [
|
||||||
{
|
{
|
||||||
|
|
@ -138,23 +141,50 @@
|
||||||
max = 443;
|
max = 443;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
protocol = "6"; # TCP
|
||||||
|
source = "0.0.0.0/0";
|
||||||
|
stateless = false;
|
||||||
|
tcp_options = {
|
||||||
|
min = 25565;
|
||||||
|
max = 25565;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
protocol = "6"; # TCP
|
||||||
|
source = "0.0.0.0/0";
|
||||||
|
stateless = false;
|
||||||
|
tcp_options = {
|
||||||
|
min = 19132;
|
||||||
|
max = 19133;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
protocol = "17"; # UDP
|
||||||
|
source = "0.0.0.0/0";
|
||||||
|
stateless = false;
|
||||||
|
udp_options = {
|
||||||
|
min = 19132;
|
||||||
|
max = 19133;
|
||||||
|
};
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
oci_core_subnet.subnet = {
|
oci_core_subnet.subnet = {
|
||||||
compartment_id = config.resource.oci_identity_compartment.homelab.id;
|
compartment_id = config.resource.oci_identity_compartment.trantor "id";
|
||||||
vcn_id = config.resource.oci_core_vcn.vcn.id;
|
vcn_id = config.resource.oci_core_vcn.vcn "id";
|
||||||
cidr_block = config.variable.vcn_cidr.default;
|
cidr_block = config.variable.vcn_cidr.default;
|
||||||
display_name = "homelab-subnet";
|
display_name = "trantor-subnet";
|
||||||
dns_label = "subnet";
|
dns_label = "subnet";
|
||||||
route_table_id = config.resource.oci_core_route_table.rt.id;
|
route_table_id = config.resource.oci_core_route_table.rt "id";
|
||||||
security_list_ids = [ config.resource.oci_core_security_list.sl.id ];
|
security_list_ids = [ (config.resource.oci_core_security_list.sl "id") ];
|
||||||
prohibit_public_ip_on_vnic = false;
|
prohibit_public_ip_on_vnic = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
oci_core_instance.trantor = {
|
oci_core_instance.trantor = {
|
||||||
availability_domain = config.data.oci_identity_availability_domains.ads.availability_domains .0.name;
|
availability_domain = config.data.oci_identity_availability_domains.ads "availability_domains[0].name";
|
||||||
compartment_id = config.resource.oci_identity_compartment.homelab.id;
|
compartment_id = config.resource.oci_identity_compartment.trantor "id";
|
||||||
display_name = config.variable.instance_name.default;
|
display_name = config.variable.instance_name.default;
|
||||||
shape = "VM.Standard.A1.Flex";
|
shape = "VM.Standard.A1.Flex";
|
||||||
|
|
||||||
|
|
@ -165,12 +195,12 @@
|
||||||
|
|
||||||
source_details = {
|
source_details = {
|
||||||
source_type = "image";
|
source_type = "image";
|
||||||
source_id = config.data.oci_core_images.ubuntu_arm.images .0.id;
|
source_id = config.data.oci_core_images.ubuntu_arm "images[0].id";
|
||||||
boot_volume_size_in_gbs = 50;
|
boot_volume_size_in_gbs = 100;
|
||||||
};
|
};
|
||||||
|
|
||||||
create_vnic_details = {
|
create_vnic_details = {
|
||||||
subnet_id = config.resource.oci_core_subnet.subnet.id;
|
subnet_id = config.resource.oci_core_subnet.subnet "id";
|
||||||
display_name = "trantor-vnic";
|
display_name = "trantor-vnic";
|
||||||
assign_public_ip = true;
|
assign_public_ip = true;
|
||||||
hostname_label = config.variable.instance_name.default;
|
hostname_label = config.variable.instance_name.default;
|
||||||
|
|
@ -182,15 +212,35 @@
|
||||||
|
|
||||||
preserve_boot_volume = false;
|
preserve_boot_volume = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
oci_budget_budget.trantor_budget = {
|
||||||
|
compartment_id = config.variable.tenancy_ocid.default;
|
||||||
|
targets = [ (config.resource.oci_identity_compartment.trantor "id") ];
|
||||||
|
amount = 1;
|
||||||
|
reset_period = "MONTHLY";
|
||||||
|
display_name = "trantor-budget";
|
||||||
|
description = "Monthly budget for trantor compartment";
|
||||||
|
target_type = "COMPARTMENT";
|
||||||
|
};
|
||||||
|
|
||||||
|
oci_budget_alert_rule.daily_spend_alert = {
|
||||||
|
budget_id = config.resource.oci_budget_budget.trantor_budget "id";
|
||||||
|
type = "ACTUAL";
|
||||||
|
threshold = 5;
|
||||||
|
threshold_type = "PERCENTAGE";
|
||||||
|
display_name = "daily-spend-alert";
|
||||||
|
description = "Alert when daily spending exceeds $0.05";
|
||||||
|
message = "Daily spending has exceeded $0.05 in the trantor compartment";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
output = {
|
output = {
|
||||||
compartment_id = {
|
compartment_id = {
|
||||||
value = config.resource.oci_identity_compartment.homelab.id;
|
value = config.resource.oci_identity_compartment.trantor "id";
|
||||||
};
|
};
|
||||||
|
|
||||||
instance_public_ip = {
|
instance_public_ip = {
|
||||||
value = config.resource.oci_core_instance.trantor.public_ip;
|
value = config.resource.oci_core_instance.trantor "public_ip";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
0
terranix/tailscale/tailnet.nix
Normal file
0
terranix/tailscale/tailnet.nix
Normal file
|
|
@ -5,11 +5,15 @@
|
||||||
inputs.terranix.flakeModule
|
inputs.terranix.flakeModule
|
||||||
];
|
];
|
||||||
|
|
||||||
perSystem = {
|
perSystem =
|
||||||
terranix.terranixConfigurations = {
|
{ pkgs, ... }:
|
||||||
oci-homelab = {
|
|
||||||
modules = [ ./terranix/oci/homelab.nix ];
|
{
|
||||||
|
terranix.terranixConfigurations = {
|
||||||
|
oci-trantor = {
|
||||||
|
modules = [ ./terranix/oci/trantor.nix ];
|
||||||
|
terraformWrapper.package = pkgs.opentofu;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue