Add configuration for NixOS songsheet service, with Wavelog
This commit is contained in:
parent
279d8503c4
commit
ede2d7a3a3
5 changed files with 281 additions and 1 deletions
|
|
@ -148,6 +148,12 @@
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Enable MariaDB
|
||||||
|
services.mysql = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.mariadb;
|
||||||
|
};
|
||||||
|
|
||||||
# Enable the OpenSSH daemon.
|
# Enable the OpenSSH daemon.
|
||||||
services.openssh.enable = true;
|
services.openssh.enable = true;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
users.users.${config.local.username or "defaultuser"} = {
|
users.users.${config.local.username or "defaultuser"} = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
description = config.local.userDescription or "NixOS Playground";
|
description = config.local.userDescription or "NixOS Playground";
|
||||||
extraGroups = ["networkmanager" "wheel" "seat" "acme"];
|
extraGroups = ["networkmanager" "wheel" "seat" "acme" "wheel"];
|
||||||
packages = with pkgs; [];
|
packages = with pkgs; [];
|
||||||
initialPassword = "nixos"; # Simple, change on first login
|
initialPassword = "nixos"; # Simple, change on first login
|
||||||
|
|
||||||
|
|
|
||||||
179
nix-system-configs/modules/songsheet/wavelog/docker-compose.nix
Normal file
179
nix-system-configs/modules/songsheet/wavelog/docker-compose.nix
Normal file
|
|
@ -0,0 +1,179 @@
|
||||||
|
# Auto-generated by compose2nix.
|
||||||
|
|
||||||
|
{ pkgs, lib, config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
# Runtime
|
||||||
|
virtualisation.podman = {
|
||||||
|
enable = true;
|
||||||
|
autoPrune.enable = true;
|
||||||
|
dockerCompat = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable container name DNS for all Podman networks.
|
||||||
|
networking.firewall.interfaces = let
|
||||||
|
matchAll = if !config.networking.nftables.enable then "podman+" else "podman*";
|
||||||
|
in {
|
||||||
|
"${matchAll}".allowedUDPPorts = [ 53 ];
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualisation.oci-containers.backend = "podman";
|
||||||
|
|
||||||
|
# Containers
|
||||||
|
virtualisation.oci-containers.containers."wavelog-db" = {
|
||||||
|
image = "mariadb:11.3";
|
||||||
|
environment = {
|
||||||
|
"MARIADB_DATABASE" = "wavelog";
|
||||||
|
"MARIADB_PASSWORD" = "oijawfjiojoijoiawf";
|
||||||
|
"MARIADB_RANDOM_ROOT_PASSWORD" = "yes";
|
||||||
|
"MARIADB_USER" = "wavelog";
|
||||||
|
};
|
||||||
|
volumes = [
|
||||||
|
"wavelog_wavelog-dbdata:/var/lib/mysql:rw"
|
||||||
|
];
|
||||||
|
log-driver = "journald";
|
||||||
|
extraOptions = [
|
||||||
|
"--network-alias=wavelog-db"
|
||||||
|
"--network=wavelog_default"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
systemd.services."podman-wavelog-db" = {
|
||||||
|
serviceConfig = {
|
||||||
|
Restart = lib.mkOverride 90 "always";
|
||||||
|
};
|
||||||
|
after = [
|
||||||
|
"podman-network-wavelog_default.service"
|
||||||
|
"podman-volume-wavelog_wavelog-dbdata.service"
|
||||||
|
];
|
||||||
|
requires = [
|
||||||
|
"podman-network-wavelog_default.service"
|
||||||
|
"podman-volume-wavelog_wavelog-dbdata.service"
|
||||||
|
];
|
||||||
|
partOf = [
|
||||||
|
"podman-compose-wavelog-root.target"
|
||||||
|
];
|
||||||
|
wantedBy = [
|
||||||
|
"podman-compose-wavelog-root.target"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
virtualisation.oci-containers.containers."wavelog-main" = {
|
||||||
|
image = "ghcr.io/wavelog/wavelog:latest";
|
||||||
|
environment = {
|
||||||
|
"CI_ENV" = "docker";
|
||||||
|
};
|
||||||
|
volumes = [
|
||||||
|
"wavelog_wavelog-config:/var/www/html/application/config/docker:rw"
|
||||||
|
"wavelog_wavelog-uploads:/var/www/html/uploads:rw"
|
||||||
|
"wavelog_wavelog-userdata:/var/www/html/userdata:rw"
|
||||||
|
];
|
||||||
|
ports = [
|
||||||
|
"8086:80/tcp"
|
||||||
|
];
|
||||||
|
dependsOn = [
|
||||||
|
"wavelog-db"
|
||||||
|
];
|
||||||
|
log-driver = "journald";
|
||||||
|
extraOptions = [
|
||||||
|
"--network-alias=wavelog-main"
|
||||||
|
"--network=wavelog_default"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
systemd.services."podman-wavelog-main" = {
|
||||||
|
serviceConfig = {
|
||||||
|
Restart = lib.mkOverride 90 "always";
|
||||||
|
};
|
||||||
|
after = [
|
||||||
|
"podman-network-wavelog_default.service"
|
||||||
|
"podman-volume-wavelog_wavelog-config.service"
|
||||||
|
"podman-volume-wavelog_wavelog-uploads.service"
|
||||||
|
"podman-volume-wavelog_wavelog-userdata.service"
|
||||||
|
];
|
||||||
|
requires = [
|
||||||
|
"podman-network-wavelog_default.service"
|
||||||
|
"podman-volume-wavelog_wavelog-config.service"
|
||||||
|
"podman-volume-wavelog_wavelog-uploads.service"
|
||||||
|
"podman-volume-wavelog_wavelog-userdata.service"
|
||||||
|
];
|
||||||
|
partOf = [
|
||||||
|
"podman-compose-wavelog-root.target"
|
||||||
|
];
|
||||||
|
wantedBy = [
|
||||||
|
"podman-compose-wavelog-root.target"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Networks
|
||||||
|
systemd.services."podman-network-wavelog_default" = {
|
||||||
|
path = [ pkgs.podman ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
ExecStop = "podman network rm -f wavelog_default";
|
||||||
|
};
|
||||||
|
script = ''
|
||||||
|
podman network inspect wavelog_default || podman network create wavelog_default
|
||||||
|
'';
|
||||||
|
partOf = [ "podman-compose-wavelog-root.target" ];
|
||||||
|
wantedBy = [ "podman-compose-wavelog-root.target" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Volumes
|
||||||
|
systemd.services."podman-volume-wavelog_wavelog-config" = {
|
||||||
|
path = [ pkgs.podman ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
};
|
||||||
|
script = ''
|
||||||
|
podman volume inspect wavelog_wavelog-config || podman volume create wavelog_wavelog-config
|
||||||
|
'';
|
||||||
|
partOf = [ "podman-compose-wavelog-root.target" ];
|
||||||
|
wantedBy = [ "podman-compose-wavelog-root.target" ];
|
||||||
|
};
|
||||||
|
systemd.services."podman-volume-wavelog_wavelog-dbdata" = {
|
||||||
|
path = [ pkgs.podman ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
};
|
||||||
|
script = ''
|
||||||
|
podman volume inspect wavelog_wavelog-dbdata || podman volume create wavelog_wavelog-dbdata
|
||||||
|
'';
|
||||||
|
partOf = [ "podman-compose-wavelog-root.target" ];
|
||||||
|
wantedBy = [ "podman-compose-wavelog-root.target" ];
|
||||||
|
};
|
||||||
|
systemd.services."podman-volume-wavelog_wavelog-uploads" = {
|
||||||
|
path = [ pkgs.podman ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
};
|
||||||
|
script = ''
|
||||||
|
podman volume inspect wavelog_wavelog-uploads || podman volume create wavelog_wavelog-uploads
|
||||||
|
'';
|
||||||
|
partOf = [ "podman-compose-wavelog-root.target" ];
|
||||||
|
wantedBy = [ "podman-compose-wavelog-root.target" ];
|
||||||
|
};
|
||||||
|
systemd.services."podman-volume-wavelog_wavelog-userdata" = {
|
||||||
|
path = [ pkgs.podman ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
};
|
||||||
|
script = ''
|
||||||
|
podman volume inspect wavelog_wavelog-userdata || podman volume create wavelog_wavelog-userdata
|
||||||
|
'';
|
||||||
|
partOf = [ "podman-compose-wavelog-root.target" ];
|
||||||
|
wantedBy = [ "podman-compose-wavelog-root.target" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Root service
|
||||||
|
# When started, this will automatically create all resources and start
|
||||||
|
# the containers. When stopped, this will teardown all resources.
|
||||||
|
systemd.targets."podman-compose-wavelog-root" = {
|
||||||
|
unitConfig = {
|
||||||
|
Description = "Root target generated by compose2nix.";
|
||||||
|
};
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
services:
|
||||||
|
wavelog-db:
|
||||||
|
image: mariadb:11.3
|
||||||
|
container_name: wavelog-db
|
||||||
|
environment:
|
||||||
|
MARIADB_RANDOM_ROOT_PASSWORD: yes
|
||||||
|
MARIADB_DATABASE: wavelog
|
||||||
|
MARIADB_USER: wavelog
|
||||||
|
MARIADB_PASSWORD: oijawfjiojoijoiawfoij191229888dajkvhiuviuaiuhvaihuauis1123312 # THIS DATABASE WILL BE MIGRATED PROABLY - TODO CHECK OUT https://github.com/ryantm/agenix
|
||||||
|
volumes:
|
||||||
|
- wavelog-dbdata:/var/lib/mysql
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
wavelog-main:
|
||||||
|
container_name: wavelog-main
|
||||||
|
image: ghcr.io/wavelog/wavelog:latest
|
||||||
|
depends_on:
|
||||||
|
- wavelog-db
|
||||||
|
environment:
|
||||||
|
CI_ENV: docker
|
||||||
|
volumes:
|
||||||
|
- wavelog-config:/var/www/html/application/config/docker
|
||||||
|
- wavelog-uploads:/var/www/html/uploads
|
||||||
|
- wavelog-userdata:/var/www/html/userdata
|
||||||
|
ports:
|
||||||
|
- "8086:80"
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
wavelog-dbdata:
|
||||||
|
wavelog-uploads:
|
||||||
|
wavelog-userdata:
|
||||||
|
wavelog-config:
|
||||||
62
nix-system-configs/modules/system/compose-songsheet.nix
Normal file
62
nix-system-configs/modules/system/compose-songsheet.nix
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
options.local = {
|
||||||
|
hostname = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "nixos-default";
|
||||||
|
description = "System hostname";
|
||||||
|
};
|
||||||
|
username = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "user";
|
||||||
|
description = "Primary user username";
|
||||||
|
};
|
||||||
|
userDescription = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "NixOS User";
|
||||||
|
description = "Primary user description";
|
||||||
|
};
|
||||||
|
address = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "10.1.1.100";
|
||||||
|
description = "Static IP address";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
./modules/desktop-manager/sway_greetd_homemanager.nix
|
||||||
|
./modules/local/hostname_username.nix
|
||||||
|
./modules/local/networking_local.nix
|
||||||
|
./modules/bootloader/seabios-assigned-iso-at-birth.nix
|
||||||
|
./modules/lix-default.nix
|
||||||
|
# Optionally: ./modules/toolsets/remote_building.nix
|
||||||
|
#
|
||||||
|
#
|
||||||
|
## Compose modules for Portainer service
|
||||||
|
./modules/songsheet/wavelog/docker-compose.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
config = {
|
||||||
|
local.hostname = "nixos-songsheet";
|
||||||
|
local.username = "songsheetprg";
|
||||||
|
local.userDescription = "NixOS PRG Portainer-Like Songsheet Service";
|
||||||
|
local.address = "10.1.1.249";
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [
|
||||||
|
80
|
||||||
|
443
|
||||||
|
8086 # Wavelog
|
||||||
|
];
|
||||||
|
networking.firewall.allowedUDPPorts = [
|
||||||
|
80
|
||||||
|
443
|
||||||
|
8086 # Wavelog
|
||||||
|
];
|
||||||
|
|
||||||
|
system.stateVersion = "25.11";
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue