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
pkgsUnstableSmall = import nodeFlake . inputs . nixpkgs-unstable-small { inherit ( pkgs ) system config ; } ;
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
2023-12-17 23:25:24 +01:00
nodeFlake . inputs . srvos . nixosModules . roles-nix-remote-builder
2023-11-23 16:03:07 +01:00
repoFlake . inputs . sops-nix . nixosModules . sops
../../profiles/common/user.nix
2023-12-01 21:00:17 +01:00
../../snippets/nix-settings-holo-chain.nix
2023-11-23 16:03:07 +01:00
# TODO
# ./network.nix
# ./monitoring.nix
2023-11-24 11:34:17 +01:00
# user config
{
2023-11-23 16:03:07 +01:00
users . commonUsers = {
enable = true ;
enableNonRoot = true ;
} ;
2023-11-24 11:34:17 +01:00
home-manager . users . root = import ../../../home-manager/configuration/text-minimal.nix {
inherit pkgs ;
} ;
2024-02-08 20:53:22 +01:00
home-manager . users . steveej = { pkgs , . . . }: {
2023-12-17 23:25:24 +01:00
imports = [
../../../home-manager/configuration/text-minimal.nix
] ;
home . packages = [
pkgs . nil
pkgs . rnix-lsp
pkgs . nixd
pkgs . nixpkgs-fmt
pkgs . alejandra
pkgs . nixfmt
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/
( pkgsVscodium . openvscode-server . overrideAttrs ( attrs : {
src = repoFlake . inputs . openvscode-server ;
version = " 1 . 8 6 . 2 " ;
yarnCache = attrs . yarnCache . overrideAttrs ( _ : { outputHash = " s h a 2 5 6 - m B 7 F w / 5 p C B J N G t H 3 P v G h Z O A I P / C 2 M o S v B v Z y 1 7 T P N 9 U = " ; } ) ;
} ) )
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
}
] ;
2023-11-23 17:52:21 +01:00
2023-12-17 23:25:24 +01:00
roles . nix-remote-builder . schedulerPublicKeys = [
# 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-24 11:34:17 +01:00
services . openssh . enable = true ;
services . openssh . settings . PermitRootLogin = " y e s " ;
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-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
] ;
2023-11-23 17:52:21 +01:00
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 ;
boot . binfmt . emulatedSystems = [
" a a r c h 6 4 - l i n u x "
] ;
2023-11-23 16:03:07 +01:00
}