Merge remote-tracking branch 'gum/master'

This commit is contained in:
lassulus 2023-01-19 14:12:03 +01:00
commit c89f76a0bd
19 changed files with 291 additions and 89 deletions

View File

@ -74,6 +74,11 @@ in {
retiolum.ip4.addr = "10.243.12.12";
};
};
snake = {
nets = {
retiolum.ip4.addr = "10.243.12.13";
};
};
studio = rec {
ci = false;
@ -145,6 +150,7 @@ in {
telex.nets.wiregrill = {
aliases = ["telex.w"];
ip6.addr = (krebs.genipv6 "wiregrill" "makefu" { hostName = "telex"; }).address;
ip4.addr = "10.244.245.4";
};
latte = rec {

View File

@ -0,0 +1,13 @@
-----BEGIN RSA PUBLIC KEY-----
MIICCgKCAgEApRUsm8oiTCx5kqFqCUaDyI3iesCajS76lzCGa1HdeBVLvejyit4s
Vx848/Gr2Axbtqx8Fm3RUj29CEUTCUKQdEEOVE58bQ+euSRL/V7g+v+1NSGYSEwp
Xvojczppjm0e56kI0yngZh++6AM4/6eMWEQl3u45ZRFXH11ZfoZb+Z3jRAUk1FXt
rWyrNQ5kGOwNaTk0+mXB8irtYrjyehfZuzyE2z1GelKrSMM03jCFFzVqPu5irYIm
TghRhFMXIG9bm+gM+bj/GNHs2RHL633PUqI/I5Hj6trNBfqbcu7gpB9F6Edtqgtb
lQm0Qei/l4AQIxfA3LqNuTHaXp4LBG9IH2qvXSxsqWlgDnjg3CEJ8ZwpOzT7xFG2
0NSRcAl+4i55j24ZxwWgS9H0Al3LMLzwVsToUfH9fGm1vtJ8ku8sx0AALVzVyabR
M5ywyi5oRhan/JZywFsACLDUFMiFqI/MIj6ao0pSZYaUXfKMtMCgJJ03NqWak8lc
yInBgIlEQgxljKW0LHeHoToBzuXhy70gtNswS61iKpuMDxbBYtyK1HuN8PS+vzS8
svtbV3lvqJA2KcVlqwwgDwvzPX+T0kbI4UL3EjFIU2nepGNaRA1AWmTMrpdEPNdx
4RPg5EZDVp+Jeihjxpa8aOb3yjkE5i6K00TyjsSIJqWy296PfJC4VBsCAwEAAQ==
-----END RSA PUBLIC KEY-----

View File

@ -0,0 +1 @@
Ed25519PublicKey = lKMWnuEVjcSoSEUWrj+51pwDQrQj2TqloL3aBKVWBbO

View File

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBfIivSIxnkH212vtHiWPiUJcjSRrv3d4eVfkIahJA7S makefu@x

View File

@ -0,0 +1,26 @@
{ config, lib, pkgs, ... }:
let
primaryInterface = "eth0";
in {
imports = [
<stockholm/makefu>
./hardware-config.nix
<stockholm/makefu/2configs/home-manager>
<stockholm/makefu/2configs/tools/core.nix>
<stockholm/makefu/2configs/binary-cache/nixos.nix>
<stockholm/makefu/2configs/home/rhasspy>
<stockholm/makefu/2configs/home/rhasspy/led-control.nix>
];
krebs = {
enable = true;
tinc.retiolum.enable = true;
build.host = config.krebs.hosts.snake;
};
# ensure disk usage is limited
services.journald.extraConfig = "Storage=volatile";
networking.firewall.trustedInterfaces = [ primaryInterface ];
documentation.info.enable = false;
documentation.man.enable = false;
documentation.nixos.enable = false;
}

View File

@ -0,0 +1,64 @@
{ disks ? [ "/dev/sda" ], ... }: {
disk = {
x = {
type = "disk";
device = "/dev/sda";
content = {
type = "table";
format = "gpt";
partitions = [
{
name = "boot";
type = "partition";
start = "0";
end = "1M";
part-type = "primary";
flags = ["bios_grub"];
}
{
type = "partition";
name = "ESP";
start = "1M";
end = "512MiB";
fs-type = "fat32";
bootable = true;
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
};
}
{
type = "partition";
name = "zfs";
start = "512MiB";
end = "100%";
content = {
type = "zfs";
pool = "zroot";
};
}
];
};
};
};
zpool = {
zroot = {
type = "zpool";
rootFsOptions.compression = "lz4";
mountpoint = "/";
datasets = {
home = {
zfs_type = "filesystem";
mountpoint = "/home";
options.mountpoint = "legacy";
};
reserved = {
zfs_type = "filesystem";
options.refreservation = "1G";
};
};
};
};
}

View File

@ -0,0 +1,21 @@
{ pkgs, lib, ... }:
{
imports = [
<nixpkgs/nixos/modules/installer/scan/not-detected.nix>
];
boot.loader.grub.enable = true;
boot.loader.grub.version = 2;
boot.loader.grub.efiSupport = true;
boot.loader.grub.device = "/dev/sda";
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "sd_mod" ];
boot.kernelModules = [ "kvm-amd" ];
disko.devices = import ./disk.nix;
hardware.enableRedistributableFirmware = true;
hardware.cpu.amd.updateMicrocode = true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand";
boot.kernelParams = [ "net.ifnames=0" ];
networking.hostId = "0123AABB";
}

View File

@ -0,0 +1,7 @@
{
name="cake";
full = true;
home-manager = true;
hw = true;
disko = true;
}

View File

@ -22,6 +22,7 @@ in {
# <stockholm/makefu/2configs/virtualisation/virtualbox.nix>
<stockholm/makefu/2configs/tinc/retiolum.nix>
<stockholm/makefu/2configs/gui/wbob-kiosk.nix>
{ environment.systemPackages = [ pkgs.kodi pkgs.nano ]; }
# <stockholm/makefu/2configs/gui/studio-virtual.nix>
# <stockholm/makefu/2configs/audio/jack-on-pulse.nix>

View File

@ -10,6 +10,7 @@ in {
# ./puppy-proxy.nix
./zigbee2mqtt
./rhasspy.nix
# hass config
## complex configs
@ -64,6 +65,7 @@ in {
extraOptions = ["--net=host" ];
volumes = [
"${confdir}:/config"
"/data/music:/config/media"
#"${confdir}/docker-run:/etc/services.d/home-assistant/run:"
];
};

View File

@ -0,0 +1,41 @@
{ config, ... }:
let
profiles = "/var/lib/rhasspy";
kiosk_id = toString config.users.users.kiosk.uid;
in
{
virtualisation.oci-containers.containers.rhasspy = {
image = "rhasspy/rhasspy:latest";
environment = {
TZ = "Europe/Berlin";
#PULSE_SERVER = "unix:/run/user/0/pulse/native";
PULSE_SERVER = "tcp:${ config.krebs.build.host.name }:4713";
};
ports = [
"12101:12101"
# "12183:12183"
];
#user = kiosk_id;
volumes = [
"/etc/localtime:/etc/localtime:ro"
"${profiles}:/profiles"
# TODO pulseaudio
#"/run/user/${kiosk_id}/pulse/native:/run/user/0/pulse/native"
#"${config.users.users.kiosk.home}/.config/pulse/cookie:/root/.config/pulse/cookie:ro"
];
cmd = [ "--user-profiles" "/profiles" "--profile" "de" ];
extraOptions = [
"--device=/dev/snd:/dev/snd" "--group-add=audio"
"--net=host"
];
};
systemd.tmpfiles.rules = [
"d ${profiles} 0770 root root - -"
];
systemd.services.docker-rhasspy.after = [ "desktop-manager.service" ];
}

View File

@ -16,6 +16,7 @@ in
permit_join = true;
serial.port = "/dev/cc2531";
homeassistant = true;
frontend.port = 8521;
};
};

View File

@ -68,7 +68,7 @@ with import <stockholm/lib>;
};
nixpkgs.config.packageOverrides = pkgs: {
nano = pkgs.runCommand "empty" {} "mkdir -p $out";
#nano = pkgs.runCommand "empty" {} "mkdir -p $out";
tinc = pkgs.tinc_pre;
};

