feat: homelab module and command

This commit is contained in:
Gustavo "Guz" L. de Mello
2024-01-25 00:26:41 -03:00
parent dd397f5020
commit c99aa1ebc6
3 changed files with 81 additions and 0 deletions

View File

@@ -8,11 +8,23 @@
imports = [
../../modules/nixos/systems/set-user.nix
../../modules/nixos/config/host.nix
../../modules/nixos/homelab
./hardware-configuration.nix
./network.nix
./users
];
homelab = {
enable = true;
flakeDir = "/home/guz/.nix#homex";
forgejo = {
enable = true;
};
};
services.tailscale.enable = true;
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
@@ -21,3 +33,4 @@
nixpkgs.config.allowUnfree = true;
}

View File

@@ -0,0 +1,35 @@
{ config, pkgs, lib, ... }:
let
cfg = config.homelab;
homelab = pkgs.writeShellScriptBin "homelab" ''
command="$1";
flakeDir="${toString cfg.flakeDir}";
if [[ "$command" == "build" ]]; then
shift 1;
sudo nixos-rebuild switch --flake "$flakeDir" "$@"
fi
'';
in
{
imports = [
];
options.homelab = with lib; with lib.types; {
enable = mkEnableOption "";
flakeDir = mkOption {
type = str;
};
storage = mkOption {
type = path;
default = /data/homelab;
description = "The Homelab central storage path";
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [
homelab
];
};
}

View File

@@ -0,0 +1,33 @@
{ config, lib, pkgs, ... }:
let
cfg = config.homelab.forgejo;
in
{
imports = [ ];
options.homelab.forgejo = with lib; with lib.types; {
enable = mkEnableOption "";
user = mkOption {
type = str;
default = "forgejo";
};
data = {
root = mkOption {
type = path;
default = config.homelab.storage + /forgejo;
};
};
};
config = lib.mkIf cfg.enable {
services.forgejo = {
enable = true;
user = cfg.user;
group = cfg.user;
stateDir = toString cfg.data.root;
database = {
user = cfg.user;
type = "sqlite3";
};
};
};
}