main
1{den, ...}: {
2 den.hosts.kevin = {
3 settings = {
4 desktop.aesthetic = {
5 fonts.size = 13;
6 };
7 };
8 };
9
10 den.aspects.kevin = {
11 includes = with den.aspects.hardware; [
12 cpu.intel
13 gpu.intel
14 gpu.nvidia
15
16 bluetooth
17 thunderbolt
18 ];
19
20 nixos = {
21 pkgs,
22 config,
23 ...
24 }: {
25 hardware.facter.reportPath = ./facter.json;
26
27 boot.loader.systemd-boot.enable = true;
28
29 boot.kernelPackages = pkgs.linuxPackages_latest;
30
31 # Work around patchelf 0.19.2 corrupting the prebuilt NVIDIA programs,
32 # which makes ld.so segfault. https://github.com/NixOS/patchelf/issues/674
33 # TODO: Drop this after https://github.com/NixOS/nixpkgs/pull/576397 merge into nixos-unstable
34 hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.latest.overrideAttrs (old: {
35 postFixup = ''
36 for prog in "$bin"/origBin/*; do
37 name=$(basename "$prog")
38 install -m755 "$prog" "$bin/bin/$name"
39 patchelf --set-rpath "$out/lib:$libPath" "$bin/bin/$name"
40 patchelf --set-interpreter "$(cat "$NIX_CC/nix-support/dynamic-linker")" "$bin/bin/$name"
41 done
42 '';
43 });
44
45 hardware.keyboard.qmk = {
46 enable = true;
47 keychronSupport = true;
48 };
49 };
50
51 provides.to-users = {
52 hjem = {
53 pkgs,
54 lib,
55 config,
56 ...
57 }: {
58 packages = [pkgs.kanshi];
59
60 xdg.config.files."kanshi/config".source = ./kanshi-config;
61
62 systemd.services.kanshi = {
63 description = "Dynamic output configuration";
64 documentation = ["man:kanshi(1)"];
65
66 partOf = ["graphical-session.target"];
67 requires = ["graphical-session.target"];
68 after = ["graphical-session.target"];
69 wantedBy = ["graphical-session.target"];
70
71 script = lib.getExe pkgs.kanshi;
72 reload = "${lib.getExe' pkgs.kanshi "kanshictl"} reload";
73 reloadTriggers = ["${config.xdg.config.directory}/kanshi/config"];
74
75 serviceConfig.Restart = "always";
76 };
77 };
78 };
79 };
80}