summaryrefslogtreecommitdiff
path: root/hosts/skadhi/hw.nix
blob: 4b436df5a510ad0d6bdfb03151460447b6bfbdd4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
{ flake, flakeInputs, pkgs, config, lib, ... }:
{
  imports = with flake.nixosModules.systemProfiles; [
    flakeInputs.nixos-hardware.nixosModules.framework-13-7040-amd
    disko
  ];

  config = {
    hardware.framework.laptop13.audioEnhancement.enable = true;
    services.fstrim.enable = false;

    services.udev.extraRules = ''
      ACTION=="add", SUBSYSTEM=="acpi", DRIVERS=="button", ATTRS{hid}=="PNP0C0D", ATTR{power/wakeup}="disabled"
      ACTION=="add", SUBSYSTEM=="serio", DRIVERS=="atkbd", ATTR{power/wakeup}="disabled"
      ACTION=="add", SUBSYSTEM=="i2c", DRIVERS=="i2c_hid_acpi", ATTRS{name}=="PIXA3854:00", ATTR{power/wakeup}="disabled"
   '';

    nixpkgs.system = "x86_64-linux";

    disko.devices = {
      disk.nvm = {
        type = "disk";
        device = "/dev/nvm0n1";
        content = {
          type = "gpt";
          partitions = {
            ESP = {
              size = "512M";
              type = "EF00";
              content = {
                type = "filesystem";
                format = "vfat";
                mountpoint = "/boot";
                mountOptions = [
                  "fmask=0033" "dmask=0022"
                ];
              };
            };
            luks = {
              size = "100%";
              content = {
                type = "luks";
                name = "nvm";
                extraFormatArgs = [
                  "--cipher" "aegis128-random"
                  "--key-size" "128"
                  "--integrity" "aead"
                ];
                content = {
                  type = "btrfs";
                  extraArgs = let
                    subvols = ["/persistent"] ++ map (p: "/persistent/${p}") ["/nix" "/var/log"];
                    restricted = map (p: "/persistent/${p}") ["/root"];
                  in [
                    "--csum" "blake2"
                    "--compress" "zstd:15"
                    "--rootdir" (toString (pkgs.runCommand "rootdir" {
                    } ''
                      mkdir $out
                      install -d ${lib.concatMapStringsSep " " (p: "$out/${p}") subvols}
                      install -m 0700 -d ${lib.concatMapStringsSep " " (p: "$out/${p}") restricted}
                    ''))
                  ] ++ lib.concatMap (p: ["--subvol" p]) subvols;
                  subvolumes = {
                    "/persistent".mountpoint = "/persistent";
                    "/swap" = {
                      mountpoint = "/.swap";
                      swap.swapfile.size = "96G";
                    };
                  };
                };
              };
            };
          };
        };
      };
    };
  };
}