View File

@ -11,7 +11,8 @@
"YouCompleteMe"
#"UltiSnips"
# vim-nix handles indentation better but does not perform sanity
"vim-addon-nix"
"vim-nix"
# "vim-addon-nix"
"vim-better-whitespace"
];
};

View File

@ -7,7 +7,7 @@ set listchars=tab:▸\
filetype off
filetype plugin indent on
colorscheme darkblue
colorscheme desert
set background=dark
set number
@ -49,6 +49,10 @@ set matchtime=3
set hlsearch
autocmd ColorScheme * highlight ExtraWhitespace ctermbg=red guibg=red
hi MatchParen cterm=none ctermbg=green ctermfg=blue
let g:better_whitespace_enabled=1
let g:strip_whitespace_on_save=1
" save on focus lost

View File

@ -26,5 +26,19 @@
{
platform = "met";
}
{
platform = "openweathermap";
api_key = "!secret openweathermap";
language = "de";
mode = "hourly";
}
{
platform = "tomorrowio";
api_key = "!secret tomorrowio";
}
{ platform = "octoprint"; }
{ platform = "accuweather";
api_key = "!secret accuweather";
}
];
}

View File

@ -0,0 +1,54 @@
{ lib, pkgs, python3Packages, makeWrapper, ... }:
# How to use:
# create configuration .config/HermesLedControl/configuration.yml:
# engine: "rhasspy"
# pathToConfig: "/var/lib/rhasspy/de/profile.json"
# hardware: "respeaker4MicArray"
# pattern: "fake-name"
# enableDoA: false
with python3Packages; buildPythonApplication rec {
name = "HermesLedControl-${version}";
format = "other";
version = "3.0.4";
src = pkgs.fetchFromGitHub {
owner = "project-alice-assistant";
repo = "HermesLedControl";
rev = "v${version}";
hash = "sha256-fVbTQPSo3fNjLb8PDDDqhMC9Hez01rTH46cKz/mfwoU=";
};
patches = [
./remove-logger.patch
];
execWrapper = ''
#!/bin/sh
cd $out/lib/HermesLedControl && \
PYTHONPATH="${makePythonPath propagatedBuildInputs}" exec \
${python}/bin/python "$out/lib/HermesLedControl/main.py" "$@"
'';
installPhase = ''
install -d "$out/lib/"
install -d "$out/bin"
cp -r . $out/lib/HermesLedControl
echo "${execWrapper}" > HermesLedControl
install -Dm755 HermesLedControl $out/bin/HermesLedControl
'';
propagatedBuildInputs = [
spidev gpiozero rpi-gpio pyyaml paho-mqtt types-pyyaml makeWrapper
];
meta = {
homepage = "https://github.com/project-alice-assistant/HermesLedControl";
description = "Provides an easy way to control your leds in an Hermes environment";
license = lib.licenses.gpl3;
};
}

