2024-02-08 20:53:22 +01:00
{
modulesPath ,
repoFlake ,
packages' ,
pkgs ,
lib ,
config ,
nodeFlake ,
nodeName ,
system ,
. . .
2024-03-07 21:58:24 +01:00
} : let
2024-05-02 09:48:15 +02:00
pkgsUnstable = import nodeFlake . inputs . nixpkgs-unstable { inherit ( pkgs ) system config ; } ;
2024-03-07 21:58:24 +01:00
pkgsVscodium = import repoFlake . inputs . nixpkgs-vscodium { inherit ( pkgs ) system config ; } ;
in {
2023-11-23 16:03:07 +01:00
disabledModules = [
] ;
imports = [
nodeFlake . inputs . disko . nixosModules . disko
repoFlake . inputs . sops-nix . nixosModules . sops
2024-05-02 09:45:30 +02:00
nodeFlake . inputs . srvos . nixosModules . roles-nix-remote-builder
{
roles . nix-remote-builder . schedulerPublicKeys = [
" s s h - e d 2 5 5 1 9 A A A A C 3 N z a C 1 l Z D I 1 N T E 5 A A A A I N Q 2 2 z 5 r D d C L Y H + M E o E t + t X J X T J q o e Z N q v J l 2 n 4 a B + K n s t e v e e j @ s t e v e e j - x 1 3 s "
# TODO: make this a reference to the private key's secret
" s s h - e d 2 5 5 1 9 A A A A C 3 N z a C 1 l Z D I 1 N T E 5 A A A A I C 8 F H u K 0 k 8 6 i B W q 4 1 + N A h V w J q H 1 Z p G J e + q 0 1 m 7 i L v i z 6 r o o t @ s t e v e e j - t 1 4 "
] ;
}
2023-11-23 16:03:07 +01:00
../../profiles/common/user.nix
2024-03-07 22:01:03 +01:00
../../snippets/nix-settings.nix
2023-12-01 21:00:17 +01:00
../../snippets/nix-settings-holo-chain.nix
2024-05-16 15:42:15 +02:00
{
nix . settings . sandbox = lib . mkForce " r e l a x e d " ;
}
2023-11-23 16:03:07 +01:00
2024-04-04 21:04:39 +02:00
../../snippets/holo-zerotier.nix
2023-11-23 16:03:07 +01:00
# TODO
# ./network.nix
# ./monitoring.nix
2023-11-24 11:34:17 +01:00
# user config
2024-03-07 22:01:03 +01:00
../../snippets/home-manager-with-zsh.nix
2023-11-24 11:34:17 +01:00
{
2023-11-23 16:03:07 +01:00
users . commonUsers = {
enable = true ;
enableNonRoot = true ;
} ;
2023-11-24 11:34:17 +01:00
2024-02-08 20:53:22 +01:00
home-manager . users . steveej = { pkgs , . . . }: {
2024-05-16 15:42:15 +02:00
imports = [
../../../home-manager/programs/pass.nix
] ;
2023-12-17 23:25:24 +01:00
home . packages = [
pkgs . nil
pkgs . rnix-lsp
pkgs . nixd
pkgs . nixpkgs-fmt
pkgs . alejandra
pkgs . nixfmt
2024-03-07 21:58:24 +01:00
2024-05-02 09:48:15 +02:00
repoFlake . packages . ${ system } . rperf
2024-03-07 21:58:24 +01:00
# 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/
2024-05-02 09:48:15 +02:00
/*
e . g . :
` ` `
(
set - e
export COMMIT = $ ( codium - - version | rg ' ^ [ 0 - 9 a-f ] { 40 } $ ' )
2024-05-25 11:36:21 +02:00
ssh bm-hostkey0 " p k i l l - 9 o p e n v s c o d e ; r m - r f / h o m e / s t e v e e j / . v s c o d i u m - s e r v e r / b i n / $ C O M M I T ; m k d i r - p / h o m e / s t e v e e j / . v s c o d i u m - s e r v e r / b i n / $ C O M M I T / b i n / ; l n - s \$ ( w h i c h o p e n v s c o d e - s e r v e r ) / h o m e / s t e v e e j / . v s c o d i u m - s e r v e r / b i n / $ C O M M I T / b i n / "
2024-05-02 09:48:15 +02:00
)
` ` `
* /
( pkgsVscodium . openvscode-server . overrideAttrs ( attrs : {
2024-03-07 21:58:24 +01:00
src = repoFlake . inputs . openvscode-server ;
2024-05-25 11:36:21 +02:00
version = " 1 . 8 8 . 1 " ;
yarnCache = attrs . yarnCache . overrideAttrs ( _ : { outputHash = " s h a 2 5 6 - 8 9 c 6 G Y L T 2 R z H q w x B K e g Y q B 6 g 5 r E J 6 / n H 5 3 c n f V 7 b 0 T s = " ; } ) ;
2024-03-07 21:58:24 +01:00
} ) )
2023-12-17 23:25:24 +01:00
] ;
2023-11-24 11:34:17 +01:00
} ;
programs . zsh . enable = true ;
users . defaultUserShell = pkgs . zsh ;
2024-02-08 20:53:22 +01:00
environment . pathsToLink = [ " / s h a r e / z s h " ] ;
2023-11-23 16:03:07 +01:00
}
2024-05-25 11:35:26 +02:00
../../snippets/mycelium.nix
2023-11-23 16:03:07 +01:00
] ;
2023-11-23 17:52:21 +01:00
2023-11-24 11:34:17 +01:00
services . openssh . enable = true ;
services . openssh . settings . PermitRootLogin = " y e s " ;
2024-05-16 15:42:15 +02:00
services . openssh . extraConfig = ''
StreamLocalBindUnlink yes
'' ;
2023-11-24 11:34:17 +01:00
2023-11-23 16:03:07 +01:00
boot = {
kernel = {
sysctl = {
" n e t . i p v 4 . c o n f . a l l . f o r w a r d i n g " = true ;
" n e t . i p v 6 . c o n f . a l l . f o r w a r d i n g " = true ;
} ;
} ;
} ;
networking = {
hostName = nodeName ;
useNetworkd = true ;
useDHCP = true ;
# No local firewall.
nat . enable = true ;
firewall . enable = false ;
2024-06-01 10:55:40 +02:00
firewall . allowedTCPPorts = [
5201
] ;
firewall . allowedUDPPorts = [
5201
] ;
2023-11-23 16:03:07 +01:00
} ;
2024-02-08 20:53:22 +01:00
disko . devices = let
disk = id : {
type = " d i s k " ;
device = " / d e v / ${ id } " ;
content = {
type = " g p t " ;
partitions = {
boot = {
size = " 1 M " ;
type = " E F 0 2 " ; # for grub MBR
} ;
mdadm = {
size = " 1 0 0 % " ;
content = {
type = " m d r a i d " ;
name = " r a i d 0 " ;
} ;
} ;
} ;
} ;
} ;
in {
disk = {
sda = disk " s d a " ;
sdb = disk " s d b " ;
} ;
mdadm = {
raid0 = {
type = " m d a d m " ;
level = 0 ;
2023-11-23 16:03:07 +01:00
content = {
type = " g p t " ;
partitions = {
2024-02-08 20:53:22 +01:00
primary = {
2023-11-23 16:03:07 +01:00
size = " 1 0 0 % " ;
content = {
2024-02-08 20:53:22 +01:00
type = " f i l e s y s t e m " ;
format = " b t r f s " ;
mountpoint = " / " ;
2023-11-23 16:03:07 +01:00
} ;
} ;
} ;
} ;
} ;
} ;
2024-02-08 20:53:22 +01:00
} ;
2023-11-23 16:03:07 +01:00
2023-11-23 17:14:15 +01:00
system . stateVersion = " 2 3 . 1 1 " ;
2023-11-23 16:03:07 +01:00
boot . kernelPackages = pkgs . linuxPackages_latest ;
boot . initrd . includeDefaultModules = true ;
boot . initrd . kernelModules = [
" d m - r a i d "
" d m - i n t e g r i t y "
" x h c i _ p c i _ r e n e s a s "
] ;
hardware . enableRedistributableFirmware = true ;
environment . systemPackages = [
pkgs . hdparm
2024-04-18 17:38:24 +02:00
pkgs . fuse
2023-11-23 16:03:07 +01:00
] ;
2023-11-23 17:52:21 +01:00
2024-04-18 17:38:24 +02:00
programs . fuse . userAllowOther = true ;
services . caddy . enable = true ;
services . caddy . email = " m a i l @ s t e f a n j u n k e r . d e " ;
services . caddy . globalConfig = ''
auto_https disable_redirects
'' ;
services . caddy . virtualHosts = let
holochainDomain = " d e v . i n f r a . h o l o c h a i n . o r g " ;
in {
" ${ nodeName } . ${ holochainDomain } " = {
extraConfig = ''
handle_path /s3 /* {
reverse_proxy http://127.0.0.1:9000
}
'' ;
} ;
} ;
2023-11-23 17:14:15 +01:00
# home-manager.users.steveej = _: {
# imports = [
# ../../../home-manager/configuration/text-minimal.nix
# ];
# home.sessionVariables = {
# };
# home.packages = with pkgs; [
# ];
# };
2023-12-17 23:25:24 +01:00
virtualisation . libvirtd . enable = true ;
2024-04-18 17:38:24 +02:00
virtualisation . docker . enable = true ;
virtualisation . podman . enable = true ;
virtualisation . podman . autoPrune . enable = true ;
# virtualisation.podman.dockerSocket.enable = true;
2023-12-17 23:25:24 +01:00
boot . binfmt . emulatedSystems = [
" a a r c h 6 4 - l i n u x "
] ;
2024-04-18 17:28:17 +02:00
steveej . holo-zerotier = {
enable = true ;
autostart = false ;
} ;
2023-11-23 16:03:07 +01:00
}