aboutsummaryrefslogtreecommitdiff
path: root/hosts/mercury/nixos.nix
blob: a47375a9678b935c99a662bcf4f3c81a75a48d39 (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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
{
  lib,
  inputs,
  pkgs,
  ...
}: {
  imports = [
    ./disks.nix
    ./battery.nix

    inputs.nixos-facter-modules.nixosModules.facter
    inputs.lanzaboote.nixosModules.lanzaboote
  ];

  facter.reportPath = ./facter.json;
  services.dbus.implementation = "broker";

  environment.defaultPackages = lib.mkForce []; # im not a noob

  services.syncthing = {
    enable = true;
    user = "collin";
    dataDir = "/home/collin/.local/syncthing";
  };
  programs.kdeconnect.enable = true;

  security.soteria.enable = true;

  virtualisation.podman = {
    enable = true;
    dockerCompat = true;
  };
  users.users.collin = {
    extraGroups = ["podman"];
    subGidRanges = [
      {
        count = 65536;
        startGid = 100000;
      }
    ];
    subUidRanges = [
      {
        count = 65536;
        startUid = 100000;
      }
    ];
  };

  services.jupyter = {
    enable = true;
    ip = "127.0.0.1";
    port = 8888;

    user = "collin"; # to access my files

    package = pkgs.python313Packages.jupyter;
    command = "jupyter lab --ServerApp.token='' --ServerApp.password=''";
    password = "";

    notebookDir = "~/brain/notes/schoolyear2025/physics";

    kernels = {
      python3 = let
        python = pkgs.python313.withPackages (ps:
          with ps; [
            numpy
            pandas
            matplotlib
            sympy
            ipywidgets
            ipydatagrid
            ipykernel
          ]);
      in {
        language = "python";
        displayName = "Python (Physics)";
        argv = ["${python}/bin/python" "-m" "ipykernel_launcher" "-f" "{connection_file}"];
      };
    };
  };

  fileSystems."/home/collin/ganymede" = {
    device = "collin@ganymede:/media";
    fsType = "fuse.sshfs";
    options = [
      "identityfile=/home/collin/.ssh/id_ed25519"
      "idmap=user"
      "x-systemd.automount" #< mount the filesystem automatically on first access
      "allow_other" #< don't restrict access to only the user which `mount`s it (because that's probably systemd who mounts it, not you)
      "user" #< allow manual `mount`ing, as ordinary user.
    ];
  };
  boot.supportedFilesystems."fuse.sshfs" = true;

  services.autossh.sessions = [
    {
      name = "ganymede";
      user = "collin";
      monitoringPort = 20000;
      extraArguments = "-N -D 9090 collin@williamsfam.us.com";
    }
  ];
  programs.ssh.extraConfig = ''
    Host ganymede
      HostName williamsfam.us.com
      Port 22
  '';
  security.pki.certificates = [
    ''
      -----BEGIN CERTIFICATE-----
      MIIBozCCAUmgAwIBAgIQbfaguvgtbo/JBep9INWMFjAKBggqhkjOPQQDAjAwMS4w
      LAYDVQQDEyVDYWRkeSBMb2NhbCBBdXRob3JpdHkgLSAyMDI1IEVDQyBSb290MB4X
      DTI1MTIyMzIzMTExMFoXDTM1MTEwMTIzMTExMFowMDEuMCwGA1UEAxMlQ2FkZHkg
      TG9jYWwgQXV0aG9yaXR5IC0gMjAyNSBFQ0MgUm9vdDBZMBMGByqGSM49AgEGCCqG
      SM49AwEHA0IABNWAL+OmSvNI1twW7CjWtVTj9PH86ejV52Tl/VKtTqacbAgS+TdU
      aaekC0skEI1BNc76lsD84yRydvci1om1vv2jRTBDMA4GA1UdDwEB/wQEAwIBBjAS
      BgNVHRMBAf8ECDAGAQH/AgEBMB0GA1UdDgQWBBShYvNluMWdF4EwkTWJgcBe8Foe
      XzAKBggqhkjOPQQDAgNIADBFAiEAkoloryXWPdw50LtidCzi9lZDScU2Uofpp8ie
      uc1PJgQCIBy3BQIcEh9ChGJ1cIrop43zMA4C9O8HwytFX11YpZnF
      -----END CERTIFICATE-----
    ''
  ];

  programs.firefox.policies.ExtensionSettings = {
    "foxyproxy@eric.h.jung" = {
      installation_mode = "force_installed";
      install_url = "https://addons.mozilla.org/firefox/downloads/latest/foxyproxy-standard/latest.xpi";
    };
  };
}