170 lines
5.9 KiB
Nix
170 lines
5.9 KiB
Nix
{ self, inputs, ... }: {
|
|
|
|
flake.nixosModules.t2mbpConfiguration =
|
|
{ self, config, pkgs, ... }:
|
|
{
|
|
imports = [
|
|
self.nixosModules.t2mbpHardware
|
|
self.nixosModules.t2linux
|
|
inputs.t2fanrd.nixosModules.t2fanrd
|
|
inputs.home-manager.nixosModules.home-manager
|
|
inputs.sops-nix.nixosModules.sops
|
|
|
|
self.nixosModules.system
|
|
self.nixosModules.desktop
|
|
self.nixosModules.users
|
|
|
|
self.nixosModules."client-services"
|
|
./_private/platform.nix
|
|
./_private/firmware.nix
|
|
];
|
|
|
|
# ───────────────────────────── Sops (see repo secrets/.sops.yaml) ───────────
|
|
sops = {
|
|
defaultSopsFile = ../../../secrets/secrets.yaml;
|
|
defaultSopsFormat = "yaml";
|
|
age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
|
|
};
|
|
|
|
sops.secrets."caching/attic/token" = {
|
|
owner = "olivier";
|
|
group = "users";
|
|
mode = "0400";
|
|
};
|
|
|
|
sops.secrets."users/olivier/hashedPassword".neededForUsers = true;
|
|
sops.secrets."swiftshare/API_KEY" = {
|
|
owner = "olivier";
|
|
group = "users";
|
|
mode = "0400";
|
|
};
|
|
|
|
chiasson.system.librepods.enable = true;
|
|
chiasson.system.palera1n.enable = true;
|
|
|
|
# T2 SMC fans: without a daemon they sit near minimum while thermald only throttles CPU —
|
|
# https://wiki.t2linux.org/guides/fan/
|
|
services.t2fanrd = {
|
|
enable = true;
|
|
# Upstream averages 50 samples (~5s); peak tracks spikes so fans hit sysfs max sooner
|
|
# under bursty browser/GPU load (see patches/t2fanrd-use-peak-temperature.patch).
|
|
package = inputs.t2fanrd.packages.x86_64-linux.default.overrideAttrs (old: {
|
|
patches = (old.patches or [ ]) ++ [ ../../../patches/t2fanrd-use-peak-temperature.patch ]; #TODO[epic=Moderate] Move patch file to host's directory.
|
|
});
|
|
config = {
|
|
Fan1 = {
|
|
low_temp = 40;
|
|
high_temp = 65;
|
|
speed_curve = "exponential";
|
|
always_full_speed = false;
|
|
};
|
|
Fan2 = {
|
|
low_temp = 40;
|
|
high_temp = 65;
|
|
speed_curve = "exponential";
|
|
always_full_speed = false;
|
|
};
|
|
};
|
|
};
|
|
|
|
# Dynamic function row on the Touch Bar (`tiny-dfr`; needs `DRM_APPLETBDRM` — see t2linux kernel opts).
|
|
hardware.apple.touchBar.enable = true;
|
|
|
|
# ─────────────────────── Attic (pull + push + CLI token) ────────────────────
|
|
chiasson.system.caching.attic = {
|
|
enable = true;
|
|
cacheName = "nixos-new";
|
|
endpoint = "http://192.168.2.238:8080/";
|
|
publicKey = "nixos-new:8NySIcT0HP7KvGQKgBRWoWESxxRA8BVYo8S85UNpNX0=";
|
|
tokenFile = config.sops.secrets."caching/attic/token".path;
|
|
push.enable = true;
|
|
userCli.enable = true;
|
|
};
|
|
|
|
# ─────────────────────── Display Server & Desktop ──────────────────────────
|
|
chiasson.desktop = {
|
|
niri = {
|
|
enable = true;
|
|
# Hybrid T2 + `apple-gmux force_igd` + blacklisted amdgpu: a TB/DP encoder often stays
|
|
# "connected" with junk EDID → niri sees a second head (`Unknown-1`, absurd mode). Off.
|
|
extraSettings.extraConfig = ''
|
|
output "Unknown-1" {
|
|
off
|
|
}
|
|
'';
|
|
};
|
|
defaultSession = "niri";
|
|
shell = "dms";
|
|
};
|
|
|
|
chiasson.system = {
|
|
remoteDesktop = {
|
|
enable = false;
|
|
moonlight.enable = false;
|
|
sunshine.enable = false;
|
|
};
|
|
audio.enable = true;
|
|
extraPackages = [ pkgs.sops ];
|
|
networking = {
|
|
hostName = "t2mbp";
|
|
networkManager.enable = true;
|
|
};
|
|
};
|
|
|
|
chiasson.users.enabled = [ "olivier" ];
|
|
|
|
chiasson.users.extraModules.olivier = [
|
|
self.homeManagerModules.wisdomFilebrowsersDolphin
|
|
self.homeManagerModules.wisdomTerminalsKitty
|
|
self.homeManagerModules.wisdomBrowsersZen
|
|
self.homeManagerModules.wisdomBrowsersChrome
|
|
self.homeManagerModules.wisdomBrowsersEdge
|
|
self.homeManagerModules.wisdomEditorsCursor
|
|
self.homeManagerModules.wisdomEditorsKate
|
|
self.homeManagerModules.wisdomEditorsObsidian
|
|
self.homeManagerModules.wisdomShellYazi
|
|
self.homeManagerModules.wisdomShellFish
|
|
self.homeManagerModules.wisdomShellOhMyPosh
|
|
self.homeManagerModules.wisdomAppsDiscord
|
|
self.homeManagerModules.wisdomAppsSpotify
|
|
self.homeManagerModules.wisdomAppsLocalsend
|
|
self.homeManagerModules.wisdomAppsPokeclicker
|
|
self.homeManagerModules.wisdomDesktopScreenshot
|
|
{
|
|
chiasson.home = {
|
|
shell = {
|
|
fish.enable = true;
|
|
yazi.enable = true;
|
|
ohMyPosh.enable = true;
|
|
};
|
|
|
|
terminals.kitty.enable = true;
|
|
filebrowsers.dolphin.enable = true;
|
|
browsers = {
|
|
zen.enable = false;
|
|
chrome.enable = false;
|
|
edge.enable = true;
|
|
};
|
|
editors = {
|
|
cursor.enable = true;
|
|
kate.enable = false;
|
|
obsidian.enable = true;
|
|
};
|
|
apps = {
|
|
discord.enable = true;
|
|
spotify.enable = false;
|
|
localsend.enable = true;
|
|
pokeclicker.enable = true;
|
|
};
|
|
desktop = {
|
|
screenshot = {
|
|
enable = true;
|
|
swiftshareApiKeyFile = "/run/secrets/swiftshare/API_KEY"; #TODO[epic=sops] redo this by passing sops file output directly
|
|
};
|
|
};
|
|
};
|
|
}
|
|
];
|
|
};
|
|
|
|
} |