From c99aa1ebc6661982470303d5efbe71cb29de9de7 Mon Sep 17 00:00:00 2001 From: "Gustavo \"Guz\" L. de Mello" Date: Thu, 25 Jan 2024 00:26:41 -0300 Subject: [PATCH] feat: homelab module and command --- hosts/homex/configuration.nix | 13 ++++++++++++ modules/nixos/homelab/default.nix | 35 +++++++++++++++++++++++++++++++ modules/nixos/homelab/forgejo.nix | 33 +++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 modules/nixos/homelab/default.nix create mode 100644 modules/nixos/homelab/forgejo.nix diff --git a/hosts/homex/configuration.nix b/hosts/homex/configuration.nix index 6adeb6e..27e5d21 100644 --- a/hosts/homex/configuration.nix +++ b/hosts/homex/configuration.nix @@ -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; } + diff --git a/modules/nixos/homelab/default.nix b/modules/nixos/homelab/default.nix new file mode 100644 index 0000000..3c3e71d --- /dev/null +++ b/modules/nixos/homelab/default.nix @@ -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 + ]; + }; +} diff --git a/modules/nixos/homelab/forgejo.nix b/modules/nixos/homelab/forgejo.nix new file mode 100644 index 0000000..f8f55e8 --- /dev/null +++ b/modules/nixos/homelab/forgejo.nix @@ -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"; + }; + }; + }; +}