ma omo.r: split hardware config, use disko for tsp hardware
This commit is contained in:
parent
859f985837
commit
b658de054d
23
makefu/1systems/hardware/tsp-disk.json
Normal file
23
makefu/1systems/hardware/tsp-disk.json
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"type": "devices",
|
||||
"content": {
|
||||
"sda": {
|
||||
"type": "table",
|
||||
"format": "msdos",
|
||||
"partitions": [
|
||||
{ "type": "partition",
|
||||
"part-type": "primary",
|
||||
"start": "1M",
|
||||
"end": "100%",
|
||||
"bootable": true,
|
||||
"content": {
|
||||
"type": "filesystem",
|
||||
"format": "ext4",
|
||||
"mountpoint": "/"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4,52 +4,17 @@
|
||||
|
||||
{ config, pkgs, lib, ... }:
|
||||
let
|
||||
toMapper = id: "/media/crypt${builtins.toString id}";
|
||||
byid = dev: "/dev/disk/by-id/" + dev;
|
||||
keyFile = byid "usb-Verbatim_STORE_N_GO_070B3CEE0B223954-0:0";
|
||||
rootDisk = byid "ata-SanDisk_SD8SNAT128G1122_162099420904";
|
||||
rootPartition = byid "ata-SanDisk_SD8SNAT128G1122_162099420904-part2";
|
||||
primaryInterface = "enp2s0";
|
||||
firetv = "192.168.1.238";
|
||||
# cryptsetup luksFormat $dev --cipher aes-xts-plain64 -s 512 -h sha512
|
||||
# cryptsetup luksAddKey $dev tmpkey
|
||||
# cryptsetup luksOpen $dev crypt0 --key-file tmpkey --keyfile-size=4096
|
||||
# mkfs.xfs /dev/mapper/crypt0 -L crypt0
|
||||
|
||||
# omo Chassis:
|
||||
# __FRONT_
|
||||
# |* d0 |
|
||||
# | |
|
||||
# |* d1 |
|
||||
# | |
|
||||
# |* d3 |
|
||||
# | |
|
||||
# |* |
|
||||
# |* d2 |
|
||||
# | * |
|
||||
# | * |
|
||||
# |_______|
|
||||
# cryptDisk0 = byid "ata-ST2000DM001-1CH164_Z240XTT6";
|
||||
cryptDisk0 = byid "ata-ST8000DM004-2CX188_ZCT01PLV";
|
||||
cryptDisk1 = byid "ata-TP02000GB_TPW151006050068";
|
||||
cryptDisk2 = byid "ata-ST4000DM000-1F2168_Z303HVSG";
|
||||
cryptDisk3 = byid "ata-ST8000DM004-2CX188_ZCT01SG4";
|
||||
# cryptDisk3 = byid "ata-WDC_WD20EARS-00MVWB0_WD-WMAZA1786907";
|
||||
# all physical disks
|
||||
|
||||
# TODO callPackage ../3modules/MonitorDisks { disks = allDisks }
|
||||
dataDisks = [ cryptDisk0 cryptDisk1 cryptDisk2 cryptDisk3 ];
|
||||
allDisks = [ rootDisk ] ++ dataDisks;
|
||||
primaryInterface = config.makefu.server.primary-itf;
|
||||
in {
|
||||
imports =
|
||||
[
|
||||
#./hw/omo.nix
|
||||
./hw/tsp.nix
|
||||
<stockholm/makefu>
|
||||
# TODO: unlock home partition via ssh
|
||||
<stockholm/makefu/2configs/fs/sda-crypto-root.nix>
|
||||
<stockholm/makefu/2configs/zsh-user.nix>
|
||||
<stockholm/makefu/2configs/backup.nix>
|
||||
<stockholm/makefu/2configs/exim-retiolum.nix>
|
||||
<stockholm/makefu/2configs/smart-monitor.nix>
|
||||
# <stockholm/makefu/2configs/smart-monitor.nix>
|
||||
<stockholm/makefu/2configs/mail-client.nix>
|
||||
<stockholm/makefu/2configs/mosh.nix>
|
||||
<stockholm/makefu/2configs/tools/mobility.nix>
|
||||
@ -78,6 +43,7 @@ in {
|
||||
<stockholm/makefu/2configs/deployment/google-muell.nix>
|
||||
<stockholm/makefu/2configs/virtualisation/docker.nix>
|
||||
<stockholm/makefu/2configs/bluetooth-mpd.nix>
|
||||
<stockholm/makefu/2configs/deployment/homeautomation>
|
||||
{
|
||||
hardware.pulseaudio.systemWide = true;
|
||||
makefu.mpd.musicDirectory = "/media/cryptX/music";
|
||||
@ -99,74 +65,9 @@ in {
|
||||
|
||||
# Temporary:
|
||||
# <stockholm/makefu/2configs/temp/rst-issue.nix>
|
||||
{ # ncdc
|
||||
environment.systemPackages = [ pkgs.ncdc ];
|
||||
networking.firewall = {
|
||||
allowedUDPPorts = [ 51411 ];
|
||||
allowedTCPPorts = [ 51411 ];
|
||||
};
|
||||
}
|
||||
{
|
||||
systemd.services.firetv = {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
User = "nobody";
|
||||
ExecStart = "${pkgs.python-firetv}/bin/firetv-server -d ${firetv}:5555";
|
||||
};
|
||||
};
|
||||
nixpkgs.config.permittedInsecurePackages = [
|
||||
"homeassistant-0.65.5"
|
||||
];
|
||||
services.home-assistant = {
|
||||
config = {
|
||||
homeassistant = {
|
||||
name = "Home"; time_zone = "Europe/Berlin";
|
||||
latitude = "48.7687";
|
||||
longitude = "9.2478";
|
||||
};
|
||||
media_player = [
|
||||
{ platform = "kodi";
|
||||
host = firetv;
|
||||
}
|
||||
{ platform = "firetv";
|
||||
# assumes python-firetv running
|
||||
}
|
||||
];
|
||||
sensor = [
|
||||
{ platform = "luftdaten";
|
||||
name = "Ditzingen";
|
||||
sensorid = "663";
|
||||
monitored_conditions = [ "P1" "P2" ];
|
||||
}
|
||||
# https://www.home-assistant.io/cookbook/automation_for_rainy_days/
|
||||
{ platform = "darksky";
|
||||
api_key = "c73619e6ea79e553a585be06aacf3679";
|
||||
language = "de";
|
||||
monitored_conditions = [ "summary" "icon"
|
||||
"nearest_storm_distance" "precip_probability"
|
||||
"precip_intensity"
|
||||
"temperature" # "temperature_high" "temperature_low"
|
||||
"hourly_summary"
|
||||
"uv_index" ];
|
||||
units = "si" ;
|
||||
update_interval = {
|
||||
days = 0;
|
||||
hours = 0;
|
||||
minutes = 10;
|
||||
seconds = 0;
|
||||
};
|
||||
}
|
||||
];
|
||||
frontend = { };
|
||||
http = { };
|
||||
};
|
||||
enable = true;
|
||||
#configDir = "/var/lib/hass";
|
||||
};
|
||||
}
|
||||
|
||||
];
|
||||
makefu.full-populate = true;
|
||||
makefu.server.primary-itf = primaryInterface;
|
||||
krebs.rtorrent = {
|
||||
downloadDir = lib.mkForce "/media/cryptX/torrent";
|
||||
extraConfig = ''
|
||||
@ -178,18 +79,6 @@ in {
|
||||
members = [ "makefu" "misa" ];
|
||||
};
|
||||
networking.firewall.trustedInterfaces = [ primaryInterface ];
|
||||
# udp:137 udp:138 tcp:445 tcp:139 - samba, allowed in local net
|
||||
# tcp:80 - nginx for sharing files
|
||||
# tcp:655 udp:655 - tinc
|
||||
# tcp:8111 - graphite
|
||||
# tcp:8112 - pyload
|
||||
# tcp:9090 - sabnzbd
|
||||
# tcp:9200 - elasticsearch
|
||||
# tcp:5601 - kibana
|
||||
networking.firewall.allowedUDPPorts = [ 655 ];
|
||||
networking.firewall.allowedTCPPorts = [ 80 655 5601 8111 8112 9200 9090 ];
|
||||
|
||||
# services.openssh.allowSFTP = false;
|
||||
|
||||
# copy config from <secrets/sabnzbd.ini> to /var/lib/sabnzbd/
|
||||
services.sabnzbd.enable = true;
|
||||
@ -199,90 +88,11 @@ in {
|
||||
enable = true;
|
||||
servedir = "/media/cryptX/emu/ps3";
|
||||
};
|
||||
# HDD Array stuff
|
||||
services.smartd.devices = builtins.map (x: { device = x; }) allDisks;
|
||||
|
||||
makefu.snapraid = {
|
||||
enable = true;
|
||||
# TODO: 3 is not protected
|
||||
disks = map toMapper [ 0 1 ];
|
||||
parity = toMapper 2;
|
||||
};
|
||||
|
||||
# TODO create folders in /media
|
||||
system.activationScripts.createCryptFolders = ''
|
||||
${lib.concatMapStringsSep "\n"
|
||||
(d: "install -m 755 -d " + (toMapper d) )
|
||||
[ 0 1 2 "X" ]}
|
||||
'';
|
||||
environment.systemPackages = with pkgs;[
|
||||
mergerfs # hard requirement for mount
|
||||
wol # wake up filepimp
|
||||
f3
|
||||
];
|
||||
fileSystems = let
|
||||
cryptMount = name:
|
||||
{ "/media/${name}" = {
|
||||
device = "/dev/mapper/${name}"; fsType = "xfs";
|
||||
options = [ "nofail" ];
|
||||
};};
|
||||
in cryptMount "crypt0"
|
||||
// cryptMount "crypt1"
|
||||
// cryptMount "crypt2"
|
||||
// cryptMount "crypt3"
|
||||
// { "/media/cryptX" = {
|
||||
device = (lib.concatMapStringsSep ":" (d: (toMapper d)) [ 0 1 2 3 ]);
|
||||
fsType = "mergerfs";
|
||||
noCheck = true;
|
||||
options = [ "defaults" "allow_other" "nofail" "nonempty" ];
|
||||
};
|
||||
};
|
||||
|
||||
powerManagement.powerUpCommands = lib.concatStrings (map (disk: ''
|
||||
${pkgs.hdparm}/sbin/hdparm -S 100 ${disk}
|
||||
${pkgs.hdparm}/sbin/hdparm -B 127 ${disk}
|
||||
${pkgs.hdparm}/sbin/hdparm -y ${disk}
|
||||
'') allDisks);
|
||||
|
||||
# crypto unlocking
|
||||
boot = {
|
||||
initrd.luks = {
|
||||
devices = let
|
||||
usbkey = name: device: {
|
||||
inherit name device keyFile;
|
||||
keyFileSize = 4096;
|
||||
allowDiscards = true;
|
||||
};
|
||||
in [
|
||||
(usbkey "luksroot" rootPartition)
|
||||
(usbkey "crypt0" cryptDisk0)
|
||||
(usbkey "crypt1" cryptDisk1)
|
||||
(usbkey "crypt2" cryptDisk2)
|
||||
(usbkey "crypt3" cryptDisk3)
|
||||
];
|
||||
};
|
||||
loader.grub.device = lib.mkForce rootDisk;
|
||||
|
||||
initrd.availableKernelModules = [
|
||||
"ahci"
|
||||
"ohci_pci"
|
||||
"ehci_pci"
|
||||
"pata_atiixp"
|
||||
"firewire_ohci"
|
||||
"usb_storage"
|
||||
"usbhid"
|
||||
];
|
||||
|
||||
kernelModules = [ "kvm-intel" ];
|
||||
extraModulePackages = [ ];
|
||||
};
|
||||
users.users.misa = {
|
||||
uid = 9002;
|
||||
name = "misa";
|
||||
};
|
||||
# hardware.enableAllFirmware = true;
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
hardware.cpu.intel.updateMicrocode = true;
|
||||
|
||||
zramSwap.enable = true;
|
||||
|
||||
@ -290,23 +100,23 @@ in {
|
||||
nickname = "Reaktor|shack";
|
||||
workdir = "/var/lib/Reaktor/shack";
|
||||
channels = [ "#shackspace" ];
|
||||
plugins = with pkgs.ReaktorPlugins;[
|
||||
shack-correct
|
||||
# stockholm-issue
|
||||
sed-plugin
|
||||
random-emoji ];
|
||||
plugins = with pkgs.ReaktorPlugins;
|
||||
[ shack-correct
|
||||
# stockholm-issue
|
||||
sed-plugin
|
||||
random-emoji ];
|
||||
};
|
||||
krebs.Reaktor.reaktor-bgt = {
|
||||
nickname = "Reaktor|bgt";
|
||||
workdir = "/var/lib/Reaktor/bgt";
|
||||
channels = [ "#binaergewitter" ];
|
||||
plugins = with pkgs.ReaktorPlugins;[
|
||||
titlebot
|
||||
# stockholm-issue
|
||||
nixos-version
|
||||
shack-correct
|
||||
sed-plugin
|
||||
random-emoji ];
|
||||
plugins = with pkgs.ReaktorPlugins;
|
||||
[ titlebot
|
||||
# stockholm-issue
|
||||
nixos-version
|
||||
shack-correct
|
||||
sed-plugin
|
||||
random-emoji ];
|
||||
};
|
||||
|
||||
krebs.build.host = config.krebs.hosts.omo;
|
||||
|
117
makefu/1systems/omo/hw/omo.nix
Normal file
117
makefu/1systems/omo/hw/omo.nix
Normal file
@ -0,0 +1,117 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
let
|
||||
toMapper = id: "/media/crypt${builtins.toString id}";
|
||||
byid = dev: "/dev/disk/by-id/" + dev;
|
||||
keyFile = byid "usb-Verbatim_STORE_N_GO_070B3CEE0B223954-0:0";
|
||||
rootDisk = byid "ata-SanDisk_SD8SNAT128G1122_162099420904";
|
||||
rootPartition = byid "ata-SanDisk_SD8SNAT128G1122_162099420904-part2";
|
||||
primaryInterface = "enp2s0";
|
||||
# cryptsetup luksFormat $dev --cipher aes-xts-plain64 -s 512 -h sha512
|
||||
# cryptsetup luksAddKey $dev tmpkey
|
||||
# cryptsetup luksOpen $dev crypt0 --key-file tmpkey --keyfile-size=4096
|
||||
# mkfs.xfs /dev/mapper/crypt0 -L crypt0
|
||||
|
||||
# omo Chassis:
|
||||
# __FRONT_
|
||||
# |* d0 |
|
||||
# | |
|
||||
# |* d1 |
|
||||
# | |
|
||||
# |* d3 |
|
||||
# | |
|
||||
# |* |
|
||||
# |* d2 |
|
||||
# | * |
|
||||
# | * |
|
||||
# |_______|
|
||||
# cryptDisk0 = byid "ata-ST2000DM001-1CH164_Z240XTT6";
|
||||
cryptDisk0 = byid "ata-ST8000DM004-2CX188_ZCT01PLV";
|
||||
cryptDisk1 = byid "ata-TP02000GB_TPW151006050068";
|
||||
cryptDisk2 = byid "ata-ST4000DM000-1F2168_Z303HVSG";
|
||||
cryptDisk3 = byid "ata-ST8000DM004-2CX188_ZCT01SG4";
|
||||
# cryptDisk3 = byid "ata-WDC_WD20EARS-00MVWB0_WD-WMAZA1786907";
|
||||
# all physical disks
|
||||
|
||||
# TODO callPackage ../3modules/MonitorDisks { disks = allDisks }
|
||||
dataDisks = [ cryptDisk0 cryptDisk1 cryptDisk2 cryptDisk3 ];
|
||||
allDisks = [ rootDisk ] ++ dataDisks;
|
||||
in {
|
||||
imports =
|
||||
[ # TODO: unlock home partition via ssh
|
||||
<stockholm/makefu/2configs/fs/sda-crypto-root.nix> ];
|
||||
makefu.server.primary-itf = primaryInterface;
|
||||
system.activationScripts.createCryptFolders = ''
|
||||
${lib.concatMapStringsSep "\n"
|
||||
(d: "install -m 755 -d " + (toMapper d) )
|
||||
[ 0 1 2 "X" ]}
|
||||
'';
|
||||
|
||||
makefu.snapraid = {
|
||||
enable = true;
|
||||
# TODO: 3 is not protected
|
||||
disks = map toMapper [ 0 1 ];
|
||||
parity = toMapper 2;
|
||||
};
|
||||
fileSystems = let
|
||||
cryptMount = name:
|
||||
{ "/media/${name}" = {
|
||||
device = "/dev/mapper/${name}"; fsType = "xfs";
|
||||
options = [ "nofail" ];
|
||||
};};
|
||||
in cryptMount "crypt0"
|
||||
// cryptMount "crypt1"
|
||||
// cryptMount "crypt2"
|
||||
// cryptMount "crypt3"
|
||||
// { "/media/cryptX" = {
|
||||
device = (lib.concatMapStringsSep ":" (d: (toMapper d)) [ 0 1 2 3 ]);
|
||||
fsType = "mergerfs";
|
||||
noCheck = true;
|
||||
options = [ "defaults" "allow_other" "nofail" "nonempty" ];
|
||||
};
|
||||
};
|
||||
|
||||
powerManagement.powerUpCommands = lib.concatStrings (map (disk: ''
|
||||
${pkgs.hdparm}/sbin/hdparm -S 100 ${disk}
|
||||
${pkgs.hdparm}/sbin/hdparm -B 127 ${disk}
|
||||
${pkgs.hdparm}/sbin/hdparm -y ${disk}
|
||||
'') allDisks);
|
||||
|
||||
# crypto unlocking
|
||||
boot = {
|
||||
initrd.luks = {
|
||||
devices = let
|
||||
usbkey = name: device: {
|
||||
inherit name device keyFile;
|
||||
keyFileSize = 4096;
|
||||
allowDiscards = true;
|
||||
};
|
||||
in [
|
||||
(usbkey "luksroot" rootPartition)
|
||||
(usbkey "crypt0" cryptDisk0)
|
||||
(usbkey "crypt1" cryptDisk1)
|
||||
(usbkey "crypt2" cryptDisk2)
|
||||
(usbkey "crypt3" cryptDisk3)
|
||||
];
|
||||
};
|
||||
loader.grub.device = lib.mkForce rootDisk;
|
||||
|
||||
initrd.availableKernelModules = [
|
||||
"ahci"
|
||||
"ohci_pci"
|
||||
"ehci_pci"
|
||||
"pata_atiixp"
|
||||
"firewire_ohci"
|
||||
"usb_storage"
|
||||
"usbhid"
|
||||
];
|
||||
|
||||
kernelModules = [ "kvm-intel" ];
|
||||
extraModulePackages = [ ];
|
||||
};
|
||||
environment.systemPackages = with pkgs;[
|
||||
mergerfs # hard requirement for mount
|
||||
];
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
hardware.cpu.intel.updateMicrocode = true;
|
||||
}
|
||||
|
11
makefu/1systems/omo/hw/tsp-tools.nix
Normal file
11
makefu/1systems/omo/hw/tsp-tools.nix
Normal file
@ -0,0 +1,11 @@
|
||||
let
|
||||
disko = import (builtins.fetchGit {
|
||||
url = https://cgit.lassul.us/disko/;
|
||||
rev = "9c9b62e15e4ac11d4379e66b974f1389daf939fe";
|
||||
});
|
||||
|
||||
cfg = builtins.fromJSON (builtins.readFile ../../hardware/tsp-disk.json);
|
||||
in ''
|
||||
${disko.create cfg}
|
||||
${disko.mount cfg}
|
||||
''
|
32
makefu/1systems/omo/hw/tsp.nix
Normal file
32
makefu/1systems/omo/hw/tsp.nix
Normal file
@ -0,0 +1,32 @@
|
||||
{ pkgs, ... }:
|
||||
with builtins;
|
||||
let
|
||||
disko = import (builtins.fetchGit {
|
||||
url = https://cgit.lassul.us/disko/;
|
||||
rev = "9c9b62e15e4ac11d4379e66b974f1389daf939fe";
|
||||
});
|
||||
cfg = fromJSON (readFile ../../hardware/tsp-disk.json);
|
||||
primaryInterface = "enp1s0";
|
||||
rootDisk = "/dev/sda"; # TODO same as disko uses
|
||||
in {
|
||||
imports = [
|
||||
(disko.config cfg)
|
||||
];
|
||||
makefu.server.primary-itf = primaryInterface;
|
||||
boot = {
|
||||
loader.grub.device = rootDisk;
|
||||
|
||||
initrd.availableKernelModules = [
|
||||
"ahci"
|
||||
"ohci_pci"
|
||||
"ehci_pci"
|
||||
"pata_atiixp"
|
||||
"firewire_ohci"
|
||||
"usb_storage"
|
||||
"usbhid"
|
||||
];
|
||||
|
||||
kernelModules = [ "kvm-intel" ];
|
||||
};
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user