Skip to content

Commit fd7fdc7

Browse files
committed
reduce system and installer size
1 parent 9bc05b6 commit fd7fdc7

6 files changed

Lines changed: 117 additions & 20 deletions

File tree

flake.lock

Lines changed: 8 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
inputs.nixpkgs.follows = "nixpkgs";
1616
};
1717
xnode-auth = {
18-
url = "github:Openmesh-Network/xnode-auth";
18+
url = "github:Openmesh-Network/xnode-auth/cache";
1919
inputs.nixpkgs.follows = "nixpkgs";
2020
};
2121
};

installer/config.nix

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -145,20 +145,41 @@
145145
system.stateVersion = config.system.nixos.release;
146146

147147
# Reduce closure size (https://github.com/nix-community/nixos-images/blob/main/nix/noninteractive.nix)
148-
environment.defaultPackages = lib.mkForce [ ];
149148
system.extraDependencies = lib.mkForce [ ];
150-
151-
# Disable unused nixos tools
152149
system.disableInstallerTools = true;
153-
154-
# Disable documentation
155-
documentation.enable = false;
156-
documentation.man.enable = false;
157-
documentation.nixos.enable = false;
158-
documentation.doc.enable = false;
159-
160-
# Disable unused programs
161150
programs.nano.enable = false;
162151
security.sudo.enable = false;
152+
153+
# https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/profiles/minimal.nix
154+
documentation = {
155+
enable = lib.mkDefault false;
156+
doc.enable = lib.mkDefault false;
157+
info.enable = lib.mkDefault false;
158+
man.enable = lib.mkDefault false;
159+
nixos.enable = lib.mkDefault false;
160+
};
161+
162+
environment = {
163+
# Perl is a default package.
164+
defaultPackages = lib.mkDefault [ ];
165+
stub-ld.enable = lib.mkDefault false;
166+
};
167+
168+
programs = {
169+
command-not-found.enable = lib.mkDefault false;
170+
fish.generateCompletions = lib.mkDefault false;
171+
};
172+
173+
services = {
174+
logrotate.enable = lib.mkDefault false;
175+
udisks2.enable = lib.mkDefault false;
176+
};
177+
178+
xdg = {
179+
autostart.enable = lib.mkDefault false;
180+
icons.enable = lib.mkDefault false;
181+
mime.enable = lib.mkDefault false;
182+
sounds.enable = lib.mkDefault false;
183+
};
163184
};
164185
}

nix/nixos-module.nix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
./os/network.nix
1313
./os/state-version.nix
1414
(import ./os/manager.nix { inherit inputs; })
15+
./os/minimal.nix
1516
./os/debug.nix
1617
];
1718

nix/os/disks.nix

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ in
2020

2121
config = lib.mkMerge [
2222
{
23-
boot.supportedFilesystems = [ "btrfs" ];
2423
fileSystems = {
2524
"/" = {
2625
label = "ROOT";

nix/os/minimal.nix

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
{ config, lib, ... }:
2+
let
3+
debug =
4+
if (builtins.pathExists "${config.services.xnodeos.xnode-config}/debug") then
5+
builtins.readFile "${config.services.xnodeos.xnode-config}/debug"
6+
else
7+
"";
8+
in
9+
{
10+
config = lib.mkIf (debug == "") {
11+
# Reduce closure size (https://github.com/nix-community/nixos-images/blob/main/nix/noninteractive.nix)
12+
environment.systemPackages = lib.mkForce [ ];
13+
system.extraDependencies = lib.mkForce [ ];
14+
boot.supportedFilesystems = lib.mkForce [
15+
"vfat"
16+
"btrfs"
17+
];
18+
system.disableInstallerTools = lib.mkDefault true;
19+
programs.nano.enable = lib.mkDefault false;
20+
security.sudo.enable = lib.mkDefault false;
21+
22+
# https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/profiles/minimal.nix
23+
documentation = {
24+
enable = lib.mkDefault false;
25+
doc.enable = lib.mkDefault false;
26+
info.enable = lib.mkDefault false;
27+
man.enable = lib.mkDefault false;
28+
nixos.enable = lib.mkDefault false;
29+
};
30+
31+
environment = {
32+
# Perl is a default package.
33+
defaultPackages = lib.mkDefault [ ];
34+
stub-ld.enable = lib.mkDefault false;
35+
};
36+
37+
programs = {
38+
command-not-found.enable = lib.mkDefault false;
39+
fish.generateCompletions = lib.mkDefault false;
40+
};
41+
42+
services = {
43+
logrotate.enable = lib.mkDefault false;
44+
udisks2.enable = lib.mkDefault false;
45+
};
46+
47+
xdg = {
48+
autostart.enable = lib.mkDefault false;
49+
icons.enable = lib.mkDefault false;
50+
mime.enable = lib.mkDefault false;
51+
sounds.enable = lib.mkDefault false;
52+
};
53+
54+
# https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/profiles/headless.nix
55+
# Don't start a tty on the serial consoles.
56+
systemd.services."serial-getty@ttyS0".enable = lib.mkDefault false;
57+
systemd.services."serial-getty@hvc0".enable = false;
58+
systemd.services."getty@tty1".enable = false;
59+
systemd.services."autovt@".enable = false;
60+
61+
# Since we can't manually respond to a panic, just reboot.
62+
boot.kernelParams = [
63+
"panic=1"
64+
"boot.panic_on_fail"
65+
"vga=0x317"
66+
"nomodeset"
67+
];
68+
69+
# Don't allow emergency mode, because we don't have a console.
70+
systemd.enableEmergencyMode = false;
71+
72+
# Being headless, we don't need a GRUB splash image.
73+
boot.loader.grub.splashImage = null;
74+
};
75+
}

0 commit comments

Comments
 (0)