Compare commits

..
2 Commits
Author SHA1 Message Date
Richie 9adcfa19fa adding gccarch-x86-64-v2 and gccarch-x86-64-v3 suport to all boxes This will be moved to athe ve file later
treefmt / nix fmt (pull_request) Successful in 4s
build_systems / build-portal-1 (pull_request) Successful in 29s
pytest / pytest (pull_request) Successful in 29s
test ebook search / test-ebook-search (pull_request) Successful in 34s
build_systems / build-brain (pull_request) Successful in 48s
build_systems / build-bob (pull_request) Successful in 56s
build_systems / build-rhapsody-in-green (pull_request) Successful in 1m3s
build_systems / build-jeeves (pull_request) Successful in 1m5s
2026-09-11 10:47:52 -04:00
Richie 1c427023ed adding root_pool/nix_build to all zfs boxes
this fixes issues with file how the test intract with zfs file systems
2026-09-11 10:47:52 -04:00
32 changed files with 342 additions and 115 deletions
-6
View File
@@ -22,12 +22,6 @@ hourly = 0
daily = 0 daily = 0
monthly = 0 monthly = 0
["root_pool/nix_build"]
15_min = 1
hourly = 0
daily = 0
monthly = 0
["root_pool/var"] ["root_pool/var"]
15_min = 8 15_min = 8
hourly = 24 hourly = 24
+2 -2
View File
@@ -264,7 +264,7 @@ def create_nix_hardware_file(mnt_dir: str, disks: Sequence[str], encrypt: str |
' "/home" = {\n device = "root_pool/home";\n fsType = "zfs";\n };\n\n' ' "/home" = {\n device = "root_pool/home";\n fsType = "zfs";\n };\n\n'
' "/var" = {\n device = "root_pool/var";\n fsType = "zfs";\n };\n\n' ' "/var" = {\n device = "root_pool/var";\n fsType = "zfs";\n };\n\n'
' "/nix" = {\n device = "root_pool/nix";\n fsType = "zfs";\n };\n\n' ' "/nix" = {\n device = "root_pool/nix";\n fsType = "zfs";\n };\n\n'
' "/nix/var/nix/builds" = {\n device = "root_pool/nix_build";\n fsType = "zfs";\n };\n\n' ' "/nix_build" = {\n device = "root_pool/nix_build";\n fsType = "zfs";\n };\n\n'
' "/boot" = {\n' ' "/boot" = {\n'
f' device = "/dev/disk/by-uuid/{get_boot_drive_id(disks[0])}";\n' f' device = "/dev/disk/by-uuid/{get_boot_drive_id(disks[0])}";\n'
' fsType = "vfat";\n options = [\n "fmask=0077"\n' ' fsType = "vfat";\n options = [\n "fmask=0077"\n'
@@ -287,7 +287,7 @@ def install_nixos(mnt_dir: str, disks: Sequence[str], encrypt: str | None) -> No
run_output(("mount", "-o", "X-mount.mkdir", "-t", "zfs", "root_pool/home", f"{mnt_dir}/home")) run_output(("mount", "-o", "X-mount.mkdir", "-t", "zfs", "root_pool/home", f"{mnt_dir}/home"))
run_output(("mount", "-o", "X-mount.mkdir", "-t", "zfs", "root_pool/var", f"{mnt_dir}/var")) run_output(("mount", "-o", "X-mount.mkdir", "-t", "zfs", "root_pool/var", f"{mnt_dir}/var"))
run_output(("mount", "-o", "X-mount.mkdir", "-t", "zfs", "root_pool/nix", f"{mnt_dir}/nix")) run_output(("mount", "-o", "X-mount.mkdir", "-t", "zfs", "root_pool/nix", f"{mnt_dir}/nix"))
run_output(("mount", "-o", "X-mount.mkdir", "-t", "zfs", "root_pool/nix_build", f"{mnt_dir}/nix/var/nix/builds")) run_output(("mount", "-o", "X-mount.mkdir", "-t", "zfs", "root_pool/nix_build", f"{mnt_dir}/nix_build"))
for disk in disks: for disk in disks:
run_output(("mkfs.vfat", "-n", "EFI", f"{disk}-part1")) run_output(("mkfs.vfat", "-n", "EFI", f"{disk}-part1"))
+1
View File
@@ -3,6 +3,7 @@
imports = [ imports = [
"${inputs.self}/users/math" "${inputs.self}/users/math"
"${inputs.self}/users/richie" "${inputs.self}/users/richie"
"${inputs.self}/users/steve"
"${inputs.self}/common/global" "${inputs.self}/common/global"
"${inputs.self}/common/optional/docker.nix" "${inputs.self}/common/optional/docker.nix"
"${inputs.self}/common/optional/monitoring-agent.nix" "${inputs.self}/common/optional/monitoring-agent.nix"
+1 -1
View File
@@ -50,7 +50,7 @@
fsType = "zfs"; fsType = "zfs";
}; };
"/nix/var/nix/builds" = { "/nix_build" = {
device = "root_pool/nix_build"; device = "root_pool/nix_build";
fsType = "zfs"; fsType = "zfs";
}; };
-6
View File
@@ -22,12 +22,6 @@ hourly = 0
daily = 0 daily = 0
monthly = 0 monthly = 0
["root_pool/nix_build"]
15_min = 1
hourly = 0
daily = 0
monthly = 0
["root_pool/models"] ["root_pool/models"]
15_min = 4 15_min = 4
hourly = 24 hourly = 24
+1 -1
View File
@@ -53,7 +53,7 @@
fsType = "zfs"; fsType = "zfs";
}; };
"/nix/var/nix/builds" = { "/nix_build" = {
device = "root_pool/nix_build"; device = "root_pool/nix_build";
fsType = "zfs"; fsType = "zfs";
}; };
-71
View File
@@ -1,71 +0,0 @@
{ pkgs, ... }:
let
vars = import ./vars.nix;
in
{
virtualisation.docker.daemon.settings."data-root" = "${vars.containers}/docker";
# nixos-container hardcodes its state directory to /var/lib/nixos-containers,
# so route it to the shared container dataset with a bind mount.
fileSystems."/var/lib/nixos-containers" = {
device = "${vars.containers}/nixos-containers";
fsType = "none";
options = [ "bind" ];
};
systemd.services = {
prepare-docker-storage = {
description = "Create Docker storage directory";
requiredBy = [ "docker.service" ];
before = [ "docker.service" ];
requires = [ "zfs-mount.service" ];
after = [ "zfs-mount.service" ];
path = [
pkgs.coreutils
pkgs.util-linux
];
unitConfig = {
DefaultDependencies = false;
RequiresMountsFor = [ "/nix" ];
};
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
};
script = ''
mountpoint -q ${vars.containers}
install -d -m 0710 ${vars.containers}/docker
'';
};
prepare-nixos-container-storage = {
description = "Create NixOS container storage directory";
requiredBy = [ "var-lib-nixos\\x2dcontainers.mount" ];
before = [ "var-lib-nixos\\x2dcontainers.mount" ];
requires = [ "zfs-mount.service" ];
after = [ "zfs-mount.service" ];
path = [
pkgs.coreutils
pkgs.util-linux
];
unitConfig = {
DefaultDependencies = false;
RequiresMountsFor = [ "/nix" ];
};
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
};
script = ''
mountpoint -q ${vars.containers}
install -d -m 0755 ${vars.containers}/nixos-containers
'';
};
};
}
+2 -2
View File
@@ -1,4 +1,4 @@
{ inputs, ... }: { inputs, lib, ... }:
let let
vars = import ./vars.nix; vars = import ./vars.nix;
in in
@@ -6,6 +6,7 @@ in
imports = [ imports = [
"${inputs.self}/users/math" "${inputs.self}/users/math"
"${inputs.self}/users/richie" "${inputs.self}/users/richie"
"${inputs.self}/users/steve"
"${inputs.self}/common/global" "${inputs.self}/common/global"
"${inputs.self}/common/optional/docker.nix" "${inputs.self}/common/optional/docker.nix"
"${inputs.self}/common/optional/monitoring-agent.nix" "${inputs.self}/common/optional/monitoring-agent.nix"
@@ -17,7 +18,6 @@ in
./monitoring ./monitoring
./docker ./docker
./services ./services
./containers.nix
./hardware.nix ./hardware.nix
./networking ./networking
./programs.nix ./programs.nix
+1 -1
View File
@@ -96,7 +96,7 @@ in
fsType = "zfs"; fsType = "zfs";
}; };
"/nix/var/nix/builds" = { "/nix_build" = {
device = "root_pool/nix_build"; device = "root_pool/nix_build";
fsType = "zfs"; fsType = "zfs";
}; };
-4
View File
@@ -43,8 +43,6 @@ let
useHostResolvConf = false; useHostResolvConf = false;
}; };
nix.settings = { nix.settings = {
cores = 8;
max-jobs = 2;
system-features = lib.mkAfter [ system-features = lib.mkAfter [
"gccarch-x86-64-v2" "gccarch-x86-64-v2"
"gccarch-x86-64-v3" "gccarch-x86-64-v3"
@@ -89,7 +87,6 @@ let
url = "http://192.168.99.14:6443/"; url = "http://192.168.99.14:6443/";
labels = runnerLabels; labels = runnerLabels;
tokenFile = "/run/secrets/gitea-runners/registration-token"; tokenFile = "/run/secrets/gitea-runners/registration-token";
settings.runner.timeout = "12h";
hostPackages = with pkgs; [ hostPackages = with pkgs; [
bash bash
coreutils coreutils
@@ -197,7 +194,6 @@ in
value = { value = {
requires = [ "gitea.service" ]; requires = [ "gitea.service" ];
after = [ "gitea.service" ]; after = [ "gitea.service" ];
serviceConfig.CPUQuota = "800%";
}; };
}) (builtins.attrNames (filterAttrs (_: c: c.enable) cfg.containers)) }) (builtins.attrNames (filterAttrs (_: c: c.enable) cfg.containers))
); );
-1
View File
@@ -17,7 +17,6 @@ sudo zpool create scratch -o ashift=12 -O acltype=posixacl -O atime=off -O dnode
# media datasets # media datasets
sudo zfs create media/temp -o sync=disabled -o redundant_metadata=none sudo zfs create media/temp -o sync=disabled -o redundant_metadata=none
sudo zfs create media/secure -o encryption=aes-256-gcm -o keyformat=hex -o keylocation=file:///root/zfs.key sudo zfs create media/secure -o encryption=aes-256-gcm -o keyformat=hex -o keylocation=file:///root/zfs.key
sudo zfs create media/secure/containers -o mountpoint=/zfs/media/containers -o compression=lz4 -o sync=disabled -o redundant_metadata=some -o normalization=none -o utf8only=off
sudo zfs create media/secure/docker -o compression=zstd-9 sudo zfs create media/secure/docker -o compression=zstd-9
sudo zfs create media/secure/github-runners -o compression=zstd-9 -o sync=disabled sudo zfs create media/secure/github-runners -o compression=zstd-9 -o sync=disabled
sudo zfs create media/secure/notes -o copies=2 sudo zfs create media/secure/notes -o copies=2
@@ -0,0 +1,80 @@
{
...
}:
let
vars = import ../vars.nix;
in
{
systemd.tmpfiles.rules = [
"d ${vars.docker_configs}/camofox-browser 0750 root root - -"
];
containers.camofox-browser = {
autoStart = true;
privateNetwork = false;
bindMounts = {
camofox-browser = {
hostPath = "${vars.docker_configs}/camofox-browser";
mountPoint = "/var/lib/camofox-browser";
isReadOnly = false;
};
};
config =
{
pkgs,
lib,
...
}:
{
networking.hostName = "camofox-browser";
environment.systemPackages = with pkgs; [
ffmpeg
git
nodejs
python3Packages.yt-dlp
];
systemd.services.camofox-browser = {
description = "Camofox browser server";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
environment = {
CAMOFOX_HOST = "127.0.0.1";
CAMOFOX_PORT = "9377";
HOME = "/var/lib/camofox-browser";
};
path = with pkgs; [
bash
coreutils
git
nodejs
];
serviceConfig = {
Restart = "always";
RestartSec = "5s";
WorkingDirectory = "/var/lib/camofox-browser";
};
script = ''
set -eu
app_dir=/var/lib/camofox-browser/app
if [ ! -d "$app_dir/.git" ]; then
git clone --depth 1 https://github.com/jo-inc/camofox-browser "$app_dir"
fi
cd "$app_dir"
if [ ! -d node_modules ]; then
npm install
fi
exec npm start
'';
};
system.stateVersion = lib.mkDefault "24.05";
};
};
}
-1
View File
@@ -19,7 +19,6 @@ in
actions = { actions = {
ENABLED = true; ENABLED = true;
DEFAULT_ACTIONS_URL = "github"; DEFAULT_ACTIONS_URL = "github";
ENDLESS_TASK_TIMEOUT = "12h";
}; };
service.DISABLE_REGISTRATION = true; service.DISABLE_REGISTRATION = true;
server = { server = {
-12
View File
@@ -23,12 +23,6 @@ hourly = 0
daily = 0 daily = 0
monthly = 0 monthly = 0
["root_pool/nix_build"]
15_min = 1
hourly = 0
daily = 0
monthly = 0
["root_pool/var"] ["root_pool/var"]
15_min = 8 15_min = 8
hourly = 24 hourly = 24
@@ -66,12 +60,6 @@ daily = 30
monthly = 12 monthly = 12
# media # media
["media/secure/containers"]
15_min = 2
hourly = 0
daily = 0
monthly = 0
["media/temp"] ["media/temp"]
15_min = 2 15_min = 2
hourly = 0 hourly = 0
-1
View File
@@ -5,7 +5,6 @@ let
in in
{ {
inherit zfs_media zfs_storage zfs_scratch; inherit zfs_media zfs_storage zfs_scratch;
containers = "${zfs_media}/containers";
database = "${zfs_media}/database"; database = "${zfs_media}/database";
docker = "${zfs_media}/docker"; docker = "${zfs_media}/docker";
docker_configs = "${zfs_media}/docker/configs"; docker_configs = "${zfs_media}/docker/configs";
+1 -1
View File
@@ -40,7 +40,7 @@
fsType = "zfs"; fsType = "zfs";
}; };
"/nix/var/nix/builds" = { "/nix_build" = {
device = "root_pool/nix_build"; device = "root_pool/nix_build";
fsType = "zfs"; fsType = "zfs";
}; };
+38 -1
View File
@@ -3,17 +3,54 @@
home.packages = with pkgs; [ home.packages = with pkgs; [
# cli # cli
bat bat
btop
eza
fd
ffmpegthumbnailer
fzf fzf
git git
gnupg
imagemagick
jq jq
ncdu ncdu
fastfetch ouch
p7zip p7zip
poppler
rar rar
ripgrep
starship
tmux
unzip unzip
yazi
zoxide zoxide
# system info
hwloc
lynis
pciutils
smartmontools
usbutils
# networking
iperf3
nmap
wget
# python # python
ruff ruff
uv uv
# nodejs
nodejs
# Rust packages
trunk
wasm-pack
cargo-watch
cargo-generate
cargo-audit
cargo-update
# nix
nix-init
nix-output-monitor
nix-prefetch
nix-tree
nixfmt
treefmt
]; ];
} }
+4 -4
View File
@@ -1,12 +1,12 @@
{ pkgs, ... }: { inputs, pkgs, ... }:
{ {
imports = [ imports = [
./comms.nix "${inputs.self}/users/shared/comms.nix"
"${inputs.self}/users/shared/games.nix"
"${inputs.self}/users/shared/sweet.nix"
./firefox ./firefox
./games.nix
./kitty.nix ./kitty.nix
./llm_tools.nix ./llm_tools.nix
./sweet.nix
./t3_code ./t3_code
./vscode ./vscode
]; ];
+13
View File
@@ -3,14 +3,21 @@
home.packages = with pkgs; [ home.packages = with pkgs; [
# cli # cli
bat bat
fd
ffmpegthumbnailer
fzf fzf
git git
gnupg
imagemagick
jq jq
ncdu ncdu
fastfetch fastfetch
ouch
p7zip p7zip
poppler
rar rar
unzip unzip
yazi
zoxide zoxide
# Home Assistant # Home Assistant
esphome esphome
@@ -28,6 +35,8 @@
# python # python
ruff ruff
uv uv
# nodejs
nodejs
# Rust packages # Rust packages
bacon bacon
cargo cargo
@@ -42,6 +51,9 @@
rustfmt rustfmt
trunk trunk
wasm-pack wasm-pack
# cpp
clang-tools
clang_20
# nix # nix
nix-init nix-init
nix-output-monitor nix-output-monitor
@@ -49,5 +61,6 @@
nix-tree nix-tree
nixfmt nixfmt
treefmt treefmt
codebase-memory-mcp
]; ];
} }
+44
View File
@@ -0,0 +1,44 @@
{
pkgs,
config,
...
}:
let
ifTheyExist = groups: builtins.filter (group: builtins.hasAttr group config.users.groups) groups;
in
{
users = {
users.steve = {
isNormalUser = true;
shell = pkgs.zsh;
group = "steve";
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJH03VzDbUhzfhvwD+OsYh6GobODYaI9jdNdzWQoqFsp matth@Jove" # cspell:disable-line
];
extraGroups = [
"audio"
"video"
"wheel"
"users"
]
++ ifTheyExist [
"dialout"
"docker"
"hass"
"libvirtd"
"networkmanager"
"plugdev"
"scanner"
"transmission"
"uaccess"
"wireshark"
];
uid = 1005;
};
groups.steve.gid = 1005;
};
home-manager.users.steve = import ./systems/${config.networking.hostName}.nix;
}
+9
View File
@@ -0,0 +1,9 @@
{
imports = [
./direnv.nix
./git.nix
./zsh.nix
];
programs.starship.enable = true;
}
+8
View File
@@ -0,0 +1,8 @@
{
programs.direnv = {
enable = true;
enableZshIntegration = true;
nix-direnv.enable = true;
};
}
+15
View File
@@ -0,0 +1,15 @@
{
programs.git = {
enable = true;
signing.format = null;
settings = {
user = {
email = "matthew.michal11@gmail.com";
name = "Matthew Michal";
};
pull.rebase = true;
color.ui = true;
};
lfs.enable = true;
};
}
+28
View File
@@ -0,0 +1,28 @@
{
programs.zsh = {
enable = true;
syntaxHighlighting.enable = true;
history.size = 10000;
oh-my-zsh = {
enable = true;
plugins = [
"git"
"docker"
"docker-compose"
"colored-man-pages"
"rust"
"systemd"
"tmux"
"ufw"
"z"
];
};
shellAliases = {
"lrt" = "eza --icons -lsnew";
"ls" = "eza";
"ll" = "eza --long --group";
"la" = "eza --all";
};
};
}
+22
View File
@@ -0,0 +1,22 @@
{ config, ... }:
{
imports = [
./cli
./programs.nix
./ssh_config.nix
];
programs = {
home-manager.enable = true;
git.enable = true;
};
home = {
username = "steve";
homeDirectory = "/home/${config.home.username}";
stateVersion = "24.05";
sessionVariables = {
FLAKE = "$HOME/dotfiles";
};
};
}
+56
View File
@@ -0,0 +1,56 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
# cli
bat
btop
eza
fd
ffmpegthumbnailer
fzf
git
gnupg
imagemagick
jq
ncdu
ouch
p7zip
poppler
rar
ripgrep
starship
tmux
unzip
yazi
zoxide
# system info
hwloc
lynis
pciutils
smartmontools
usbutils
# networking
iperf3
nmap
wget
# python
ruff
uv
# nodejs
nodejs
# Rust packages
trunk
wasm-pack
cargo-watch
cargo-generate
cargo-audit
cargo-update
# nix
nix-init
nix-output-monitor
nix-prefetch
nix-tree
nixfmt
treefmt
];
}
+6
View File
@@ -0,0 +1,6 @@
{
programs.ssh = {
enable = true;
enableDefaultConfig = false;
};
}
+5
View File
@@ -0,0 +1,5 @@
{
imports = [
../home/global.nix
];
}
+5
View File
@@ -0,0 +1,5 @@
{
imports = [
../home/global.nix
];
}