.: fmt, push inputs.nixpkgs as "channel", slim down akamanto, initial verification of klipper host mcu

main
Robert Gerus 2023-11-01 02:57:40 +01:00 committed by Ari Gato
parent c3fa8be13a
commit d0df3a55f0
2 changed files with 58 additions and 26 deletions

View File

@ -11,6 +11,8 @@ in {
self.nixosModules.boot self.nixosModules.boot
]; ];
nix.nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
deployment = { deployment = {
allowLocalDeployment = true; allowLocalDeployment = true;
buildOnTarget = true; buildOnTarget = true;

View File

@ -12,23 +12,26 @@ let
${pkgs.wlr-randr}/bin/wlr-randr --output HDMI-A-1 --transform 180 ${pkgs.wlr-randr}/bin/wlr-randr --output HDMI-A-1 --transform 180
${pkgs.klipperscreen}/bin/KlipperScreen --configfile ${klipperScreenConfig} ${pkgs.klipperscreen}/bin/KlipperScreen --configfile ${klipperScreenConfig}
''; '';
klipperHostMcu = "${pkgs.klipper-firmware.override {
firmwareConfig = ./klipper-rpi.cfg;
}}/klipper.elf";
in { in {
# https://en.wikipedia.org/wiki/Aka_Manto # https://en.wikipedia.org/wiki/Aka_Manto
networking.hostName = "akamanto"; networking.hostName = "akamanto";
deployment.targetHost = "akamanto.local"; deployment.targetHost = "akamanto.local";
deployment.buildOnTarget = lib.mkForce false; deployment.buildOnTarget = lib.mkForce false;
imports = with inputs.self.nixosModules; imports = with inputs.self.nixosModules; [
[ "${inputs.nixpkgs}/nixos/modules/installer/sd-card/sd-image.nix"
"${inputs.nixpkgs}/nixos/modules/installer/sd-card/sd-image.nix" common
common # inputs.impermanence.nixosModule
# inputs.impermanence.nixosModule ];
];
# don't want to pull in all of installer stuff, so we need to copy some things from sd-image-aarch64.nix: # don't want to pull in all of installer stuff, so we need to copy some things from sd-image-aarch64.nix:
sdImage = { sdImage = {
compressImage = false; compressImage = false;
imageName = "${config.sdImage.imageBaseName}-${pkgs.stdenv.hostPlatform.system}-${config.networking.hostName}.img"; imageName =
"${config.sdImage.imageBaseName}-${pkgs.stdenv.hostPlatform.system}-${config.networking.hostName}.img";
populateFirmwareCommands = let populateFirmwareCommands = let
configTxt = pkgs.writeText "config.txt" '' configTxt = pkgs.writeText "config.txt" ''
[pi3] [pi3]
@ -47,15 +50,15 @@ in {
# when attempting to show low-voltage or overtemperature warnings. # when attempting to show low-voltage or overtemperature warnings.
avoid_warnings=1 avoid_warnings=1
''; '';
in '' in ''
(cd ${pkgs.raspberrypifw}/share/raspberrypi/boot && cp bootcode.bin fixup*.dat start*.elf $NIX_BUILD_TOP/firmware/) (cd ${pkgs.raspberrypifw}/share/raspberrypi/boot && cp bootcode.bin fixup*.dat start*.elf $NIX_BUILD_TOP/firmware/)
# Add the config # Add the config
cp ${configTxt} firmware/config.txt cp ${configTxt} firmware/config.txt
# Add pi3 specific files # Add pi3 specific files
cp ${pkgs.ubootRaspberryPi3_64bit}/u-boot.bin firmware/u-boot-rpi3.bin cp ${pkgs.ubootRaspberryPi3_64bit}/u-boot.bin firmware/u-boot-rpi3.bin
''; '';
populateRootCommands = '' populateRootCommands = ''
mkdir -p ./files/boot mkdir -p ./files/boot
${config.boot.loader.generic-extlinux-compatible.populateCmd} -c ${config.system.build.toplevel} -d ./files/boot ${config.boot.loader.generic-extlinux-compatible.populateCmd} -c ${config.system.build.toplevel} -d ./files/boot
@ -122,12 +125,21 @@ in {
# diet # diet
boot.binfmt.emulatedSystems = lib.mkForce [ ]; boot.binfmt.emulatedSystems = lib.mkForce [ ];
environment.systemPackages = with pkgs; lib.mkForce [ coreutils zsh bashInteractive nix systemd gnugrep environment.systemPackages = with pkgs;
(glibcLocales.override { lib.mkForce [
allLocales = false; coreutils
locales = [ "en_US.UTF-8/UTF-8" "en_CA.UTF-8/UTF-8" "en_DK.UTF-8/UTF-8" ]; zsh
}) bashInteractive
]; nix
systemd
gnugrep
openssh
(glibcLocales.override {
allLocales = false;
locales =
[ "en_US.UTF-8/UTF-8" "en_CA.UTF-8/UTF-8" "en_DK.UTF-8/UTF-8" ];
})
];
programs.nix-index.enable = lib.mkForce false; programs.nix-index.enable = lib.mkForce false;
services.journald.extraConfig = '' services.journald.extraConfig = ''
Storage=volatile Storage=volatile
@ -135,6 +147,25 @@ in {
systemd.coredump.enable = false; systemd.coredump.enable = false;
services.lvm.enable = lib.mkForce false; services.lvm.enable = lib.mkForce false;
# strictly printer stuff below # strictly printer stuff below
systemd.services.klipper-mcu-rpi = {
serviceConfig = {
DynamicUser = true;
User = "klipper";
RuntimeDirectory = "klipper";
StateDirectory = "klipper";
SupplementaryGroups = [ "dialout" ];
OOMScoreAdjust = "-999";
CPUSchedulingPolicy = "rr";
CPUSchedulingPriority = 99;
IOSchedulingClass = "realtime";
IOSchedulingPriority = 0;
ExecStart = "${klipperHostMcu} -r -I /run/klipper/mcu-rpi";
};
unitConfig = {
Before = [ "klipper.service" ];
};
};
## uncomment if you need manual config changes ## uncomment if you need manual config changes
#systemd.services.klipper.serviceConfig = { #systemd.services.klipper.serviceConfig = {
# ExecStart = lib.mkForce [ # ExecStart = lib.mkForce [
@ -184,7 +215,7 @@ in {
max_z_velocity = "5"; max_z_velocity = "5";
}; };
mcu = { serial = "/dev/ttyACM0"; }; mcu = { serial = "/dev/ttyACM0"; };
# "mcu rpi" = { serial = "/run/klipper/host-mcu"; }; "mcu rpi" = { serial = "/run/klipper/mcu-rpi"; };
virtual_sdcard = { path = "/var/lib/moonraker/gcodes"; }; virtual_sdcard = { path = "/var/lib/moonraker/gcodes"; };
pause_resume = { }; pause_resume = { };
@ -356,11 +387,10 @@ in {
}; };
machine = { provider = "systemd_cli"; }; machine = { provider = "systemd_cli"; };
}; };
package = (pkgs.moonraker.overrideAttrs (old: { package = pkgs.moonraker.overrideAttrs (old: {
patches = (old.patches or []) ++ [ patches = (old.patches or [ ])
./moonraker-remove-config-path-warning.patch ++ [ ./moonraker-remove-config-path-warning.patch ];
]; });
}));
}; };
services.fluidd = { services.fluidd = {