diff options
| -rw-r--r-- | kartei/makefu/default.nix | 6 | ||||
| -rw-r--r-- | kartei/makefu/retiolum/snake.pub | 13 | ||||
| -rw-r--r-- | kartei/makefu/retiolum/snake_ed25519.pub | 1 | ||||
| -rw-r--r-- | kartei/makefu/sshd/snake.pub | 1 | ||||
| -rw-r--r-- | makefu/1systems/snake/config.nix | 26 | ||||
| -rw-r--r-- | makefu/1systems/snake/disk.nix | 64 | ||||
| -rw-r--r-- | makefu/1systems/snake/hardware-config.nix | 21 | ||||
| -rw-r--r-- | makefu/1systems/snake/source.nix | 7 | ||||
| -rw-r--r-- | makefu/1systems/wbob/config.nix | 1 | ||||
| -rw-r--r-- | makefu/2configs/bureautomation/default.nix | 2 | ||||
| -rw-r--r-- | makefu/2configs/bureautomation/rhasspy.nix | 41 | ||||
| -rw-r--r-- | makefu/2configs/bureautomation/zigbee2mqtt/default.nix | 1 | ||||
| -rw-r--r-- | makefu/2configs/default.nix | 2 | ||||
| -rw-r--r-- | makefu/2configs/editor/vim.nix | 3 | ||||
| -rw-r--r-- | makefu/2configs/editor/vimrc | 6 | ||||
| -rw-r--r-- | makefu/2configs/home/ham/sensor/outside.nix | 14 | ||||
| -rw-r--r-- | makefu/5pkgs/HermesLedControl/default.nix | 54 | ||||
| -rw-r--r-- | makefu/5pkgs/HermesLedControl/remove-logger.patch | 31 | ||||
| -rw-r--r-- | makefu/5pkgs/foomatic-db-engine/default.nix | 86 | 
19 files changed, 291 insertions, 89 deletions
| diff --git a/kartei/makefu/default.nix b/kartei/makefu/default.nix index bf49a1766..5e236d574 100644 --- a/kartei/makefu/default.nix +++ b/kartei/makefu/default.nix @@ -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 { diff --git a/kartei/makefu/retiolum/snake.pub b/kartei/makefu/retiolum/snake.pub new file mode 100644 index 000000000..ae69a162f --- /dev/null +++ b/kartei/makefu/retiolum/snake.pub @@ -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----- diff --git a/kartei/makefu/retiolum/snake_ed25519.pub b/kartei/makefu/retiolum/snake_ed25519.pub new file mode 100644 index 000000000..a7f9f749b --- /dev/null +++ b/kartei/makefu/retiolum/snake_ed25519.pub @@ -0,0 +1 @@ +Ed25519PublicKey = lKMWnuEVjcSoSEUWrj+51pwDQrQj2TqloL3aBKVWBbO diff --git a/kartei/makefu/sshd/snake.pub b/kartei/makefu/sshd/snake.pub new file mode 100644 index 000000000..eceeae899 --- /dev/null +++ b/kartei/makefu/sshd/snake.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBfIivSIxnkH212vtHiWPiUJcjSRrv3d4eVfkIahJA7S makefu@x 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; -  }; -} | 
