From c111662a9e0a51ba3f4658510e9b47d05fd424b6 Mon Sep 17 00:00:00 2001 From: Tom Hubrecht Date: Tue, 18 Jul 2023 17:03:01 +0200 Subject: [PATCH] modules/dgn-hardware: Set default configurations --- machines/storage01/_configuration.nix | 86 --------------------------- machines/web-01/_configuration.nix | 7 +-- modules/default.nix | 1 + modules/dgn-hardware.nix | 29 +++++++++ 4 files changed, 31 insertions(+), 92 deletions(-) create mode 100644 modules/dgn-hardware.nix diff --git a/machines/storage01/_configuration.nix b/machines/storage01/_configuration.nix index 241c17b..5e758f0 100644 --- a/machines/storage01/_configuration.nix +++ b/machines/storage01/_configuration.nix @@ -5,95 +5,9 @@ { config, pkgs, ... }: { - # Use the systemd-boot EFI boot loader. - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - networking.hostName = "storage01"; networking.domain = "par01.infra.dgnum.eu"; networking.hostId = "d4e7c369"; - # Pick only one of the below networking options. - # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. - # networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. - # Set your time zone. - time.timeZone = "Europe/Paris"; - - # Configure network proxy if necessary - # networking.proxy.default = "http://user:password@proxy:port/"; - # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; - - # Select internationalisation properties. - # i18n.defaultLocale = "en_US.UTF-8"; - console = { - # font = "Lat2-Terminus16"; - keyMap = "fr"; - # useXkbConfig = true; # use xkbOptions in tty. - }; - - # Configure keymap in X11 - services.xserver.layout = "fr"; - # services.xserver.xkbOptions = "eurosign:e,caps:escape"; - - # Enable CUPS to print documents. - # services.printing.enable = true; - - # Enable sound. - # sound.enable = true; - # hardware.pulseaudio.enable = true; - - # Enable touchpad support (enabled default in most desktopManager). - # services.xserver.libinput.enable = true; - - # Define a user account. Don't forget to set a password with ‘passwd’. - # users.users.alice = { - # isNormalUser = true; - # extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. - # packages = with pkgs; [ - # firefox - # tree - # ]; - # }; - - # List packages installed in system profile. To search, run: - # $ nix search wget - environment.systemPackages = with pkgs; [ - vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. - wget - kitty.terminfo - ]; - - # Some programs need SUID wrappers, can be configured further or are - # started in user sessions. - # programs.mtr.enable = true; - # programs.gnupg.agent = { - # enable = true; - # enableSSHSupport = true; - # }; - - # List services that you want to enable: - - # Enable the OpenSSH daemon. - # services.openssh.enable = true; - # users.users.root.openssh.authorizedKeys.keyFiles = [ ./rootKeys ]; - - # Open ports in the firewall. - # networking.firewall.allowedTCPPorts = [ ... ]; - # networking.firewall.allowedUDPPorts = [ ... ]; - # Or disable the firewall altogether. - # networking.firewall.enable = false; - - # Copy the NixOS configuration file and link it from the resulting system - # (/run/current-system/configuration.nix). This is useful in case you - # accidentally delete configuration.nix. - # system.copySystemConfiguration = true; - - # This value determines the NixOS release from which the default - # settings for stateful data, like file locations and database versions - # on your system were taken. It's perfectly fine and recommended to leave - # this value at the release version of the first install of this system. - # Before changing this value read the documentation for this option - # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). system.stateVersion = "23.05"; # Did you read the comment? - } diff --git a/machines/web-01/_configuration.nix b/machines/web-01/_configuration.nix index 598a841..4bf5139 100644 --- a/machines/web-01/_configuration.nix +++ b/machines/web-01/_configuration.nix @@ -9,16 +9,11 @@ [ ./networking.nix ./plausible.nix + # ./wordpress ]; - # Use the systemd-boot EFI boot loader. - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - networking.hostName = name; - time.timeZone = "Europe/Paris"; - # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions # on your system were taken. It‘s perfectly fine and recommended to leave diff --git a/modules/default.nix b/modules/default.nix index e57a4b2..cb1a24b 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -38,6 +38,7 @@ "dgn-access-control" "dgn-acme" "dgn-console" + "dgn-hardware" "dgn-secrets" "dgn-ssh" ]) ++ [ diff --git a/modules/dgn-hardware.nix b/modules/dgn-hardware.nix new file mode 100644 index 0000000..4324604 --- /dev/null +++ b/modules/dgn-hardware.nix @@ -0,0 +1,29 @@ +{ config, lib, ... }: + +let + inherit (lib) + mkEnableOption + mkIf + mkMerge; + + cfg = config.dgn-ssh; +in + +{ + options.dgn-hardware = { + enable = mkEnableOption "default hardware configuration." // { default = true; }; + + useSystemd = mkEnableOption "sytemd boot and configuration." // { default = true; }; + }; + + config = mkIf cfg.enable (mkMerge [ + { hardware.enableRedistributableFirmware = true; } + + (mkIf cfg.useSystemd { + boot.loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; + }) + ]); +}