View File

@ -0,0 +1,31 @@
diff --git a/main.py b/main.py
old mode 100644
new mode 100755
index 9b5a269..350d443
--- a/main.py
+++ b/main.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python3
from logging import handlers
import logging
@@ -17,18 +18,6 @@ _logger.setLevel(logging.DEBUG)
date = int(datetime.now().strftime('%Y%m%d'))
-handler = logging.FileHandler(filename='logs.log', mode='w')
-rotatingHandler = handlers.RotatingFileHandler(filename=f'./logs/{date}-logs.log', mode='a', maxBytes=100000, backupCount=5)
-streamHandler = logging.StreamHandler()
-
-handler.setFormatter(formatter)
-rotatingHandler.setFormatter(formatter)
-streamHandler.setFormatter(formatter)
-
-_logger.addHandler(handler)
-_logger.addHandler(rotatingHandler)
-_logger.addHandler(streamHandler)
-
def stopHandler(_signum, frame):
onStop()

View File

@ -1,86 +0,0 @@
{ lib, stdenv
, fetchFromGitHub
, autoreconfHook
, gd
, libusb1
, cups
, libpng
, perl
, perlPackages
, libxml2
, ghostscript
, a2ps
, wget
, file
, foomatic-filters
, makeWrapper
}:
stdenv.mkDerivation rec {
pname = "foomatic-db-engine";
version = "2020-01-31";
src = fetchFromGitHub {
owner = "OpenPrinting";
repo = "foomatic-db-engine-4";
rev = "bd265b77a9f66f672bf1e3f0803145f2eccabf06";
sha256 = "1f53kd3b0sxgx7hg2dvw2624bpwdfcx0zh4dn0h89l84mirgw1bs";
};
nativeBuildInputs = [
autoreconfHook
perl
makeWrapper
];
postConfigure = ''
sed -i "s#$ENV{BINDIR}#${placeholder "out"}/bin#" makeDefaults
'';
configureFlags = [
#"PERL_INSTALLDIRS=vendor"
"PERL_INSTALLDIRS=site"
"--prefix=/"
"PERLPREFIX=/"
#"DESTDIR=$(out)"
#"sysconfdir=/etc"
"LIBDIR=/lib"
#"PERL_INSTALLDIRS=site"
#"PERL_INSTALLDIRS=perl"
#PERL_INSTALLDIRS=perl"
"PERL=${perl}/bin/perl"
"FILEUTIL=${file}/bin/file"
"SBINDIR=/bin"
];
makeFlags = [
"DESTDIR=${placeholder "out"}"
"PERLLIB=$(out)/${perlPackages.perl.libPrefix}"
];
buildInputs = [
cups
ghostscript
a2ps
wget
perl
libxml2
file
foomatic-filters
];
postFixup = ''
echo cups > "$out"/etc/foomatic/defaultspooler
for file in $out/bin/foomatic-*;do
wrapProgram "$file" \
--set PERL5LIB "$out/${perlPackages.perl.libPrefix}" \
--prefix PATH : "$out/bin"
done
'';
meta = with lib; {
description = "Command line tool to print labels on Brother P-Touch printers on Linux";
license = licenses.gpl3Plus;
homepage = "https://mockmoon-cybernetics.ch/computer/p-touch2430pc/";
maintainers = with maintainers; [ shamilton ];
platforms = platforms.linux;
};
}