summaryrefslogtreecommitdiff
path: root/nix/modules/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nix/modules/default.nix')
-rw-r--r--nix/modules/default.nix64
1 files changed, 45 insertions, 19 deletions
diff --git a/nix/modules/default.nix b/nix/modules/default.nix
index adf54b9..80c057f 100644
--- a/nix/modules/default.nix
+++ b/nix/modules/default.nix
@@ -7,27 +7,36 @@
options = {
monorepo = {
- profiles = {
- cuda.enable = lib.mkEnableOption "Enables CUDA support";
- documentation.enable = lib.mkEnableOption "Enables documentation on system.";
- secureBoot.enable = lib.mkEnableOption "Enables secure boot. See sbctl.";
- pipewire.enable = lib.mkEnableOption "Enables pipewire low latency audio setup";
- tor.enable = lib.mkEnableOption "Enables tor along with torsocks";
- home.enable = lib.mkEnableOption "Enables home user";
- server.enable = lib.mkEnableOption "Enables server services";
+ profiles = {
+ cuda.enable = lib.mkEnableOption "Enables CUDA support";
+ documentation.enable = lib.mkEnableOption "Enables documentation on system.";
+ secureBoot.enable = lib.mkEnableOption "Enables secure boot. See sbctl.";
+ pipewire.enable = lib.mkEnableOption "Enables pipewire low latency audio setup";
+ tor.enable = lib.mkEnableOption "Enables tor along with torsocks";
+
+ server = {
+ enable = lib.mkEnableOption "Enables server services";
+ interface = lib.mkOption { type = lib.types.str; default = "eth0"; };
+ ipv4 = lib.mkOption { type = lib.types.nullOr lib.types.str; default = null; };
+ ipv6 = lib.mkOption { type = lib.types.nullOr lib.types.str; default = null; };
+ gateway = lib.mkOption { type = lib.types.nullOr lib.types.str; default = null; };
+ };
+
ttyonly.enable = lib.mkEnableOption "TTY only, no xserver";
grub.enable = lib.mkEnableOption "Enables grub instead of systemd-boot";
workstation.enable = lib.mkEnableOption "Enables workstation services";
+ desktop.enable = lib.mkEnableOption "Enables everything common to desktops";
impermanence.enable = lib.mkEnableOption "Enables imperamanence";
- };
+ home.enable = lib.mkEnableOption "Enables home profiles";
+ };
};
};
config = {
environment.systemPackages = lib.mkIf config.monorepo.profiles.documentation.enable ((with pkgs; [
- linux-manual
- man-pages
- man-pages-posix
+ linux-manual
+ man-pages
+ man-pages-posix
iproute2
silver-searcher
ripgrep
@@ -37,20 +46,37 @@
btrfs-snap
btrfs-list
btrfs-heatmap
- ] else []));
+ ] else [ ]));
boot.loader.grub = lib.mkIf config.monorepo.profiles.grub.enable {
enable = true;
};
+ assertions = [
+ {
+ assertion = !(config.monorepo.profiles.workstation.enable && config.monorepo.profiles.server.enable);
+ message = ''
+ You can't enable both workstation and server profile together. Please select only one.
+ '';
+ }
+ {
+ assertion = !(config.monorepo.profiles.desktop.enable && config.monorepo.profiles.server.enable);
+ message = ''
+ You can't enable both desktop and server profile together. Please select only one.
+ '';
+ }
+ ];
monorepo = {
- profiles = {
- documentation.enable = lib.mkDefault true;
- pipewire.enable = lib.mkDefault true;
- tor.enable = lib.mkDefault true;
- home.enable = lib.mkDefault true;
+ profiles = {
+ desktop.enable = lib.mkDefault config.monorepo.profiles.workstation.enable;
+ documentation.enable = lib.mkDefault true;
+ pipewire.enable = lib.mkDefault true;
+ tor.enable = lib.mkDefault true;
impermanence.enable = lib.mkDefault false;
- };
+ server.enable = lib.mkDefault false;
+ ttyonly.enable = lib.mkDefault config.monorepo.profiles.server.enable;
+ home.enable = lib.mkDefault config.monorepo.profiles.desktop.enable;
+ };
};
};
}