Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a5a6297be8 |
+2
-10
@@ -7,7 +7,6 @@
|
|||||||
./desktop.nix
|
./desktop.nix
|
||||||
./nvidia.nix
|
./nvidia.nix
|
||||||
./shell.nix
|
./shell.nix
|
||||||
# ./yami-dev-stack.nix # uncomment to enable Yami dev stack, then set services.yami-dev-stack below
|
|
||||||
];
|
];
|
||||||
|
|
||||||
nix = {
|
nix = {
|
||||||
@@ -77,16 +76,10 @@
|
|||||||
users.users.chexit = {
|
users.users.chexit = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
description = "chexit";
|
description = "chexit";
|
||||||
shell = pkgs.fish;
|
shell = pkgs.zsh;
|
||||||
extraGroups = [ "networkmanager" "wheel" "docker" ];
|
extraGroups = [ "networkmanager" "wheel" "docker" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
programs._1password.enable = true;
|
|
||||||
programs._1password-gui = {
|
|
||||||
enable = true;
|
|
||||||
polkitPolicyOwners = [ "chexit" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.throne = {
|
programs.throne = {
|
||||||
enable = true;
|
enable = true;
|
||||||
tunMode.enable = true;
|
tunMode.enable = true;
|
||||||
@@ -101,8 +94,7 @@
|
|||||||
programs.gamemode.enable = true;
|
programs.gamemode.enable = true;
|
||||||
|
|
||||||
services.tailscale.enable = true;
|
services.tailscale.enable = true;
|
||||||
# Docker is now managed by yami-dev-stack.nix when that module is enabled.
|
virtualisation.docker.enable = true;
|
||||||
# services.yami-dev-stack = { enable = true; user = "chexit"; };
|
|
||||||
|
|
||||||
system.stateVersion = "25.11";
|
system.stateVersion = "25.11";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,22 @@
|
|||||||
{ ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
home.username = "chexit";
|
home.username = "chexit";
|
||||||
home.homeDirectory = "/home/chexit";
|
home.homeDirectory = "/home/chexit";
|
||||||
home.stateVersion = "25.11";
|
home.stateVersion = "25.11";
|
||||||
|
|
||||||
programs.fish = {
|
programs.zsh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
enableCompletion = true;
|
||||||
|
autosuggestion.enable = true;
|
||||||
|
syntaxHighlighting.enable = true;
|
||||||
|
initContent = ''
|
||||||
|
source ${pkgs.zsh-powerlevel10k}/share/zsh-powerlevel10k/powerlevel10k.zsh-theme
|
||||||
|
'';
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
rebuild = "sudo nixos-rebuild switch --flake ~/nixos-config#chexit";
|
rebuild = "sudo nixos-rebuild switch --flake ~/nixos-config#chexit";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.starship = {
|
|
||||||
enable = true;
|
|
||||||
enableFishIntegration = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{ ... }:
|
{ ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
programs.fish.enable = true;
|
programs.zsh.enable = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,159 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.services.yami-dev-stack;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.services.yami-dev-stack = {
|
|
||||||
enable = mkEnableOption "Yami development stack (gitea, postgres, docker, runner)";
|
|
||||||
|
|
||||||
user = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
description = "User that will own runner token and be added to docker group";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
|
|
||||||
# ── Systemd target ─────────────────────────────────────────────────────────
|
|
||||||
# Manual-only: nothing in wantedBy, so it never starts on boot.
|
|
||||||
systemd.targets.yami-dev = {
|
|
||||||
description = "Yami development stack (gitea, postgres, docker, runner)";
|
|
||||||
wantedBy = [ ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# ── PostgreSQL 16 ──────────────────────────────────────────────────────────
|
|
||||||
services.postgresql = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.postgresql_16;
|
|
||||||
ensureDatabases = [ "gitea" ];
|
|
||||||
ensureUsers = [
|
|
||||||
{
|
|
||||||
name = "gitea";
|
|
||||||
ensureDBOwnership = true;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Pull postgres under yami-dev.target; stop it when target stops.
|
|
||||||
systemd.services.postgresql = {
|
|
||||||
wantedBy = mkForce [ "yami-dev.target" ];
|
|
||||||
partOf = [ "yami-dev.target" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# ── Gitea ──────────────────────────────────────────────────────────────────
|
|
||||||
services.gitea = {
|
|
||||||
enable = true;
|
|
||||||
appName = "Yami Git";
|
|
||||||
|
|
||||||
database = {
|
|
||||||
type = "postgres";
|
|
||||||
socket = "/run/postgresql";
|
|
||||||
name = "gitea";
|
|
||||||
user = "gitea";
|
|
||||||
};
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
server = {
|
|
||||||
DOMAIN = "localhost";
|
|
||||||
ROOT_URL = "http://localhost:3000/";
|
|
||||||
HTTP_ADDR = "0.0.0.0";
|
|
||||||
HTTP_PORT = 3000;
|
|
||||||
SSH_PORT = 2222;
|
|
||||||
START_SSH_SERVER = true;
|
|
||||||
LFS_START_SERVER = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
service = {
|
|
||||||
DISABLE_REGISTRATION = true;
|
|
||||||
DEFAULT_KEEP_EMAIL_PRIVATE = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
repository = {
|
|
||||||
DEFAULT_BRANCH = "main";
|
|
||||||
ENABLE_PUSH_CREATE_USER = true;
|
|
||||||
ENABLE_PUSH_CREATE_ORG = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
actions = {
|
|
||||||
ENABLED = true;
|
|
||||||
DEFAULT_ACTIONS_URL = "github";
|
|
||||||
LOG_RETENTION_DAYS = 14;
|
|
||||||
ARTIFACT_RETENTION_DAYS = 30;
|
|
||||||
};
|
|
||||||
|
|
||||||
packages = {
|
|
||||||
ENABLED = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
session = {
|
|
||||||
COOKIE_SECURE = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
"cron.git_gc_repos" = {
|
|
||||||
ENABLED = true;
|
|
||||||
SCHEDULE = "@every 72h";
|
|
||||||
ARGS = "--aggressive --prune=now";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.gitea = {
|
|
||||||
wantedBy = mkForce [ "yami-dev.target" ];
|
|
||||||
partOf = [ "yami-dev.target" ];
|
|
||||||
after = [ "postgresql.service" ];
|
|
||||||
requires = [ "postgresql.service" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# ── Docker ─────────────────────────────────────────────────────────────────
|
|
||||||
virtualisation.docker = {
|
|
||||||
enable = true;
|
|
||||||
enableOnBoot = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.docker = {
|
|
||||||
wantedBy = mkForce [ "yami-dev.target" ];
|
|
||||||
partOf = [ "yami-dev.target" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
users.users.${cfg.user}.extraGroups = [ "docker" ];
|
|
||||||
|
|
||||||
# ── Gitea Actions Runner ───────────────────────────────────────────────────
|
|
||||||
services.gitea-actions-runner.instances.default = {
|
|
||||||
enable = true;
|
|
||||||
name = "home-runner";
|
|
||||||
url = "http://localhost:3000";
|
|
||||||
tokenFile = "/var/lib/gitea-runner/token";
|
|
||||||
labels = [
|
|
||||||
"ubuntu-latest:docker://node:20"
|
|
||||||
"native:host"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services."gitea-runner-default" = {
|
|
||||||
wantedBy = mkForce [ "yami-dev.target" ];
|
|
||||||
partOf = [ "yami-dev.target" ];
|
|
||||||
after = [ "gitea.service" "docker.service" ];
|
|
||||||
requires = [ "gitea.service" "docker.service" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Directory for the runner token file; owner matches the runner service user.
|
|
||||||
systemd.tmpfiles.rules = [
|
|
||||||
"d /var/lib/gitea-runner 0700 gitea-runner gitea-runner -"
|
|
||||||
];
|
|
||||||
|
|
||||||
# ── Shell aliases ──────────────────────────────────────────────────────────
|
|
||||||
environment.shellAliases = {
|
|
||||||
yami-up = "sudo systemctl start yami-dev.target && echo 'Gitea → http://localhost:3000'";
|
|
||||||
yami-down = "sudo systemctl stop yami-dev.target && echo 'Yami dev stack stopped'";
|
|
||||||
yami-status = "systemctl status yami-dev.target gitea postgresql docker gitea-runner-default --no-pager";
|
|
||||||
yami-logs = "journalctl -u gitea -u gitea-runner-default -f";
|
|
||||||
};
|
|
||||||
|
|
||||||
# ── Firewall ───────────────────────────────────────────────────────────────
|
|
||||||
# Merged with existing rules (Steam etc.); does not overwrite them.
|
|
||||||
networking.firewall.allowedTCPPorts = [ 3000 2222 ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user