Compare commits

...

2 Commits

4 changed files with 62 additions and 38 deletions

View File

@ -16,3 +16,43 @@
- Curated articles: information.nix - Curated articles: information.nix
All the modules are imported in *configuration.nix* All the modules are imported in *configuration.nix*
** Installation
1. Download the sdcard image
2. Connect a keyboard to the Raspberry Pi and set the password
#+begin_src shell
passwd
sudo su
passwd
#+end_src
The default user is nixos
3. Move the repo to the server and the agenix key
#+begin_src shell
scp -R Projects/zion zion:/home/nixos/system
scp .ssh/zion root@zion:/etc/ssh/id_ed25519
#+end_src
4. Increase the size of tmpfs
#+begin_src shell
sudo mount -o remount,size=4G /run/user/0
sudo mount -o remount,size=2G /run/user/1000
#+end_src
5. Rebuild the system using Flakes
#+begin_src shell
nix-shell -p git
sudo nixos-rebuild switch --flake /home/nixos/system#zion --impure
#+end_src
6. Restore the SQL databases
#+begin_src shell
psql -U postgres -f /vault/backups/zion/databases/all.sql
#+end_src

View File

@ -3,24 +3,29 @@
inputs = { inputs = {
nixpkgs.url = "nixpkgs/nixos-unstable"; nixpkgs.url = "nixpkgs/nixos-unstable";
agenix.url = "github:ryantm/agenix"; agenix = {
agenix.inputs.nixpkgs.follows = "nixpkgs"; url = "github:ryantm/agenix";
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-hardware.url = "github:NixOS/nixos-hardware";
}; };
outputs = { self, nixpkgs, agenix, ... }@inputs: outputs = { self, nixpkgs, agenix, nixos-hardware, ... }@inputs:
let let
system = "aarch64-linux"; system = "aarch64-linux";
pkgs = import pkgs { pkgs = import pkgs { inherit system; };
inherit system;
};
lib = nixpkgs.lib; lib = nixpkgs.lib;
in { in {
nixosConfigurations.zion = lib.nixosSystem { nixosConfigurations.zion = lib.nixosSystem {
inherit system; inherit system;
modules = [ (import ./configuration.nix) agenix.nixosModules.age ]; modules = [
(import ./configuration.nix)
agenix.nixosModules.age
nixos-hardware.nixosModules.raspberry-pi-4
];
specialArgs = { inherit inputs; }; specialArgs = { inherit inputs; };
}; };

View File

@ -15,37 +15,25 @@ with pkgs;
]; ];
# Enable SATA-HAT GPIO features # Enable SATA-HAT GPIO features
boot.loader.grub.enable = false; boot.loader = {
grub.enable = false;
generic-extlinux-compatible.enable = lib.mkForce false;
};
boot.loader.raspberryPi = { boot.loader.raspberryPi = {
enable = true; enable = true;
version = 4; version = 4;
firmwareConfig = '' firmwareConfig = ''
iomem=relaxed iomem=relaxed
strict-devmem=0 strict-devmem=0
dtoverlay=pwm-2chan,pin=12,func=4,pin2=13,func2=4
dtoverlay=w1-gpio dtoverlay=w1-gpio
dtparam=i2c1=on
''; '';
}; };
# Load PWM hardware timers
boot.kernelModules = [ "pwm_bcm2835" "w1-gpio" "w1-therm" ]; boot.kernelModules = [ "pwm_bcm2835" "w1-gpio" "w1-therm" ];
hardware.deviceTree = { # Load PWM hardware timers
enable = true; hardware.raspberry-pi."4".pwm0.enable = true;
filter = "*-rpi-*.dtb";
overlays = [
{
name = "pwm-2chan";
dtboFile = "${device-tree_rpi.overlays}/pwm-2chan.dtbo";
}
{
name = "w1-gpio";
dtboFile = "${device-tree_rpi.overlays}/w1-gpio.dtbo";
}
];
};
# Enable I2C # Enable I2C
hardware.i2c.enable = true; hardware.raspberry-pi."4".i2c1.enable = true;
} }

View File

@ -30,23 +30,14 @@ in {
}; };
# Enable SATA HAT # Enable SATA HAT
systemd.services.sata-hat = let systemd.services.sata-hat = {
overlay-directory =
"/boot/nixos/4mamyanz1hlc4wz3c427qjh6rabngwvj-linux-5.10.17-1.20210303-dtbs/overlays/";
in {
description = "Enable software support for SATA Hat"; description = "Enable software support for SATA Hat";
wantedBy = [ "zfs-import.target" ]; wantedBy = [ "zfs-import.target" ];
script = '' script = ''
${pkgs.bash}/bin/bash -c "/etc/nixos/scripts/SATA-hat.sh on" ${pkgs.bash}/bin/bash -c "/home/coolneng/system/scripts/SATA-hat.sh on"
'';
preStart = ''
${pkgs.libraspberrypi}/bin/dtoverlay -d ${overlay-directory} pwm-2chan pin=12 func=4 pin2=13 func2=4
${pkgs.libraspberrypi}/bin/dtoverlay -d ${overlay-directory} w1-gpio
''; '';
preStop = '' preStop = ''
${pkgs.libraspberrypi}/bin/dtoverlay -r -d ${overlay-directory} pwm-2chan ${pkgs.bash}/bin/bash -c "/home/coolneng/system/scripts/SATA-hat.sh off"
${pkgs.libraspberrypi}/bin/dtoverlay -r -d ${overlay-directory} w1-gpio
${pkgs.bash}/bin/bash -c "/etc/nixos/scripts/SATA-hat.sh off"
''; '';
serviceConfig = { serviceConfig = {
Type = "oneshot"; Type = "oneshot";