summaryrefslogtreecommitdiffstats
path: root/makefu
diff options
context:
space:
mode:
Diffstat (limited to 'makefu')
-rw-r--r--makefu/1systems/snake/config.nix26
-rw-r--r--makefu/1systems/snake/disk.nix64
-rw-r--r--makefu/1systems/snake/hardware-config.nix21
-rw-r--r--makefu/1systems/snake/source.nix7
-rw-r--r--makefu/1systems/wbob/config.nix1
-rw-r--r--makefu/2configs/bureautomation/default.nix2
-rw-r--r--makefu/2configs/bureautomation/rhasspy.nix41
-rw-r--r--makefu/2configs/bureautomation/zigbee2mqtt/default.nix1
-rw-r--r--makefu/2configs/default.nix2
-rw-r--r--makefu/2configs/editor/vim.nix3
-rw-r--r--makefu/2configs/editor/vimrc6
-rw-r--r--makefu/2configs/home/ham/sensor/outside.nix14
-rw-r--r--makefu/5pkgs/HermesLedControl/default.nix54
-rw-r--r--makefu/5pkgs/HermesLedControl/remove-logger.patch31
-rw-r--r--makefu/5pkgs/foomatic-db-engine/default.nix86
15 files changed, 270 insertions, 89 deletions
diff --git a/makefu/1systems/snake/config.nix b/makefu/1systems/snake/config.nix
new file mode 100644
index 000000000..1c6068e98
--- /dev/null
+++ b/makefu/1systems/snake/config.nix
@@ -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;
+}
diff --git a/makefu/1systems/snake/disk.nix b/makefu/1systems/snake/disk.nix
new file mode 100644
index 000000000..f9e14844f
--- /dev/null
+++ b/makefu/1systems/snake/disk.nix
@@ -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";
+ };
+ };
+ };
+ };
+}
diff --git a/makefu/1systems/snake/hardware-config.nix b/makefu/1systems/snake/hardware-config.nix
new file mode 100644
index 000000000..827c1d3eb
--- /dev/null
+++ b/makefu/1systems/snake/hardware-config.nix
@@ -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";
+}
diff --git a/makefu/1systems/snake/source.nix b/makefu/1systems/snake/source.nix
new file mode 100644
index 000000000..b9a32a2c4
--- /dev/null
+++ b/makefu/1systems/snake/source.nix
@@ -0,0 +1,7 @@
+{
+ name="cake";
+ full = true;
+ home-manager = true;
+ hw = true;
+ disko = true;
+}
diff --git a/makefu/1systems/wbob/config.nix b/makefu/1systems/wbob/config.nix
index d4d0f4b69..5cf5eb5c8 100644
--- a/makefu/1systems/wbob/config.nix
+++ b/makefu/1systems/wbob/config.nix
@@ -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>
diff --git a/makefu/2configs/bureautomation/default.nix b/makefu/2configs/bureautomation/default.nix
index 44690271d..cd162ba3b 100644
--- a/makefu/2configs/bureautomation/default.nix
+++ b/makefu/2configs/bureautomation/default.nix
@@ -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:"
];
};
diff --git a/makefu/2configs/bureautomation/rhasspy.nix b/makefu/2configs/bureautomation/rhasspy.nix
new file mode 100644
index 000000000..8fbfd9312
--- /dev/null
+++ b/makefu/2configs/bureautomation/rhasspy.nix
@@ -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" ];
+}
diff --git a/makefu/2configs/bureautomation/zigbee2mqtt/default.nix b/makefu/2configs/bureautomation/zigbee2mqtt/default.nix
index b35019793..d42abd790 100644
--- a/makefu/2configs/bureautomation/zigbee2mqtt/default.nix
+++ b/makefu/2configs/bureautomation/zigbee2mqtt/default.nix
@@ -16,6 +16,7 @@ in
permit_join = true;
serial.port = "/dev/cc2531";
homeassistant = true;
+ frontend.port = 8521;
};
};
diff --git a/makefu/2configs/default.nix b/makefu/2configs/default.nix
index 9a08a4497..ef4f8fbcd 100644
--- a/makefu/2configs/default.nix
+++ b/makefu/2configs/default.nix
@@ -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;
};
diff --git a/makefu/2configs/editor/vim.nix b/makefu/2configs/editor/vim.nix
index b37f2409a..f53be58ff 100644
--- a/makefu/2configs/editor/vim.nix
+++ b/makefu/2configs/editor/vim.nix
@@ -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"
];
};
diff --git a/makefu/2configs/editor/vimrc b/makefu/2configs/editor/vimrc
index 309e81a05..e24d29974 100644
--- a/makefu/2configs/editor/vimrc
+++ b/makefu/2configs/editor/vimrc
@@ -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
diff --git a/makefu/2configs/home/ham/sensor/outside.nix b/makefu/2configs/home/ham/sensor/outside.nix
index d05e8a1f6..e7467617b 100644
--- a/makefu/2configs/home/ham/sensor/outside.nix
+++ b/makefu/2configs/home/ham/sensor/outside.nix
@@ -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";
+ }
];
}
diff --git a/makefu/5pkgs/HermesLedControl/default.nix b/makefu/5pkgs/HermesLedControl/default.nix
new file mode 100644
index 000000000..88aed898d
--- /dev/null
+++ b/makefu/5pkgs/HermesLedControl/default.nix
@@ -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;
+ };
+}
diff --git a/makefu/5pkgs/HermesLedControl/remove-logger.patch b/makefu/5pkgs/HermesLedControl/remove-logger.patch
new file mode 100644
index 000000000..a6b757d35
--- /dev/null
+++ b/makefu/5pkgs/HermesLedControl/remove-logger.patch
@@ -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()
+
diff --git a/makefu/5pkgs/foomatic-db-engine/default.nix b/makefu/5pkgs/foomatic-db-engine/default.nix
deleted file mode 100644
index 242232c88..000000000
--- a/makefu/5pkgs/foomatic-db-engine/default.nix
+++ /dev/null
@@ -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;
- };
-}