dandelion
fly-agaric
lily
lutea
modules
development
packages
services
···
1
1
-
{ ... }: {
1
1
+
{ ... }:
2
2
+
{
2
3
imports = [
3
4
./hardware.nix
4
5
./packages.nix
···
1
1
-
{ lib, modulesPath, ... }: {
1
1
+
{ lib, modulesPath, ... }:
2
2
+
{
2
3
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
3
4
4
5
boot = {
5
6
initrd = {
6
6
-
availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ];
7
7
+
availableKernelModules = [
8
8
+
"ahci"
9
9
+
"xhci_pci"
10
10
+
"virtio_pci"
11
11
+
"virtio_scsi"
12
12
+
"sd_mod"
13
13
+
"sr_mod"
14
14
+
];
7
15
kernelModules = [ ];
8
16
};
9
17
kernelModules = [ ];
···
25
33
"/" = {
26
34
device = "none";
27
35
fsType = "tmpfs";
28
28
-
options = [ "defaults" "mode=755" ];
36
36
+
options = [
37
37
+
"defaults"
38
38
+
"mode=755"
39
39
+
];
29
40
};
30
41
"/nix" = {
31
42
device = "/dev/disk/by-uuid/1b032448-bc11-4d13-9f5b-c6e980288325";
32
43
fsType = "btrfs";
33
33
-
options = [ "subvol=@nixos/nix" "compress=zstd" ];
44
44
+
options = [
45
45
+
"subvol=@nixos/nix"
46
46
+
"compress=zstd"
47
47
+
];
34
48
};
35
49
"/config" = {
36
50
device = "/dev/disk/by-uuid/1b032448-bc11-4d13-9f5b-c6e980288325";
37
51
fsType = "btrfs";
38
38
-
options = [ "subvol=@nixos/config" "compress=zstd" ];
52
52
+
options = [
53
53
+
"subvol=@nixos/config"
54
54
+
"compress=zstd"
55
55
+
];
39
56
};
40
57
"/data" = {
41
58
device = "/dev/disk/by-uuid/1b032448-bc11-4d13-9f5b-c6e980288325";
42
59
fsType = "btrfs";
43
43
-
options = [ "subvol=@nixos/data" "compress=zstd" ];
60
60
+
options = [
61
61
+
"subvol=@nixos/data"
62
62
+
"compress=zstd"
63
63
+
];
44
64
neededForBoot = true;
45
65
};
46
66
"/home/mou" = {
47
67
device = "/dev/disk/by-uuid/1b032448-bc11-4d13-9f5b-c6e980288325";
48
68
fsType = "btrfs";
49
49
-
options = [ "subvol=@home/mou" "compress=zstd" ];
69
69
+
options = [
70
70
+
"subvol=@home/mou"
71
71
+
"compress=zstd"
72
72
+
];
50
73
};
51
74
"/boot" = {
52
75
device = "/dev/disk/by-uuid/5cde8da8-fe2c-4177-90b3-000c32874610";
···
65
88
matchConfig.Name = "enp1s0";
66
89
networkConfig.DHCP = "ipv4";
67
90
address = [ "2a01:4ff:f0:41c7::1/64" ];
68
68
-
routes = [{ Gateway = "fe80::1"; }];
91
91
+
routes = [ { Gateway = "fe80::1"; } ];
69
92
};
70
93
};
71
94
···
1
1
-
{ ... }: {
1
1
+
{ ... }:
2
2
+
{
2
3
imports = [
3
4
../modules/dotfiles.nix
4
5
../modules/home.nix
···
1
1
-
{ ... }: {
1
1
+
{ ... }:
2
2
+
{
2
3
users.users.mou.packages = [ ];
3
4
}
···
28
28
esac
29
29
'';
30
30
};
31
31
-
cpCertsCommand = "${cpCerts}/bin/cpCerts {event.data.identifier} {event.data.certificate_path} "
31
31
+
cpCertsCommand =
32
32
+
"${cpCerts}/bin/cpCerts {event.data.identifier} {event.data.certificate_path} "
32
33
+ "{event.data.private_key_path}";
33
34
in
34
35
{
35
35
-
environment.persistence."/data/persistent".directories = [{
36
36
-
directory = "/var/www/org.butwho";
37
37
-
user = "mou";
38
38
-
group = "caddy";
39
39
-
mode = "0750";
40
40
-
}];
36
36
+
environment.persistence."/data/persistent".directories = [
37
37
+
{
38
38
+
directory = "/var/www/org.butwho";
39
39
+
user = "mou";
40
40
+
group = "caddy";
41
41
+
mode = "0750";
42
42
+
}
43
43
+
];
41
44
42
45
services.caddy = {
43
46
package = pkgs.caddy.withPlugins {
···
61
61
]
62
62
},
63
63
"locked": {
64
64
-
"lastModified": 1740699498,
65
65
-
"narHash": "sha256-r9hkKzX99CGiP1ZqH0e+SWKK4CMsRNRLyotuwrUjhTI=",
64
64
+
"lastModified": 1740796616,
65
65
+
"narHash": "sha256-JU97wIfRxeFN6rpTsUVCwWAdix+Wka4Or23907YIrFI=",
66
66
"owner": "nix-community",
67
67
"repo": "home-manager",
68
68
-
"rev": "b71edac7a3167026aabea82a54d08b1794088c21",
68
68
+
"rev": "f0b5e7e8a75abdea32bbff09ddd7b6eeb4b9b445",
69
69
"type": "github"
70
70
},
71
71
"original": {
···
145
145
"rust-overlay": "rust-overlay"
146
146
},
147
147
"locked": {
148
148
-
"lastModified": 1740781412,
149
149
-
"narHash": "sha256-lGrIdImgTyb4YLXCQ7SmUplbC4A04PrgvoA6vguxovs=",
148
148
+
"lastModified": 1740797373,
149
149
+
"narHash": "sha256-yx91jMqBvaBNKiintUmi2oKN/D8e032UzQ7xLMYyt2k=",
150
150
"owner": "roc-lang",
151
151
"repo": "roc",
152
152
-
"rev": "391dfb402b0ad49890ef04a5659f2f3127e0e067",
152
152
+
"rev": "1675a752debb253ebaa507fee50d23bd2f735aa5",
153
153
"type": "github"
154
154
},
155
155
"original": {
···
24
24
# nix-affine.url = "path:/data/local-flakes/nix-affine";
25
25
};
26
26
27
27
-
outputs = { self, nixpkgs, impermanence, sops-nix, home-manager, ... }@inputs:
28
28
-
let genSystemConfigs = nixpkgs.lib.genAttrs [ "dandelion" "fly-agaric" "lily" "lutea" ]; in {
29
29
-
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixpkgs-fmt;
30
30
-
nixosConfigurations = genSystemConfigs (hostname:
27
27
+
outputs =
28
28
+
{
29
29
+
self,
30
30
+
nixpkgs,
31
31
+
impermanence,
32
32
+
sops-nix,
33
33
+
home-manager,
34
34
+
...
35
35
+
}@inputs:
36
36
+
let
37
37
+
genSystemConfigs = nixpkgs.lib.genAttrs [
38
38
+
"dandelion"
39
39
+
"fly-agaric"
40
40
+
"lily"
41
41
+
"lutea"
42
42
+
];
43
43
+
in
44
44
+
{
45
45
+
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-rfc-style;
46
46
+
nixosConfigurations = genSystemConfigs (
47
47
+
hostname:
31
48
nixpkgs.lib.nixosSystem {
32
49
specialArgs = inputs;
33
50
modules = [
···
44
61
};
45
62
}
46
63
];
47
47
-
});
64
64
+
}
65
65
+
);
48
66
};
49
67
}
···
1
1
-
{ ... }: {
1
1
+
{ ... }:
2
2
+
{
2
3
imports = [
3
4
./hardware.nix
4
5
./packages.nix
···
1
1
-
{ lib, modulesPath, ... }: {
1
1
+
{ lib, modulesPath, ... }:
2
2
+
{
2
3
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
3
4
4
5
boot = {
5
6
initrd = {
6
6
-
availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ];
7
7
+
availableKernelModules = [
8
8
+
"ahci"
9
9
+
"xhci_pci"
10
10
+
"virtio_pci"
11
11
+
"virtio_scsi"
12
12
+
"sd_mod"
13
13
+
"sr_mod"
14
14
+
];
7
15
kernelModules = [ ];
8
16
};
9
17
kernelModules = [ ];
···
25
33
"/" = {
26
34
device = "none";
27
35
fsType = "tmpfs";
28
28
-
options = [ "defaults" "mode=755" ];
36
36
+
options = [
37
37
+
"defaults"
38
38
+
"mode=755"
39
39
+
];
29
40
};
30
41
"/nix" = {
31
42
device = "/dev/disk/by-uuid/e224cad1-1ea2-435b-b914-b16eb400cd36";
32
43
fsType = "btrfs";
33
33
-
options = [ "subvol=@nixos/nix" "compress=zstd" ];
44
44
+
options = [
45
45
+
"subvol=@nixos/nix"
46
46
+
"compress=zstd"
47
47
+
];
34
48
};
35
49
"/config" = {
36
50
device = "/dev/disk/by-uuid/e224cad1-1ea2-435b-b914-b16eb400cd36";
37
51
fsType = "btrfs";
38
38
-
options = [ "subvol=@nixos/config" "compress=zstd" ];
52
52
+
options = [
53
53
+
"subvol=@nixos/config"
54
54
+
"compress=zstd"
55
55
+
];
39
56
};
40
57
"/data" = {
41
58
device = "/dev/disk/by-uuid/e224cad1-1ea2-435b-b914-b16eb400cd36";
42
59
fsType = "btrfs";
43
43
-
options = [ "subvol=@nixos/data" "compress=zstd" ];
60
60
+
options = [
61
61
+
"subvol=@nixos/data"
62
62
+
"compress=zstd"
63
63
+
];
44
64
neededForBoot = true;
45
65
};
46
66
"/home/mou" = {
47
67
device = "/dev/disk/by-uuid/e224cad1-1ea2-435b-b914-b16eb400cd36";
48
68
fsType = "btrfs";
49
49
-
options = [ "subvol=@home/mou" "compress=zstd" ];
69
69
+
options = [
70
70
+
"subvol=@home/mou"
71
71
+
"compress=zstd"
72
72
+
];
50
73
};
51
74
"/boot" = {
52
75
device = "/dev/disk/by-uuid/00e4dfc3-8bf9-4075-92fa-3da33ef09704";
···
65
88
matchConfig.Name = "enp1s0";
66
89
networkConfig.DHCP = "ipv4";
67
90
address = [ "2a01:4ff:f0:348a::1/64" ];
68
68
-
routes = [{ Gateway = "fe80::1"; }];
91
91
+
routes = [ { Gateway = "fe80::1"; } ];
69
92
};
70
93
};
71
94
···
1
1
-
{ ... }: {
1
1
+
{ ... }:
2
2
+
{
2
3
imports = [ ../modules/home.nix ];
3
4
home.stateVersion = "24.05";
4
5
}
···
1
1
-
{ ... }: {
1
1
+
{ ... }:
2
2
+
{
2
3
users.users.mou.packages = [ ];
3
4
}
···
1
1
-
{ ... }: {
1
1
+
{ ... }:
2
2
+
{
2
3
imports = [
3
4
./hardware.nix
4
5
./packages.nix
···
24
25
];
25
26
26
27
# TODO: Make the hidden.json public across all hosts to share more info
27
27
-
mInfo = let hidden = builtins.fromJSON (builtins.readFile ./hidden.json); in {
28
28
-
ipv4 = "192.168.1.92";
29
29
-
ipv6 = hidden.ipv6;
30
30
-
nb-ipv4 = "100.77.30.206";
31
31
-
server = true;
32
32
-
};
28
28
+
mInfo =
29
29
+
let
30
30
+
hidden = builtins.fromJSON (builtins.readFile ./hidden.json);
31
31
+
in
32
32
+
{
33
33
+
ipv4 = "192.168.1.92";
34
34
+
ipv6 = hidden.ipv6;
35
35
+
nb-ipv4 = "100.77.30.206";
36
36
+
server = true;
37
37
+
};
33
38
34
39
sops = {
35
40
defaultSopsFile = ../secrets/lily.yaml;
···
1
1
-
{ lib, modulesPath, ... }: {
1
1
+
{ lib, modulesPath, ... }:
2
2
+
{
2
3
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
3
4
4
5
boot = {
5
6
initrd = {
6
6
-
availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
7
7
+
availableKernelModules = [
8
8
+
"xhci_pci"
9
9
+
"ahci"
10
10
+
"usbhid"
11
11
+
"usb_storage"
12
12
+
"sd_mod"
13
13
+
];
7
14
kernelModules = [ ];
8
15
};
9
16
kernelModules = [ "kvm-intel" ];
···
25
32
"/" = {
26
33
device = "none";
27
34
fsType = "tmpfs";
28
28
-
options = [ "defaults" "mode=755" ];
35
35
+
options = [
36
36
+
"defaults"
37
37
+
"mode=755"
38
38
+
];
29
39
};
30
40
"/nix" = {
31
41
device = "/dev/disk/by-uuid/f31dac70-545a-41bc-97da-39fabafb2b3b";
32
42
fsType = "btrfs";
33
33
-
options = [ "subvol=@nixos/nix" "compress=zstd" "discard=async" ];
43
43
+
options = [
44
44
+
"subvol=@nixos/nix"
45
45
+
"compress=zstd"
46
46
+
"discard=async"
47
47
+
];
34
48
};
35
49
"/config" = {
36
50
device = "/dev/disk/by-uuid/f31dac70-545a-41bc-97da-39fabafb2b3b";
37
51
fsType = "btrfs";
38
38
-
options = [ "subvol=@nixos/config" "compress=zstd" "discard=async" ];
52
52
+
options = [
53
53
+
"subvol=@nixos/config"
54
54
+
"compress=zstd"
55
55
+
"discard=async"
56
56
+
];
39
57
};
40
58
"/data" = {
41
59
device = "/dev/disk/by-uuid/f31dac70-545a-41bc-97da-39fabafb2b3b";
42
60
fsType = "btrfs";
43
43
-
options = [ "subvol=@nixos/data" "compress=zstd" "discard=async" ];
61
61
+
options = [
62
62
+
"subvol=@nixos/data"
63
63
+
"compress=zstd"
64
64
+
"discard=async"
65
65
+
];
44
66
neededForBoot = true;
45
67
};
46
68
"/home/mou" = {
47
69
device = "/dev/disk/by-uuid/f31dac70-545a-41bc-97da-39fabafb2b3b";
48
70
fsType = "btrfs";
49
49
-
options = [ "subvol=@home/mou" "compress=zstd" "discard=async" ];
71
71
+
options = [
72
72
+
"subvol=@home/mou"
73
73
+
"compress=zstd"
74
74
+
"discard=async"
75
75
+
];
50
76
};
51
77
"/boot" = {
52
78
device = "/dev/disk/by-uuid/AA21-D01C";
53
79
fsType = "vfat";
54
54
-
options = [ "fmask=0077" "dmask=0077" "defaults" ];
80
80
+
options = [
81
81
+
"fmask=0077"
82
82
+
"dmask=0077"
83
83
+
"defaults"
84
84
+
];
55
85
};
56
86
};
57
87
···
1
1
-
{ ... }: {
1
1
+
{ ... }:
2
2
+
{
2
3
imports = [
3
4
../modules/dotfiles.nix
4
5
../modules/home.nix
···
1
1
-
{ ... }: {
1
1
+
{ ... }:
2
2
+
{
2
3
users.users.mou.packages = [ ];
3
4
}
···
1
1
-
{ ... }: {
1
1
+
{ ... }:
2
2
+
{
2
3
# Since this server is on my local network, I'm also ignoring my local ip
3
4
services.fail2ban.ignoreIP = [ "192.168.1.94" ];
4
5
}
···
1
1
-
{ ... }: {
1
1
+
{ ... }:
2
2
+
{
2
3
imports = [
3
4
./hardware.nix
4
5
./packages.nix
···
1
1
-
{ lib, pkgs, modulesPath, ... }: {
1
1
+
{
2
2
+
lib,
3
3
+
pkgs,
4
4
+
modulesPath,
5
5
+
...
6
6
+
}:
7
7
+
{
2
8
imports = [
3
9
(modulesPath + "/installer/scan/not-detected.nix")
4
10
../modules/mounts.nix
···
6
12
7
13
boot = {
8
14
initrd = {
9
9
-
availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
15
15
+
availableKernelModules = [
16
16
+
"xhci_pci"
17
17
+
"ahci"
18
18
+
"nvme"
19
19
+
"usbhid"
20
20
+
"usb_storage"
21
21
+
"sd_mod"
22
22
+
];
10
23
kernelModules = [ ];
11
24
};
12
25
kernel.sysctl."vm.max_map_count" = 2147483642;
···
1
1
-
{ config, ... }: {
1
1
+
{ config, ... }:
2
2
+
{
2
3
home = {
3
4
username = "mou";
4
5
homeDirectory = "/home/${config.home.username}";
···
1
1
-
{ pkgs, ... }: {
1
1
+
{ pkgs, ... }:
2
2
+
{
2
3
programs.virt-manager.enable = true;
3
4
users.users.mou.packages = with pkgs; [ intel-gpu-tools ];
4
5
}
···
1
1
-
{ ... }: {
1
1
+
{ ... }:
2
2
+
{
2
3
security.rtkit.enable = true;
3
4
services.pipewire = {
4
5
enable = true;
···
1
1
-
{ config, pkgs, yemou-scripts, ... }: {
1
1
+
{
2
2
+
config,
3
3
+
pkgs,
4
4
+
yemou-scripts,
5
5
+
...
6
6
+
}:
7
7
+
{
2
8
nixpkgs.overlays = [ yemou-scripts.overlays.default ];
3
9
4
10
sops.secrets = {
···
21
27
"/var/log"
22
28
"/var/lib/nixos"
23
29
"/var/lib/systemd/coredump"
24
24
-
{ directory = "/var/lib/private"; mode = "0700"; }
30
30
+
{
31
31
+
directory = "/var/lib/private";
32
32
+
mode = "0700";
33
33
+
}
25
34
];
26
35
};
27
36
sessionVariables = {
···
54
63
systemd.network.enable = true;
55
64
networking = {
56
65
useNetworkd = true;
57
57
-
nameservers = [ "9.9.9.9" "149.112.112.112" "2620:fe::fe" "2620:fe::9" ];
66
66
+
nameservers = [
67
67
+
"9.9.9.9"
68
68
+
"149.112.112.112"
69
69
+
"2620:fe::fe"
70
70
+
"2620:fe::9"
71
71
+
];
58
72
};
59
73
60
74
users = {
···
64
78
mou = {
65
79
isNormalUser = true;
66
80
group = "mou";
67
67
-
extraGroups = [ "users" "wheel" ];
81
81
+
extraGroups = [
82
82
+
"users"
83
83
+
"wheel"
84
84
+
];
68
85
shell = pkgs.loksh;
69
86
hashedPasswordFile = config.sops.secrets."passwordHashes/mou".path;
70
87
};
···
1
1
-
{ config, lib, ... }: {
1
1
+
{ config, lib, ... }:
2
2
+
{
2
3
nix = {
3
4
settings = {
4
5
substituters = [
···
1
1
-
{ pkgs, ... }: {
1
1
+
{ pkgs, ... }:
2
2
+
{
2
3
imports = [ ./unfree.nix ];
3
4
unfree.allowed = [ "microsoft-edge" ];
4
5
···
1
1
-
{ pkgs, ... }: {
2
2
-
users.users.mou.packages = with pkgs;[ nextcloud-client ];
1
1
+
{ pkgs, ... }:
2
2
+
{
3
3
+
users.users.mou.packages = with pkgs; [ nextcloud-client ];
3
4
}
···
1
1
-
{ pkgs, ... }: {
1
1
+
{ pkgs, ... }:
2
2
+
{
2
3
users.users.mou.packages = with pkgs; [ inkscape ];
3
4
}
···
1
1
-
{ pkgs, ... }: {
2
2
-
users.users.mou.packages = with pkgs; [ bear clang-tools gdb ];
1
1
+
{ pkgs, ... }:
2
2
+
{
3
3
+
users.users.mou.packages = with pkgs; [
4
4
+
bear
5
5
+
clang-tools
6
6
+
gdb
7
7
+
];
3
8
}
···
1
1
-
{ ... }: {
1
1
+
{ ... }:
2
2
+
{
2
3
imports = [
3
4
./c.nix
4
5
./go.nix
···
11
12
./zig.nix
12
13
];
13
14
}
14
14
-
···
1
1
-
{ pkgs, ... }: {
1
1
+
{ pkgs, ... }:
2
2
+
{
2
3
users.users.mou.packages = with pkgs; [ gopls ];
3
4
}
···
1
1
-
{ pkgs, ... }: {
2
2
-
users.users.mou.packages = with pkgs; [ nixd nixpkgs-fmt ];
1
1
+
{ pkgs, ... }:
2
2
+
{
3
3
+
users.users.mou.packages = with pkgs; [
4
4
+
nixd
5
5
+
nixfmt-rfc-style
6
6
+
];
3
7
}
···
1
1
-
{ pkgs, ... }: {
1
1
+
{ pkgs, ... }:
2
2
+
{
2
3
users.users.mou.packages = with pkgs; [ ruff ];
3
4
}
···
1
1
-
{ pkgs, roc-lang, ... }: {
1
1
+
{ pkgs, roc-lang, ... }:
2
2
+
{
2
3
nixpkgs.overlays = [
3
4
(final: prev: {
4
5
roc = roc-lang.packages.${prev.system}.default;
···
6
7
})
7
8
];
8
9
9
9
-
users.users.mou.packages = with pkgs; [ roc roc-lang-server ];
10
10
+
users.users.mou.packages = with pkgs; [
11
11
+
roc
12
12
+
roc-lang-server
13
13
+
];
10
14
}
···
1
1
-
{ pkgs, ... }: {
1
1
+
{ pkgs, ... }:
2
2
+
{
2
3
users.users.mou.packages = with pkgs; [ shellcheck ];
3
4
}
···
1
1
-
{ pkgs, ... }: {
1
1
+
{ pkgs, ... }:
2
2
+
{
2
3
users.users.mou.packages = with pkgs; [ sqlitebrowser ];
3
4
}
4
4
-
···
1
1
-
{ pkgs, ... }: {
1
1
+
{ pkgs, ... }:
2
2
+
{
2
3
users.users.mou.packages = with pkgs; [
3
4
tinymist
4
5
typst
···
1
1
-
{ pkgs, ... }: {
1
1
+
{ pkgs, ... }:
2
2
+
{
2
3
users.users.mou.packages = with pkgs; [ zls ];
3
4
}
···
1
1
-
{ yemou-dotfiles, ... }: {
1
1
+
{ yemou-dotfiles, ... }:
2
2
+
{
2
3
home.file.".ssh/allowed_signers".source = "${yemou-dotfiles}/ssh/allowed_signers";
3
4
xdg.configFile = {
4
5
"git".source = "${yemou-dotfiles}/config/git";
5
5
-
"kak" = { recursive = true; source = "${yemou-dotfiles}/config/kak"; };
6
6
+
"kak" = {
7
7
+
recursive = true;
8
8
+
source = "${yemou-dotfiles}/config/kak";
9
9
+
};
6
10
"loksh".source = "${yemou-dotfiles}/config/loksh";
7
11
"thm".source = "${yemou-dotfiles}/config/thm";
8
12
};
···
1
1
-
{ pkgs, ... }: {
1
1
+
{ pkgs, ... }:
2
2
+
{
2
3
nixpkgs.overlays = [
3
4
(final: prev: {
4
4
-
kakoune-unwrapped = prev.kakoune-unwrapped.overrideAttrs (finalAttrs: prevAttrs: {
5
5
-
patches = (prevAttrs.patches or [ ]) ++ [
6
6
-
(pkgs.fetchpatch {
7
7
-
url = "https://patch-diff.githubusercontent.com/raw/mawww/kakoune/pull/5183.patch";
8
8
-
hash = "sha256-XEU9pJybAuVuh+/euL6UY+65reXeUUbI2vvI/4Ao9ug=";
9
9
-
})
10
10
-
(pkgs.fetchpatch {
11
11
-
url = "https://github.com/yemouu/kakoune/commit/15d4f7585fdac03e460e59b0508aecd636bd2660.patch";
12
12
-
hash = "sha256-v7JvtEQ/XrXnFx77kseP2LPJv93GGywP/N4wVyISu8g=";
13
13
-
})
14
14
-
];
15
15
-
});
5
5
+
kakoune-unwrapped = prev.kakoune-unwrapped.overrideAttrs (
6
6
+
finalAttrs: prevAttrs: {
7
7
+
patches = (prevAttrs.patches or [ ]) ++ [
8
8
+
(pkgs.fetchpatch {
9
9
+
url = "https://patch-diff.githubusercontent.com/raw/mawww/kakoune/pull/5183.patch";
10
10
+
hash = "sha256-XEU9pJybAuVuh+/euL6UY+65reXeUUbI2vvI/4Ao9ug=";
11
11
+
})
12
12
+
(pkgs.fetchpatch {
13
13
+
url = "https://github.com/yemouu/kakoune/commit/15d4f7585fdac03e460e59b0508aecd636bd2660.patch";
14
14
+
hash = "sha256-v7JvtEQ/XrXnFx77kseP2LPJv93GGywP/N4wVyISu8g=";
15
15
+
})
16
16
+
];
17
17
+
}
18
18
+
);
16
19
})
17
20
];
18
21
···
1
1
-
{ pkgs, ... }: {
1
1
+
{ pkgs, ... }:
2
2
+
{
2
3
3
4
nixpkgs.overlays = [
4
4
-
(final: prev: { sieve-editor-gui = prev.sieve-editor-gui.override { electron = final.electron-bin; }; })
5
5
+
(final: prev: {
6
6
+
sieve-editor-gui = prev.sieve-editor-gui.override { electron = final.electron-bin; };
7
7
+
})
5
8
];
6
9
7
10
users.users.mou.packages = with pkgs; [
···
1
1
-
{ ... }: {
1
1
+
{ ... }:
2
2
+
{
2
3
environment.persistence."/data/persistent".directories = [ "/var/lib/fail2ban" ];
3
4
4
5
services.fail2ban = {
···
1
1
-
{ ... }: {
1
1
+
{ ... }:
2
2
+
{
2
3
environment.persistence."/data/persistent".directories = [ "/var/lib/flatpak" ];
3
4
services.flatpak.enable = true;
4
5
}
···
1
1
-
{ pkgs, ... }: {
1
1
+
{ pkgs, ... }:
2
2
+
{
2
3
fonts = {
3
4
enableDefaultPackages = true;
4
5
packages = with pkgs; [
···
1
1
-
{ ... }: {
1
1
+
{ ... }:
2
2
+
{
2
3
services.fwupd.enable = true;
3
4
}
···
1
1
-
{ lib, pkgs, ... }: {
1
1
+
{ lib, pkgs, ... }:
2
2
+
{
2
3
imports = [ ./unfree.nix ];
3
4
unfree.allowed = [
4
5
"modrinth-app"
···
11
12
12
13
nixpkgs.overlays = [
13
14
(final: prev: {
14
14
-
extest = prev.extest.overrideAttrs (finalAttrs: prevAttrs: {
15
15
-
version = "1.0.3";
15
15
+
extest = prev.extest.overrideAttrs (
16
16
+
finalAttrs: prevAttrs: {
17
17
+
version = "1.0.3";
16
18
17
17
-
src = prev.fetchFromGitHub {
18
18
-
owner = "Supreeeme";
19
19
-
repo = "extest";
20
20
-
rev = "1a419a1691c6accaafef6cfc962a06712d4658e9";
21
21
-
hash = "sha256-q0BqvdIdcUARGmaPOnzPVLtcWFHJeZ9t2jcfYxS0KTk=";
22
22
-
};
19
19
+
src = prev.fetchFromGitHub {
20
20
+
owner = "Supreeeme";
21
21
+
repo = "extest";
22
22
+
rev = "1a419a1691c6accaafef6cfc962a06712d4658e9";
23
23
+
hash = "sha256-q0BqvdIdcUARGmaPOnzPVLtcWFHJeZ9t2jcfYxS0KTk=";
24
24
+
};
23
25
24
24
-
cargoDeps = prev.rustPlatform.fetchCargoVendor {
25
25
-
src = finalAttrs.src;
26
26
-
hash = "sha256-J9HuZwZ3UYyW2unFxBeap80yPCvdVGQ7pfsdI9qU3QE=";
27
27
-
};
28
28
-
});
26
26
+
cargoDeps = prev.rustPlatform.fetchCargoVendor {
27
27
+
src = finalAttrs.src;
28
28
+
hash = "sha256-J9HuZwZ3UYyW2unFxBeap80yPCvdVGQ7pfsdI9qU3QE=";
29
29
+
};
30
30
+
}
31
31
+
);
29
32
30
30
-
mesa = prev.mesa.overrideAttrs (finalAttrs: prevAttrs: {
31
31
-
git-hash = "7276191d5944b4c3d5a272a4a07274933fac4346";
32
32
-
version = "25.0.0-${finalAttrs.git-hash}";
33
33
+
mesa = prev.mesa.overrideAttrs (
34
34
+
finalAttrs: prevAttrs: {
35
35
+
git-hash = "7276191d5944b4c3d5a272a4a07274933fac4346";
36
36
+
version = "25.0.0-${finalAttrs.git-hash}";
33
37
34
34
-
src = prev.fetchFromGitLab {
35
35
-
domain = "gitlab.freedesktop.org";
36
36
-
owner = "mesa";
37
37
-
repo = "mesa";
38
38
-
rev = "${finalAttrs.git-hash}";
39
39
-
hash = "sha256-y9bktQUXEf8VCrQPYcMsD5/1bC5sgK0vhRQJkc1DfE0=";
40
40
-
};
38
38
+
src = prev.fetchFromGitLab {
39
39
+
domain = "gitlab.freedesktop.org";
40
40
+
owner = "mesa";
41
41
+
repo = "mesa";
42
42
+
rev = "${finalAttrs.git-hash}";
43
43
+
hash = "sha256-y9bktQUXEf8VCrQPYcMsD5/1bC5sgK0vhRQJkc1DfE0=";
44
44
+
};
41
45
42
42
-
# patches = lib.lists.take 1 prevAttrs.patches;
43
43
-
patches = [ ./packages/mesa/opencl.patch ];
44
44
-
mesonFlags = lib.lists.remove (lib.mesonBool "opencl-spirv" true) prevAttrs.mesonFlags;
45
45
-
});
46
46
+
# patches = lib.lists.take 1 prevAttrs.patches;
47
47
+
patches = [ ./packages/mesa/opencl.patch ];
48
48
+
mesonFlags = lib.lists.remove (lib.mesonBool "opencl-spirv" true) prevAttrs.mesonFlags;
49
49
+
}
50
50
+
);
46
51
47
52
r2modman = prev.r2modman.override { electron = prev.electron-bin; };
48
53
···
55
60
in
56
61
(prev.rpcs3.override {
57
62
llvm_16 = prev.llvm_18;
58
58
-
pugixml = prev.pugixml.overrideAttrs (finalAttrs: prevAttrs: {
59
59
-
version = "1.15";
60
60
-
src = prev.fetchFromGitHub {
61
61
-
owner = "zeux";
62
62
-
repo = "pugixml";
63
63
-
rev = "v${finalAttrs.version}";
64
64
-
sha256 = "sha256-t/57lg32KgKPc7qRGQtO/GOwHRqoj78lllSaE/A8Z9Q=";
65
65
-
};
66
66
-
});
67
67
-
}).overrideAttrs (finalAttrs: prevAttrs: {
68
68
-
version = rpcs3Version;
63
63
+
pugixml = prev.pugixml.overrideAttrs (
64
64
+
finalAttrs: prevAttrs: {
65
65
+
version = "1.15";
66
66
+
src = prev.fetchFromGitHub {
67
67
+
owner = "zeux";
68
68
+
repo = "pugixml";
69
69
+
rev = "v${finalAttrs.version}";
70
70
+
sha256 = "sha256-t/57lg32KgKPc7qRGQtO/GOwHRqoj78lllSaE/A8Z9Q=";
71
71
+
};
72
72
+
}
73
73
+
);
74
74
+
}).overrideAttrs
75
75
+
(
76
76
+
finalAttrs: prevAttrs: {
77
77
+
version = rpcs3Version;
69
78
70
70
-
src = prev.fetchFromGitHub {
71
71
-
owner = "RPCS3";
72
72
-
repo = "rpcs3";
73
73
-
rev = rpcs3Revision;
74
74
-
fetchSubmodules = true;
75
75
-
hash = rpcs3Hash;
76
76
-
};
79
79
+
src = prev.fetchFromGitHub {
80
80
+
owner = "RPCS3";
81
81
+
repo = "rpcs3";
82
82
+
rev = rpcs3Revision;
83
83
+
fetchSubmodules = true;
84
84
+
hash = rpcs3Hash;
85
85
+
};
77
86
78
78
-
preConfigure = ''
79
79
-
cat > ./rpcs3/git-version.h <<EOF
80
80
-
#define RPCS3_GIT_VERSION "${rpcs3GitVersion}"
81
81
-
#define RPCS3_GIT_FULL_BRANCH "RPCS3/rpcs3/master"
82
82
-
#define RPCS3_GIT_BRANCH "HEAD"
83
83
-
#define RPCS3_GIT_VERSION_NO_UPDATE 1
84
84
-
EOF
85
85
-
'';
86
86
-
});
87
87
+
preConfigure = ''
88
88
+
cat > ./rpcs3/git-version.h <<EOF
89
89
+
#define RPCS3_GIT_VERSION "${rpcs3GitVersion}"
90
90
+
#define RPCS3_GIT_FULL_BRANCH "RPCS3/rpcs3/master"
91
91
+
#define RPCS3_GIT_BRANCH "HEAD"
92
92
+
#define RPCS3_GIT_VERSION_NO_UPDATE 1
93
93
+
EOF
94
94
+
'';
95
95
+
}
96
96
+
);
87
97
})
88
98
];
89
99
···
1
1
-
{ lib, pkgs, yemou-scripts, ... }: {
1
1
+
{
2
2
+
lib,
3
3
+
pkgs,
4
4
+
yemou-scripts,
5
5
+
...
6
6
+
}:
7
7
+
{
2
8
nixpkgs.overlays = [
3
9
yemou-scripts.overlays.default
4
10
(final: prev: {
5
5
-
nautilus = prev.nautilus.overrideAttrs (finalAttrs: prevAttrs: {
6
6
-
postInstall = (prevAttrs.postInstall or "") + ''
7
7
-
mkdir -p $out/share/xdg-desktop-portal/portals
8
8
-
cat > $out/share/xdg-desktop-portal/portals/nautilus.portal <<EOF
9
9
-
[portal]
10
10
-
DBusName=org.gnome.Nautilus
11
11
-
Interfaces=org.freedesktop.impl.portal.FileChooser
12
12
-
EOF
13
13
-
'';
14
14
-
});
11
11
+
nautilus = prev.nautilus.overrideAttrs (
12
12
+
finalAttrs: prevAttrs: {
13
13
+
postInstall =
14
14
+
(prevAttrs.postInstall or "")
15
15
+
+ ''
16
16
+
mkdir -p $out/share/xdg-desktop-portal/portals
17
17
+
cat > $out/share/xdg-desktop-portal/portals/nautilus.portal <<EOF
18
18
+
[portal]
19
19
+
DBusName=org.gnome.Nautilus
20
20
+
Interfaces=org.freedesktop.impl.portal.FileChooser
21
21
+
EOF
22
22
+
'';
23
23
+
}
24
24
+
);
15
25
})
16
26
];
17
27
···
56
66
dconf.enable = true;
57
67
river = {
58
68
enable = true;
59
59
-
package = pkgs.river.overrideAttrs (final: prev: {
60
60
-
postInstall = ''
61
61
-
echo 'DesktopNames=river;wlroots' >> contrib/river.desktop
62
62
-
'' + prev.postInstall;
63
63
-
});
69
69
+
package = pkgs.river.overrideAttrs (
70
70
+
final: prev: {
71
71
+
postInstall =
72
72
+
''
73
73
+
echo 'DesktopNames=river;wlroots' >> contrib/river.desktop
74
74
+
''
75
75
+
+ prev.postInstall;
76
76
+
}
77
77
+
);
64
78
# TODO: Move organize these some how
65
79
extraPackages = with pkgs; [
66
80
bemenu
···
100
114
};
101
115
102
116
# System-wide packages
103
103
-
environment. systemPackages = with pkgs; [ adwaita-icon-theme ];
117
117
+
environment.systemPackages = with pkgs; [ adwaita-icon-theme ];
104
118
105
119
# Per-user packages
106
120
users.users.mou.packages = with pkgs; [
···
1
1
-
{ pkgs, ... }: {
1
1
+
{ pkgs, ... }:
2
2
+
{
2
3
users.users.mou.packages = with pkgs; [
3
4
yubikey-manager
4
5
yubikey-manager-qt
···
10
10
"/home/mou/aud" = {
11
11
device = disk;
12
12
fsType = "btrfs";
13
13
-
options = [ "subvol=@home/mou/aud" "compress=zstd" "discard=async" ];
13
13
+
options = [
14
14
+
"subvol=@home/mou/aud"
15
15
+
"compress=zstd"
16
16
+
"discard=async"
17
17
+
];
14
18
};
15
19
"/home/mou/.cache" = {
16
20
device = disk;
17
21
fsType = "btrfs";
18
18
-
options = [ "subvol=@home/mou/cache" "compress=zstd" "discard=async" ];
22
22
+
options = [
23
23
+
"subvol=@home/mou/cache"
24
24
+
"compress=zstd"
25
25
+
"discard=async"
26
26
+
];
19
27
};
20
28
"/home/mou/.config" = {
21
29
device = disk;
22
30
fsType = "btrfs";
23
23
-
options = [ "subvol=@home/mou/config" "compress=zstd" "discard=async" ];
31
31
+
options = [
32
32
+
"subvol=@home/mou/config"
33
33
+
"compress=zstd"
34
34
+
"discard=async"
35
35
+
];
24
36
};
25
37
"/home/mou/dls" = {
26
38
device = disk;
27
39
fsType = "btrfs";
28
28
-
options = [ "subvol=@home/mou/dls" "compress=zstd" "discard=async" ];
40
40
+
options = [
41
41
+
"subvol=@home/mou/dls"
42
42
+
"compress=zstd"
43
43
+
"discard=async"
44
44
+
];
29
45
};
30
46
"/home/mou/doc" = {
31
47
device = disk;
32
48
fsType = "btrfs";
33
33
-
options = [ "subvol=@home/mou/doc" "compress=zstd" "discard=async" ];
49
49
+
options = [
50
50
+
"subvol=@home/mou/doc"
51
51
+
"compress=zstd"
52
52
+
"discard=async"
53
53
+
];
34
54
};
35
55
"/home/mou/.local" = {
36
56
device = disk;
37
57
fsType = "btrfs";
38
38
-
options = [ "subvol=@home/mou/local" "compress=zstd" "discard=async" ];
58
58
+
options = [
59
59
+
"subvol=@home/mou/local"
60
60
+
"compress=zstd"
61
61
+
"discard=async"
62
62
+
];
39
63
};
40
64
"/home/mou/misc" = {
41
65
device = disk;
42
66
fsType = "btrfs";
43
43
-
options = [ "subvol=@home/mou/misc" "compress=zstd" "discard=async" ];
67
67
+
options = [
68
68
+
"subvol=@home/mou/misc"
69
69
+
"compress=zstd"
70
70
+
"discard=async"
71
71
+
];
44
72
};
45
73
"/home/mou/pic" = {
46
74
device = disk;
47
75
fsType = "btrfs";
48
48
-
options = [ "subvol=@home/mou/pic" "compress=zstd" "discard=async" ];
76
76
+
options = [
77
77
+
"subvol=@home/mou/pic"
78
78
+
"compress=zstd"
79
79
+
"discard=async"
80
80
+
];
49
81
};
50
82
"/home/mou/vid" = {
51
83
device = disk;
52
84
fsType = "btrfs";
53
53
-
options = [ "subvol=@home/mou/vid" "compress=zstd" "discard=async" ];
85
85
+
options = [
86
86
+
"subvol=@home/mou/vid"
87
87
+
"compress=zstd"
88
88
+
"discard=async"
89
89
+
];
54
90
};
55
91
};
56
92
···
1
1
-
{ config, ... }: {
1
1
+
{ config, ... }:
2
2
+
{
2
3
home = {
3
4
username = "mou";
4
5
homeDirectory = "/home/${config.home.username}";
···
35
36
36
37
home.stateVersion = "24.05";
37
38
}
38
38
-
···
1
1
-
{ pkgs, ... }: {
1
1
+
{ pkgs, ... }:
2
2
+
{
2
3
imports = [ ./unfree.nix ];
3
4
unfree.allowed = [ "zoom" ];
4
5
···
1
1
-
{ pkgs, ... }: {
1
1
+
{ pkgs, ... }:
2
2
+
{
2
3
services = {
3
4
desktopManager.plasma6.enable = true;
4
5
xserver.enable = true; # Without this set plasma6 will fail to start even when using wayland
···
1
1
-
{ config, ... }: {
1
1
+
{ config, ... }:
2
2
+
{
2
3
# This needs to be world readable
3
4
sops.secrets."machine-id".mode = "0444";
4
5
environment.etc."machine-id".source = config.sops.secrets."machine-id".path;
···
1
1
-
{ lib, ... }: {
1
1
+
{ lib, ... }:
2
2
+
{
2
3
options.mInfo = {
3
4
gui = lib.mkOption {
4
5
type = with lib.types; bool;
···
1
1
-
{ ... }: {
2
2
-
fileSystems = let disk = "/dev/disk/by-uuid/7bf830d4-189d-4e9b-bcb0-565f4ac69e67"; in {
3
3
-
"/" = {
4
4
-
device = "none";
5
5
-
fsType = "tmpfs";
6
6
-
options = [ "defaults" "mode=755" ];
7
7
-
};
8
8
-
"/data" = {
9
9
-
device = disk;
10
10
-
fsType = "btrfs";
11
11
-
options = [ "subvol=@nixos/data" "compress=zstd" "discard=async" ];
12
12
-
neededForBoot = true;
13
13
-
};
14
14
-
"/nix" = {
15
15
-
device = disk;
16
16
-
fsType = "btrfs";
17
17
-
options = [ "subvol=@nixos/nix" "compress=zstd" "discard=async" ];
18
18
-
};
19
19
-
"/config" = {
20
20
-
device = disk;
21
21
-
fsType = "btrfs";
22
22
-
options = [ "subvol=@nixos/config" "compress=zstd" "discard=async" ];
23
23
-
};
24
24
-
"/boot" = {
25
25
-
device = "/dev/disk/by-uuid/862D-85DB";
26
26
-
fsType = "vfat";
27
27
-
options = [ "fmask=0077" "dmask=0077" "defaults" ];
1
1
+
{ ... }:
2
2
+
{
3
3
+
fileSystems =
4
4
+
let
5
5
+
disk = "/dev/disk/by-uuid/7bf830d4-189d-4e9b-bcb0-565f4ac69e67";
6
6
+
in
7
7
+
{
8
8
+
"/" = {
9
9
+
device = "none";
10
10
+
fsType = "tmpfs";
11
11
+
options = [
12
12
+
"defaults"
13
13
+
"mode=755"
14
14
+
];
15
15
+
};
16
16
+
"/data" = {
17
17
+
device = disk;
18
18
+
fsType = "btrfs";
19
19
+
options = [
20
20
+
"subvol=@nixos/data"
21
21
+
"compress=zstd"
22
22
+
"discard=async"
23
23
+
];
24
24
+
neededForBoot = true;
25
25
+
};
26
26
+
"/nix" = {
27
27
+
device = disk;
28
28
+
fsType = "btrfs";
29
29
+
options = [
30
30
+
"subvol=@nixos/nix"
31
31
+
"compress=zstd"
32
32
+
"discard=async"
33
33
+
];
34
34
+
};
35
35
+
"/config" = {
36
36
+
device = disk;
37
37
+
fsType = "btrfs";
38
38
+
options = [
39
39
+
"subvol=@nixos/config"
40
40
+
"compress=zstd"
41
41
+
"discard=async"
42
42
+
];
43
43
+
};
44
44
+
"/boot" = {
45
45
+
device = "/dev/disk/by-uuid/862D-85DB";
46
46
+
fsType = "vfat";
47
47
+
options = [
48
48
+
"fmask=0077"
49
49
+
"dmask=0077"
50
50
+
"defaults"
51
51
+
];
52
52
+
};
28
53
};
29
29
-
};
30
54
}
···
1
1
-
{ config, ... }: {
2
2
-
environment.persistence."/data/persistent".directories = [{
3
3
-
directory = config.services.netbird.clients.homelab.dir.state;
4
4
-
mode = "0700";
5
5
-
user = config.services.netbird.clients.homelab.user.name;
6
6
-
group = config.services.netbird.clients.homelab.user.group;
7
7
-
}];
1
1
+
{ config, ... }:
2
2
+
{
3
3
+
environment.persistence."/data/persistent".directories = [
4
4
+
{
5
5
+
directory = config.services.netbird.clients.homelab.dir.state;
6
6
+
mode = "0700";
7
7
+
user = config.services.netbird.clients.homelab.user.name;
8
8
+
group = config.services.netbird.clients.homelab.user.group;
9
9
+
}
10
10
+
];
8
11
9
12
services.netbird.clients.homelab = {
10
13
port = 51820;
···
1
1
-
{ nixpkgs, pkgs, ... }: {
1
1
+
{ nixpkgs, pkgs, ... }:
2
2
+
{
2
3
systemd = {
3
4
services.nix-daemon.environment.TMPDIR = "/nix/tmp";
4
5
tmpfiles.rules = [ "d /nix/tmp - root root 1d" ];
···
21
22
auto-optimise-store = true;
22
23
build-dir = "/nix/tmp";
23
24
download-buffer-size = 134217728;
24
24
-
experimental-features = [ "nix-command" "flakes" ];
25
25
+
experimental-features = [
26
26
+
"nix-command"
27
27
+
"flakes"
28
28
+
];
25
29
keep-going = true;
26
30
use-xdg-base-directories = true;
27
31
};
···
1
1
-
{ config, lib, ... }: {
1
1
+
{ config, lib, ... }:
2
2
+
{
2
3
environment.persistence."/data/persistent".files = [
3
4
"/etc/ssh/ssh_host_ed25519_key"
4
5
"/etc/ssh/ssh_host_ed25519_key.pub"
···
1
1
-
{ age
2
2
-
, coreutils
3
3
-
, git
4
4
-
, nettools
5
5
-
, nixos-rebuild
6
6
-
, sops
7
7
-
, writeShellApplication
8
8
-
}: writeShellApplication {
1
1
+
{
2
2
+
age,
3
3
+
coreutils,
4
4
+
git,
5
5
+
nettools,
6
6
+
nixos-rebuild,
7
7
+
sops,
8
8
+
writeShellApplication,
9
9
+
}:
10
10
+
writeShellApplication {
9
11
name = "buildConfig";
10
12
runtimeInputs = [
11
13
age
···
2
2
# nixos-rebuild is a shellscript and inside that shellscript they create a tmpdir using mktemp.
3
3
# This is fine, but TMPDIR environment variable isn't available at this point, so mktemp puts the
4
4
# directory in the wrong place.
5
5
-
{ makeWrapper, nixos-rebuild, symlinkJoin }: symlinkJoin {
5
5
+
{
6
6
+
makeWrapper,
7
7
+
nixos-rebuild,
8
8
+
symlinkJoin,
9
9
+
}:
10
10
+
symlinkJoin {
6
11
name = "nixos-rebuild-tmpdir";
7
12
paths = [ nixos-rebuild ];
8
13
buildInputs = [ makeWrapper ];
···
1
1
-
{ ... }: {
1
1
+
{ ... }:
2
2
+
{
2
3
services = {
3
4
avahi = {
4
5
enable = true;
···
1
1
-
{ config, lib, ... }: {
1
1
+
{ config, lib, ... }:
2
2
+
{
2
3
nix = {
3
4
buildMachines = [
4
5
(lib.mkIf (config.networking.hostName != "lily") {
···
6
7
system = "x86_64-linux";
7
8
maxJobs = 1;
8
9
speedFactor = 1;
9
9
-
supportedFeatures = [ "benchmark" "big-parallel" "kvm" "nixos-test" ];
10
10
+
supportedFeatures = [
11
11
+
"benchmark"
12
12
+
"big-parallel"
13
13
+
"kvm"
14
14
+
"nixos-test"
15
15
+
];
10
16
protocol = "ssh-ng";
11
17
sshKey = "/data/nixremote/id_ed25519";
12
18
sshUser = "nixremote";
13
13
-
publicHostKey = "c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSU5hUmVOTStlU0l6Ylp2cWFoYU"
19
19
+
publicHostKey =
20
20
+
"c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSU5hUmVOTStlU0l6Ylp2cWFoYU"
14
21
+ "FsYW5mMHo4OXJKUUlZV3gvcmxhUzRmMVkgcm9vdEBsaWx5Cg==";
15
22
})
16
23
(lib.mkIf (config.networking.hostName != "lutea") {
···
18
25
system = "x86_64-linux";
19
26
maxJobs = 1;
20
27
speedFactor = 2;
21
21
-
supportedFeatures = [ "benchmark" "big-parallel" "kvm" "nixos-test" ];
28
28
+
supportedFeatures = [
29
29
+
"benchmark"
30
30
+
"big-parallel"
31
31
+
"kvm"
32
32
+
"nixos-test"
33
33
+
];
22
34
protocol = "ssh-ng";
23
35
sshKey = "/data/nixremote/id_ed25519";
24
36
sshUser = "nixremote";
25
25
-
publicHostKey = "c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSUNOTVR4YTJ6Um1ISVh0M0FSbE"
37
37
+
publicHostKey =
38
38
+
"c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSUNOTVR4YTJ6Um1ISVh0M0FSbE"
26
39
+ "NwbGJvV1JkQ3NBbURsTjhnRExpazR2TnMgcm9vdEBsdXRlYQo=";
27
40
})
28
41
];
···
1
1
-
{ pkgs, ... }: {
1
1
+
{ pkgs, ... }:
2
2
+
{
2
3
imports = [ ./openssh.nix ];
3
4
4
5
users = {
···
1
1
-
{ ... }: {
1
1
+
{ ... }:
2
2
+
{
2
3
environment.persistence."/data/persistent".directories = [ "/var/lib/caddy" ];
3
3
-
networking.firewall.allowedTCPPorts = [ 80 443 ];
4
4
+
networking.firewall.allowedTCPPorts = [
5
5
+
80
6
6
+
443
7
7
+
];
4
8
5
9
services.caddy = {
6
10
enable = true;
···
1
1
-
{ config, ... }: {
1
1
+
{ config, ... }:
2
2
+
{
2
3
imports = [ ./postgresql.nix ];
3
4
4
5
sops = {
···
8
9
'';
9
10
};
10
11
11
11
-
environment.persistence."/data/persistent".directories = [{
12
12
-
directory = "/var/lib/private/dendrite";
13
13
-
mode = "0700";
14
14
-
}];
12
12
+
environment.persistence."/data/persistent".directories = [
13
13
+
{
14
14
+
directory = "/var/lib/private/dendrite";
15
15
+
mode = "0700";
16
16
+
}
17
17
+
];
15
18
16
16
-
networking.firewall.interfaces.${config.services.netbird.clients.homelab.interface}.allowedTCPPorts = [ 8008 ];
19
19
+
networking.firewall.interfaces.${config.services.netbird.clients.homelab.interface}.allowedTCPPorts =
20
20
+
[ 8008 ];
17
21
18
22
services.postgresql = {
19
23
ensureDatabases = [ "dendrite" ];
20
20
-
ensureUsers = [{
21
21
-
name = "dendrite";
22
22
-
ensureDBOwnership = true;
23
23
-
}];
24
24
+
ensureUsers = [
25
25
+
{
26
26
+
name = "dendrite";
27
27
+
ensureDBOwnership = true;
28
28
+
}
29
29
+
];
24
30
};
25
31
26
32
systemd.services.dendrite.requires = [ "postgresql.service" ];
···
69
75
relay_api.database.connection_string = "";
70
76
key_server.database.connection_string = "";
71
77
logging = [
72
72
-
{ type = "std"; level = "warn"; }
73
73
-
{ type = "file"; level = "info"; params.path = "./logs"; }
78
78
+
{
79
79
+
type = "std";
80
80
+
level = "warn";
81
81
+
}
82
82
+
{
83
83
+
type = "file";
84
84
+
level = "info";
85
85
+
params.path = "./logs";
86
86
+
}
74
87
];
75
88
};
76
89
openRegistration = false;
···
1
1
-
{ config, lib, pkgs, ... }:
1
1
+
{
2
2
+
config,
3
3
+
lib,
4
4
+
pkgs,
5
5
+
...
6
6
+
}:
2
7
let
3
8
servePath = "/data/dufs";
4
4
-
dufsConfig = pkgs.writeText "config.yaml" (lib.generators.toYAML { } {
5
5
-
allow-all = true;
6
6
-
compress = "high";
7
7
-
serve-path = "${servePath}";
8
8
-
});
9
9
+
dufsConfig = pkgs.writeText "config.yaml" (
10
10
+
lib.generators.toYAML { } {
11
11
+
allow-all = true;
12
12
+
compress = "high";
13
13
+
serve-path = "${servePath}";
14
14
+
}
15
15
+
);
9
16
startDufs = pkgs.writeShellScript "dufsStart" ''
10
17
export DUFS_AUTH="mou:$(${pkgs.coreutils}/bin/cat ${config.sops.secrets."dufs/mouPW".path})@/:rw"
11
18
exec ${pkgs.dufs}/bin/dufs -c ${dufsConfig}
···
1
1
-
{ config, esquid, ... }: {
1
1
+
{ config, esquid, ... }:
2
2
+
{
2
3
imports = [ esquid.nixosModules."x86_64-linux".eSquid ];
3
4
nixpkgs.overlays = [ esquid.overlays.default ];
4
5
···
1
1
-
{ ... }: {
2
2
-
environment.persistence."/data/persistent".directories = [{
3
3
-
directory = "/var/lib/i2pd";
4
4
-
user = "i2pd";
5
5
-
group = "i2pd";
6
6
-
mode = "0700";
7
7
-
}];
1
1
+
{ ... }:
2
2
+
{
3
3
+
environment.persistence."/data/persistent".directories = [
4
4
+
{
5
5
+
directory = "/var/lib/i2pd";
6
6
+
user = "i2pd";
7
7
+
group = "i2pd";
8
8
+
mode = "0700";
9
9
+
}
10
10
+
];
8
11
9
12
networking.firewall = {
10
13
allowedUDPPorts = [ 28381 ];
···
1
1
-
{ pkgs, ... }: {
1
1
+
{ pkgs, ... }:
2
2
+
{
2
3
hardware.graphics.enable = true;
3
3
-
users.users.mou.extraGroups = [ "libvirtd" "kvm" ];
4
4
+
users.users.mou.extraGroups = [
5
5
+
"libvirtd"
6
6
+
"kvm"
7
7
+
];
4
8
environment.persistence."/data/persistent".directories = [ "/var/lib/libvirt" ];
5
9
6
10
virtualisation.libvirtd = {
···
1
1
-
{ config, lib, pkgs, ... }: {
1
1
+
{
2
2
+
config,
3
3
+
lib,
4
4
+
pkgs,
5
5
+
...
6
6
+
}:
7
7
+
{
2
8
environment.persistence."/data/persistent".directories = [
3
9
{
4
10
directory = "/var/lib/nextcloud";
···
40
46
};
41
47
42
48
# This is the port that nginx listens on by default
43
43
-
networking.firewall.interfaces.${config.services.netbird.clients.homelab.interface}.allowedTCPPorts = [ 80 ];
49
49
+
networking.firewall.interfaces.${config.services.netbird.clients.homelab.interface}.allowedTCPPorts =
50
50
+
[ 80 ];
44
51
45
52
services = {
46
53
redis.package = pkgs.valkey;
···
96
103
};
97
104
};
98
105
99
99
-
systemd.services.nextcloud-notify_push.environment.NEXTCLOUD_URL = lib.mkForce "http://${config.mInfo.nb-ipv4}";
106
106
+
systemd.services.nextcloud-notify_push.environment.NEXTCLOUD_URL =
107
107
+
lib.mkForce "http://${config.mInfo.nb-ipv4}";
100
108
}
···
1
1
-
{ ... }: {
1
1
+
{ ... }:
2
2
+
{
2
3
imports = [ ../openssh.nix ];
3
4
4
5
users.users = {
···
1
1
-
{ lib, ... }: {
1
1
+
{ lib, ... }:
2
2
+
{
2
3
environment.persistence."/data/persistent".directories = [ "/var/lib/postgresql" ];
3
4
4
5
services.postgresql = {
···
1
1
# TODO: in the future switch to OpenBao
2
2
-
{ pkgs, ... }: {
2
2
+
{ pkgs, ... }:
3
3
+
{
3
4
imports = [ ../unfree.nix ];
4
5
5
6
environment.persistence."/data/persistent".directories = [ "/var/lib/vault" ];
···
17
18
'';
18
19
};
19
20
}
20
20
-
···
1
1
-
{ config, lib, pkgs, ... }: lib.mkIf (config.mInfo.sss-mount == true) {
1
1
+
{
2
2
+
config,
3
3
+
lib,
4
4
+
pkgs,
5
5
+
...
6
6
+
}:
7
7
+
lib.mkIf (config.mInfo.sss-mount == true) {
2
8
environment.systemPackages = [ pkgs.rclone ];
3
9
4
10
fileSystems."/sss" = {
···
1
1
# TODO: replace this with a better solution that doesn't rely on ssh
2
2
# - Preferablly peer-to-peer
3
3
-
{ ... }: {
3
3
+
{ ... }:
4
4
+
{
4
5
imports = [ ./sss-mount.nix ];
5
6
6
7
users = {
···
1
1
-
{ pkgs, ... }: {
1
1
+
{ pkgs, ... }:
2
2
+
{
2
3
users.users.mou.packages = with pkgs; [ fend ];
3
4
}
···
1
1
-
{ config, lib, ... }: {
1
1
+
{ config, lib, ... }:
2
2
+
{
2
3
options.unfree.allowed = lib.mkOption {
3
4
type = with lib.types; listOf str;
4
5
default = [ ];
5
6
description = "A list of unfree packages that are allowed to be installed";
6
7
};
7
8
8
8
-
config.nixpkgs.config.allowUnfreePredicate = pkg:
9
9
-
builtins.elem (lib.getName pkg) config.unfree.allowed;
9
9
+
config.nixpkgs.config.allowUnfreePredicate =
10
10
+
pkg: builtins.elem (lib.getName pkg) config.unfree.allowed;
10
11
}
···
1
1
-
{ config, ... }: {
1
1
+
{ config, ... }:
2
2
+
{
2
3
sops.secrets."protonvpn-privateKey" = { };
3
4
4
5
networking.wg-quick.interfaces.protonvpn = {
5
6
address = [ "10.2.0.2/32" ];
6
7
privateKeyFile = config.sops.secrets."protonvpn-privateKey".path;
7
8
dns = [ "10.2.0.1" ];
8
8
-
peers = [{
9
9
-
publicKey = "lHEn/qdFKAZZjGWD3gAN1QBxuEZly7pSqaqRQRIW2hI=";
10
10
-
endpoint = "149.22.94.55:51820";
11
11
-
allowedIPs = [ "0.0.0.0/0" "::/0" ];
12
12
-
}];
9
9
+
peers = [
10
10
+
{
11
11
+
publicKey = "lHEn/qdFKAZZjGWD3gAN1QBxuEZly7pSqaqRQRIW2hI=";
12
12
+
endpoint = "149.22.94.55:51820";
13
13
+
allowedIPs = [
14
14
+
"0.0.0.0/0"
15
15
+
"::/0"
16
16
+
];
17
17
+
}
18
18
+
];
13
19
};
14
20
}