feat: homelab module and command
This commit is contained in:
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
35
modules/nixos/homelab/default.nix
Normal file
35
modules/nixos/homelab/default.nix
Normal 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
|
||||
];
|
||||
};
|
||||
}
|
||||
33
modules/nixos/homelab/forgejo.nix
Normal file
33
modules/nixos/homelab/forgejo.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user