244 lines
5.8 KiB
Nix
244 lines
5.8 KiB
Nix
{
|
|
modulesPath,
|
|
repoFlake,
|
|
packages',
|
|
pkgs,
|
|
lib,
|
|
config,
|
|
nodeFlake,
|
|
nodeName,
|
|
system,
|
|
...
|
|
}: let
|
|
pkgsUnstable = import nodeFlake.inputs.nixpkgs-unstable {inherit (pkgs) system config;};
|
|
pkgsVscodium = import repoFlake.inputs.nixpkgs-vscodium {inherit (pkgs) system config;};
|
|
in {
|
|
disabledModules = [
|
|
];
|
|
|
|
imports = [
|
|
nodeFlake.inputs.disko.nixosModules.disko
|
|
repoFlake.inputs.sops-nix.nixosModules.sops
|
|
|
|
nodeFlake.inputs.srvos.nixosModules.roles-nix-remote-builder
|
|
{
|
|
roles.nix-remote-builder.schedulerPublicKeys = [
|
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINQ22z5rDdCLYH+MEoEt+tXJXTJqoeZNqvJl2n4aB+Kn steveej@steveej-x13s"
|
|
|
|
# TODO: make this a reference to the private key's secret
|
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC8FHuK0k86iBWq41+NAhVwJqH1ZpGJe+q01m7iLviz6 root@steveej-t14"
|
|
];
|
|
}
|
|
|
|
../../profiles/common/user.nix
|
|
../../snippets/nix-settings.nix
|
|
../../snippets/nix-settings-holo-chain.nix
|
|
{
|
|
nix.settings.sandbox = lib.mkForce "relaxed";
|
|
}
|
|
|
|
../../snippets/holo-zerotier.nix
|
|
|
|
# TODO
|
|
# ./network.nix
|
|
# ./monitoring.nix
|
|
|
|
# user config
|
|
../../snippets/home-manager-with-zsh.nix
|
|
{
|
|
users.commonUsers = {
|
|
enable = true;
|
|
enableNonRoot = true;
|
|
};
|
|
|
|
home-manager.users.steveej = {pkgs, ...}: {
|
|
imports = [
|
|
../../../home-manager/programs/pass.nix
|
|
];
|
|
|
|
home.packages = [
|
|
pkgs.nil
|
|
pkgs.nixd
|
|
pkgs.nixpkgs-fmt
|
|
pkgs.alejandra
|
|
pkgs.nixfmt
|
|
|
|
repoFlake.packages.${system}.rperf
|
|
|
|
# TODO: automate linking this
|
|
# 1. get the commit with: `codium --version`
|
|
# 2. create the binary directory: `mkdir -p /home/steveej/.vscodium-server/bin/c8ce3ba4bc6b30b3b10edc61481cb85b1d2396bc/bin/`
|
|
# 3. link the binary. this relies on the client-side setting `"remote.SSH.experimental.serverBinaryName": "openvscode-server"` : ln -s $(which openvscode-server) /home/steveej/.vscodium-server/bin/c8ce3ba4bc6b30b3b10edc61481cb85b1d2396bc/bin/
|
|
|
|
/*
|
|
e.g.:
|
|
```
|
|
(
|
|
set -e
|
|
export COMMIT=$(codium --version | rg '^[0-9a-f]{40}$')
|
|
ssh bm-hostkey0 "pkill -9 openvscode; rm -rf /home/steveej/.vscodium-server/bin/$COMMIT; mkdir -p /home/steveej/.vscodium-server/bin/$COMMIT/bin/; ln -s \$(which openvscode-server) /home/steveej/.vscodium-server/bin/$COMMIT/bin/"
|
|
)
|
|
```
|
|
*/
|
|
(pkgsVscodium.openvscode-server.overrideAttrs (attrs: {
|
|
src = repoFlake.inputs.openvscode-server;
|
|
version = "1.88.1";
|
|
yarnCache = attrs.yarnCache.overrideAttrs (_: {outputHash = "sha256-89c6GYLT2RzHqwxBKegYqB6g5rEJ6/nH53cnfV7b0Ts=";});
|
|
}))
|
|
|
|
pkgs.waypipe
|
|
|
|
];
|
|
};
|
|
|
|
programs.zsh.enable = true;
|
|
users.defaultUserShell = pkgs.zsh;
|
|
environment.pathsToLink = ["/share/zsh"];
|
|
}
|
|
|
|
../../snippets/mycelium.nix
|
|
];
|
|
|
|
services.openssh.enable = true;
|
|
services.openssh.settings.PermitRootLogin = "yes";
|
|
services.openssh.extraConfig = ''
|
|
StreamLocalBindUnlink yes
|
|
'';
|
|
|
|
boot = {
|
|
kernel = {
|
|
sysctl = {
|
|
"net.ipv4.conf.all.forwarding" = true;
|
|
"net.ipv6.conf.all.forwarding" = true;
|
|
};
|
|
};
|
|
};
|
|
|
|
networking = {
|
|
hostName = nodeName;
|
|
useNetworkd = true;
|
|
useDHCP = true;
|
|
|
|
# No local firewall.
|
|
nat.enable = true;
|
|
firewall.enable = false;
|
|
|
|
firewall.allowedTCPPorts = [
|
|
5201
|
|
];
|
|
firewall.allowedUDPPorts = [
|
|
5201
|
|
];
|
|
};
|
|
|
|
disko.devices = let
|
|
disk = id: {
|
|
type = "disk";
|
|
device = "/dev/${id}";
|
|
content = {
|
|
type = "gpt";
|
|
partitions = {
|
|
boot = {
|
|
size = "1M";
|
|
type = "EF02"; # for grub MBR
|
|
};
|
|
mdadm = {
|
|
size = "100%";
|
|
content = {
|
|
type = "mdraid";
|
|
name = "raid0";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
in {
|
|
disk = {
|
|
sda = disk "sda";
|
|
sdb = disk "sdb";
|
|
};
|
|
mdadm = {
|
|
raid0 = {
|
|
type = "mdadm";
|
|
level = 0;
|
|
content = {
|
|
type = "gpt";
|
|
partitions = {
|
|
primary = {
|
|
size = "100%";
|
|
content = {
|
|
type = "filesystem";
|
|
format = "btrfs";
|
|
mountpoint = "/";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
system.stateVersion = "23.11";
|
|
|
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
|
boot.initrd.includeDefaultModules = true;
|
|
boot.initrd.kernelModules = [
|
|
"dm-raid"
|
|
"dm-integrity"
|
|
"xhci_pci_renesas"
|
|
];
|
|
|
|
hardware.enableRedistributableFirmware = true;
|
|
|
|
environment.systemPackages = [
|
|
pkgs.hdparm
|
|
pkgs.fuse
|
|
];
|
|
|
|
programs.fuse.userAllowOther = true;
|
|
|
|
services.caddy.enable = true;
|
|
services.caddy.email = "mail@stefanjunker.de";
|
|
services.caddy.globalConfig = ''
|
|
auto_https disable_redirects
|
|
'';
|
|
services.caddy.virtualHosts = let
|
|
holochainDomain = "dev.infra.holochain.org";
|
|
in {
|
|
"${nodeName}.${holochainDomain}" = {
|
|
extraConfig = ''
|
|
handle_path /s3/* {
|
|
reverse_proxy http://127.0.0.1:9000
|
|
}
|
|
'';
|
|
};
|
|
};
|
|
|
|
# home-manager.users.steveej = _: {
|
|
# imports = [
|
|
# ../../../home-manager/configuration/text-minimal.nix
|
|
# ];
|
|
|
|
# home.sessionVariables = {
|
|
# };
|
|
|
|
# home.packages = with pkgs; [
|
|
# ];
|
|
# };
|
|
|
|
virtualisation.libvirtd.enable = true;
|
|
virtualisation.docker.enable = true;
|
|
|
|
virtualisation.podman.enable = true;
|
|
virtualisation.podman.autoPrune.enable = true;
|
|
# virtualisation.podman.dockerSocket.enable = true;
|
|
|
|
boot.binfmt.emulatedSystems = [
|
|
"aarch64-linux"
|
|
];
|
|
|
|
steveej.holo-zerotier = {
|
|
enable = true;
|
|
autostart = false;
|
|
};
|
|
}
|