feat: modules

This commit is contained in:
2025-07-17 13:37:33 +00:00
parent 8fb996501c
commit 20dcbdfdc4
16 changed files with 593 additions and 377 deletions

View File

@@ -0,0 +1,37 @@
{
inputs,
flake,
self,
}: {
pkgs,
lib,
config,
...
}: let
cfg = config.hectic.archetype.base;
in {
options.hectic.archetype.base.enable = lib.mkEnableOption "Enable archetupe.dev";
config = lib.mkIf cfg.enable {
programs.zsh.shellAliases = self.lib.sharedShellAliases;
programs.zsh.enable = true;
users.defaultUserShell = pkgs.zsh;
# Enable flakes and new 'nix' command
nix.settings.experimental-features = "nix-command flakes";
networking.firewall.enable = true;
environment = {
defaultPackages = [];
systemPackages = (with self.packages.${pkgs.system}; [
nvim-pager
]);
variables = {
PAGER = with self.packages.${pkgs.system}; "${nvim-pager}/bin/pager";
};
};
system.stateVersion = "25.05";
};
}

View File

@@ -0,0 +1 @@
{ ... }: {}

View File

@@ -0,0 +1,63 @@
{
inputs,
flake,
self,
}: {
pkgs,
modulesPath,
lib,
config,
...
}: let
cfg = config.hectic.archetype.dev;
in {
imports = [
(modulesPath + "/profiles/qemu-guest.nix")
];
options.hectic.archetype.dev.enable = lib.mkEnableOption "Enable archetupe.dev";
config = lib.mkIf cfg.enable {
hectic.archetype.base.enable = true;
services.getty.autologinUser = "root";
virtualisation.vmVariant.virtualisation = {
qemu.options = [
"-nographic"
"-display curses"
"-append console=ttyS0"
"-serial mon:stdio"
"-vga qxl"
];
forwardPorts = [
{
from = "host";
host.port = 40500;
guest.port = 22;
}
];
};
services.openssh = {
enable = true;
settings = {
PasswordAuthentication = false;
};
};
environment = {
systemPackages =
(with pkgs; [
curl
neovim
yq-go
jq
htop-vim
])
++ (with self.packages.${pkgs.system}; [
prettify-log
]);
};
};
}

View File

@@ -0,0 +1,29 @@
{
inputs,
flake,
self,
}:
{
pkgs,
lib,
config,
...
}: let
cfg = config.hectic.hardware.hetzner-cloud;
in {
options.hectic.hardware.hetzner-cloud.enable = lib.mkEnableOption "Enable hetzner-cloud hardware configurations";
config = lib.mkIf cfg.enable {
boot.loader.grub.device = "/dev/sda";
boot.initrd.availableKernelModules = [
"ata_piix"
"uhci_hcd"
"xen_blkfront"
] ++ (if pkgs.system != "aarch64-linux" then [ "vmw_pvscsi" ] else []);
boot.initrd.kernelModules = ["nvme"];
fileSystems."/" = {
device = "/dev/sda1";
fsType = "ext4";
};
};
}

View File

@@ -0,0 +1,37 @@
{
...
}:
{
inputs,
lib,
config,
...
}: let
cfg = config.hectic.hardware.lenovo-legion;
hasDisko = false;
in {
options.hectic.hardware.lenovo-legion = {
enable = lib.mkEnableOption "Enable lenovo-legion hardware configurations";
swapSize = lib.mkOption {
type = lib.types.either (lib.types.enum [ "100%" ]) (lib.types.strMatching "[0-9]+[KMGTP]?");
default = "0";
description = ''
Size of the partition, in sgdisk format.
sets end automatically with the + prefix
can be 100% for the whole remaining disk, will be done last in that case.
'';
};
device = lib.mkOption {
type = lib.types.str;
default = "0";
description = ''
Size of the partition, in sgdisk format.
sets end automatically with the + prefix
can be 100% for the whole remaining disk, will be done last in that case.
'';
};
};
config = lib.mkIf cfg.enable {
};
}