Migrated from multi repos to monorepo architecture.
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
# To test
|
||||
./fail2ban.nix
|
||||
./flatpaks.nix
|
||||
./numbus-cli.nix
|
||||
./ssh.nix
|
||||
./terminal.nix
|
||||
./updates.nix
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{ config, ... }:
|
||||
|
||||
{
|
||||
services.fail2ban.enable = true;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{ config, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
config = mkIf (services.flatpak.packages != []) {
|
||||
services.flatpak.enable = true;
|
||||
services.flatpak.update.auto.enable = true;
|
||||
services.flatpak.uninstallUnmanaged = true;
|
||||
|
||||
services.flatpak.remotes = mkOptionDefault [{
|
||||
name = "flathub";
|
||||
location = "https://dl.flathub.org/repo/flathub.flatpakrepo";
|
||||
}];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,155 @@
|
||||
{ pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
# Base script header and common setup for all device types
|
||||
baseScriptHeader = ''
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# The device type is baked into the script at build time
|
||||
readonly NUMBUS_DEVICE_TYPE="${deviceType}"
|
||||
|
||||
# Common utility function for consistent output
|
||||
numbus_echo() {
|
||||
echo "[Numbus CLI - $NUMBUS_DEVICE_TYPE] $*"
|
||||
}
|
||||
'';
|
||||
|
||||
# --- Device-specific script definitions ---
|
||||
|
||||
serverScript = baseScriptHeader + ''
|
||||
case "$1" in
|
||||
test)
|
||||
numbus_echo "Hello World! This is a Numbus Server."
|
||||
;;
|
||||
status)
|
||||
numbus_echo "Checking system status for Server..."
|
||||
numbus_echo "--- Podman Containers ---"
|
||||
podman ps || numbus_echo "No Podman containers found or Podman not running."
|
||||
systemctl list-units --type=service "numbus-*" --no-pager || numbus_echo "No Numbus services found."
|
||||
;;
|
||||
upgrade)
|
||||
numbus_echo "Pulling latest configuration and upgrading for Server..."
|
||||
# Add server-specific upgrade logic here (e.g., nixos-rebuild switch)
|
||||
;;
|
||||
*)
|
||||
numbus_echo "Numbus CLI (Server edition)"
|
||||
echo ""
|
||||
echo "Usage: numbus <command>"
|
||||
echo ""
|
||||
echo "Commands:"
|
||||
echo " test - Print a test message"
|
||||
numbus_echo " status - Show status of Numbus services (Podman, systemd)"
|
||||
numbus_echo " upgrade - Upgrade the server configuration"
|
||||
;;
|
||||
esac
|
||||
'';
|
||||
|
||||
backupScript = baseScriptHeader + ''
|
||||
case "$1" in
|
||||
test)
|
||||
numbus_echo "Hello World! This is a Numbus Backup Server."
|
||||
;;
|
||||
status)
|
||||
numbus_echo "Checking system status for Backup Server..."
|
||||
systemctl list-units --type=service "numbus-*" --no-pager || numbus_echo "No Numbus services found."
|
||||
# Add backup-specific status checks here (e.g., SnapRAID status, rsync jobs)
|
||||
;;
|
||||
restore)
|
||||
numbus_echo "Starting interactive restore wizard for Backup Server..."
|
||||
# Add backup-specific restore logic here
|
||||
;;
|
||||
upgrade)
|
||||
numbus_echo "Pulling latest configuration and upgrading for Backup Server..."
|
||||
# Add backup-specific upgrade logic here
|
||||
;;
|
||||
*)
|
||||
numbus_echo "Numbus CLI (Backup Server edition)"
|
||||
echo ""
|
||||
echo "Usage: numbus <command>"
|
||||
echo ""
|
||||
echo "Commands:"
|
||||
numbus_echo " test - Print a test message"
|
||||
numbus_echo " status - Show status of Numbus services"
|
||||
numbus_echo " restore - Start interactive restore wizard"
|
||||
numbus_echo " upgrade - Upgrade the backup server configuration"
|
||||
;;
|
||||
esac
|
||||
'';
|
||||
|
||||
computerScript = baseScriptHeader + ''
|
||||
case "$1" in
|
||||
test)
|
||||
numbus_echo "Hello World! This is a Numbus Computer."
|
||||
;;
|
||||
status)
|
||||
numbus_echo "Checking system status for Computer..."
|
||||
systemctl list-units --type=service "numbus-*" --no-pager || numbus_echo "No Numbus services found."
|
||||
# Add computer-specific status checks (e.g., GPU status, Flatpak updates)
|
||||
;;
|
||||
upgrade)
|
||||
numbus_echo "Pulling latest configuration and upgrading for Computer..."
|
||||
# Add computer-specific upgrade logic here
|
||||
;;
|
||||
*)
|
||||
numbus_echo "Numbus CLI (Computer edition)"
|
||||
echo ""
|
||||
echo "Usage: numbus <command>"
|
||||
echo ""
|
||||
echo "Commands:"
|
||||
numbus_echo " test - Print a test message"
|
||||
numbus_echo " status - Show status of Numbus services"
|
||||
numbus_echo " upgrade - Upgrade the computer configuration"
|
||||
;;
|
||||
esac
|
||||
'';
|
||||
|
||||
tvScript = baseScriptHeader + ''
|
||||
case "$1" in
|
||||
test)
|
||||
numbus_echo "Hello World! This is a Numbus TV."
|
||||
;;
|
||||
status)
|
||||
numbus_echo "Checking system status for TV..."
|
||||
systemctl list-units --type=service "numbus-*" --no-pager || numbus_echo "No Numbus services found."
|
||||
# Add TV-specific status checks (e.g., media server status, remote connectivity)
|
||||
;;
|
||||
remote)
|
||||
numbus_echo "Pairing a new Bluetooth remote for TV..."
|
||||
# Add TV-specific remote pairing logic here
|
||||
;;
|
||||
upgrade)
|
||||
numbus_echo "Pulling latest configuration and upgrading for TV..."
|
||||
# Add TV-specific upgrade logic here
|
||||
;;
|
||||
*)
|
||||
numbus_echo "Numbus CLI (TV edition)"
|
||||
echo ""
|
||||
echo "Usage: numbus <command>"
|
||||
echo ""
|
||||
numbus_echo "Commands:"
|
||||
numbus_echo " test - Print a test message"
|
||||
numbus_echo " status - Show status of Numbus services"
|
||||
numbus_echo " remote - Pair a new Bluetooth remote"
|
||||
numbus_echo " upgrade - Upgrade the TV configuration"
|
||||
;;
|
||||
esac
|
||||
'';
|
||||
|
||||
# Use lib.switch to select the correct script based on deviceType
|
||||
selectedScript = lib.switch deviceType {
|
||||
server = serverScript;
|
||||
backup = backupScript;
|
||||
computer = computerScript;
|
||||
tv = tvScript;
|
||||
} (throw "Unknown Numbus device type: ${deviceType}"); # Fail if an unknown deviceType is encountered
|
||||
|
||||
# Define the numbus-cli package using the selected script
|
||||
numbus = pkgs.writeShellScriptBin "numbus" selectedScript;
|
||||
|
||||
in {
|
||||
environment.systemPackages = [ numbus ];
|
||||
|
||||
# Add a useful alias so people can check the type via env
|
||||
environment.variables.NUMBUS_DEVICE_TYPE = deviceType;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{ config, ... }:
|
||||
|
||||
{
|
||||
config.services.openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
PasswordAuthentication = false;
|
||||
KbdInteractiveAuthentication = false;
|
||||
PermitRootLogin = "no";
|
||||
};
|
||||
AllowUsers = [ "numbus-admin" ];
|
||||
ports = [ 245 ]
|
||||
};
|
||||
|
||||
config.sops.secrets."authorizedSshPublicKeys" = {
|
||||
sopsFile = /etc/nixos/secrets/system/ssh.yaml;
|
||||
mode = "0440";
|
||||
owner = "numbus-admin";
|
||||
path = "/home/numbus-admin/.ssh/authorized_keys";
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
fish
|
||||
fishPlugins.fzf-fish
|
||||
fishPlugins.grc
|
||||
grc
|
||||
fzf
|
||||
];
|
||||
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
interactiveShellInit = ''
|
||||
set fish_greeting # Disable greeting
|
||||
fastfetch
|
||||
echo -e "\n\nWelcome to Numbus !\n\n- This system is managed by NixOS\n- All changes are futile\n- Please consider buying support to get assistance\n- Have a nice day and enjoy !"
|
||||
'';
|
||||
shellAliases = {
|
||||
nixup = "cd /etc/nixos/ && sudo nix flake update && sudo nixos-rebuild --flake . switch --upgrade && cd -";
|
||||
nixwitch = "cd /etc/nixos/ && sudo nix flake update && sudo nixos-rebuild --flake . switch && cd -";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{ config, inputs, ... }:
|
||||
|
||||
{
|
||||
config = {
|
||||
system.autoUpgrade = {
|
||||
enable = true;
|
||||
allowReboot = false;
|
||||
flake = inputs.self.outPath;
|
||||
flags = [ "--print-build-logs" ];
|
||||
dates = "21:00";
|
||||
randomizedDelaySec = "45min";
|
||||
};
|
||||
|
||||
nix.gc = {
|
||||
automatic = true;
|
||||
dates = "weekly";
|
||||
options = "--delete-older-than 7d";
|
||||
};
|
||||
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
nix.settings.auto-optimise-store = true;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user