Compare commits
No commits in common. "d7de965eda9b64fd6a071132cce67bd3c1812004" and "458b6a72cdc8044ee2a272ef49cb92763e280c92" have entirely different histories.
d7de965eda
...
458b6a72cd
33
flake.lock
generated
33
flake.lock
generated
@ -2,31 +2,16 @@
|
|||||||
"nodes": {
|
"nodes": {
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1634551044,
|
"lastModified": 1634327140,
|
||||||
"narHash": "sha256-HOHemrQt3wA7eS5YT8n+X0OdB9+X4O08YUPTrFMBG60=",
|
"narHash": "sha256-d5L7oMjUVC6VU0cQMsF0tceAPkmzuAQ51DWBFNChbEQ=",
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "f001876680c0e32a89bced8d02d2c61250684e17",
|
"rev": "83667ff60a88e22b76ef4b0bdf5334670b39c2b6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"id": "nixpkgs",
|
"owner": "nixos",
|
||||||
"ref": "nixos-21.05",
|
"ref": "nixos-21.05",
|
||||||
"type": "indirect"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-nyanloutre-pysmart": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1634643555,
|
|
||||||
"narHash": "sha256-Fu0JVScZt0fUqfeo2tsTUcoehtpalBU7+15pxy1Ld+Y=",
|
|
||||||
"owner": "nyanloutre",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "256d8d34f05c8badeaf3ecb615d3af08a4b492d6",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nyanloutre",
|
|
||||||
"ref": "pysmart-init",
|
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@ -35,15 +20,16 @@
|
|||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1634436779,
|
"lastModified": 1634436779,
|
||||||
"narHash": "sha256-D/nrXTWpe1bPIjFy85sgiLHYqu+AeaC6v5/+KlA9PRg=",
|
"narHash": "sha256-D/nrXTWpe1bPIjFy85sgiLHYqu+AeaC6v5/+KlA9PRg=",
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "9aeeb7574fb784eaf6395f4400705b5f619e6cc3",
|
"rev": "9aeeb7574fb784eaf6395f4400705b5f619e6cc3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"id": "nixpkgs",
|
"owner": "nixos",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixos-unstable",
|
||||||
"type": "indirect"
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
@ -64,7 +50,6 @@
|
|||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
"nixpkgs-nyanloutre-pysmart": "nixpkgs-nyanloutre-pysmart",
|
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
"simple-nixos-mailserver": "simple-nixos-mailserver"
|
"simple-nixos-mailserver": "simple-nixos-mailserver"
|
||||||
}
|
}
|
||||||
|
24
flake.nix
24
flake.nix
@ -1,12 +1,11 @@
|
|||||||
{
|
{
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "flake:nixpkgs/nixos-21.05";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-21.05";
|
||||||
nixpkgs-unstable.url = "flake:nixpkgs/nixos-unstable";
|
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
nixpkgs-nyanloutre-pysmart.url = "github:nyanloutre/nixpkgs/pysmart-init";
|
|
||||||
simple-nixos-mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-21.05";
|
simple-nixos-mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-21.05";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, nixpkgs-unstable, simple-nixos-mailserver, nixpkgs-nyanloutre-pysmart }: {
|
outputs = { self, nixpkgs, nixpkgs-unstable, simple-nixos-mailserver }: {
|
||||||
nixosConfigurations.loutreos = nixpkgs.lib.nixosSystem {
|
nixosConfigurations.loutreos = nixpkgs.lib.nixosSystem {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
modules = [
|
modules = [
|
||||||
@ -19,23 +18,6 @@
|
|||||||
"${nixpkgs-unstable}/nixos/modules/services/audio/navidrome.nix"
|
"${nixpkgs-unstable}/nixos/modules/services/audio/navidrome.nix"
|
||||||
simple-nixos-mailserver.nixosModule
|
simple-nixos-mailserver.nixosModule
|
||||||
./systems/LoutreOS/configuration.nix
|
./systems/LoutreOS/configuration.nix
|
||||||
({ pkgs, ... }: {
|
|
||||||
systemd.services.ipmihddtemp = {
|
|
||||||
description = "IPMI HDD temp fan control";
|
|
||||||
wantedBy = ["multi-user.target"];
|
|
||||||
path = with pkgs;[ ipmitool smartmontools ];
|
|
||||||
serviceConfig = {
|
|
||||||
ExecStart = with nixpkgs-nyanloutre-pysmart.legacyPackages.x86_64-linux;
|
|
||||||
let env = python3Packages.python.buildEnv.override {
|
|
||||||
extraLibs = with python3Packages;[ pysmart ];
|
|
||||||
ignoreCollisions = true;
|
|
||||||
};
|
|
||||||
in "${pkgs.writeShellScriptBin "run.sh" ''
|
|
||||||
${env}/bin/python ${pkgs.writeScript "ipmihddtemp.py" "${builtins.readFile ./ipmihddtemp.py}"}
|
|
||||||
''}/bin/run.sh";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
})
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,42 +0,0 @@
|
|||||||
import math
|
|
||||||
import subprocess
|
|
||||||
import time
|
|
||||||
from pySMART import DeviceList
|
|
||||||
|
|
||||||
MIN_FAN_SPEED = 30
|
|
||||||
MAX_FAN_SPEED = 100
|
|
||||||
|
|
||||||
MIN_HDD_TEMP = 30
|
|
||||||
MAX_HDD_TEMP = 50
|
|
||||||
|
|
||||||
devlist = DeviceList()
|
|
||||||
|
|
||||||
# Put fans in full speed mode
|
|
||||||
subprocess.run(["ipmitool", "raw", "0x30", "0x45", "0x01", "0x01"])
|
|
||||||
|
|
||||||
while True:
|
|
||||||
for device in devlist:
|
|
||||||
device.update()
|
|
||||||
|
|
||||||
# Linear fan speed between MIN_FAN_SPEED and MAX_FAN_SPEED
|
|
||||||
fan_speed = max(
|
|
||||||
min(
|
|
||||||
math.ceil(
|
|
||||||
MIN_FAN_SPEED
|
|
||||||
+ (
|
|
||||||
(MAX_FAN_SPEED - MIN_FAN_SPEED)
|
|
||||||
* (
|
|
||||||
(max([x.temperature for x in devlist]) - MIN_HDD_TEMP)
|
|
||||||
/ (MAX_HDD_TEMP - MIN_HDD_TEMP)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
),
|
|
||||||
MAX_FAN_SPEED,
|
|
||||||
),
|
|
||||||
MIN_FAN_SPEED,
|
|
||||||
)
|
|
||||||
|
|
||||||
subprocess.run(["ipmitool", "raw", "0x30", "0x70", "0x66", "0x01", "0x00", hex(fan_speed)])
|
|
||||||
|
|
||||||
time.sleep(10)
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user