From fba5beeabf5597e73cb0e3123c26f10b74042dc2 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Sat, 18 Jun 2022 16:46:22 +0200 Subject: [PATCH] refactor: extract common configuration --- configuration.nix | 42 +++++++ flake.nix | 14 ++- machines/apache/configuration.nix | 128 +-------------------- machines/apache/hardware-configuration.nix | 5 +- machines/nixos-vm/configuration.nix | 105 +---------------- 5 files changed, 63 insertions(+), 231 deletions(-) create mode 100644 configuration.nix diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..4a7349c --- /dev/null +++ b/configuration.nix @@ -0,0 +1,42 @@ +{ config, pkgs, ... }: + +{ + boot.loader = { + timeout = 1; + efi.canTouchEfiVariables = true; + + grub = { + efiSupport = true; + device = "nodev"; + configurationLimit = 5; + }; + }; + + time.timeZone = "Europe/Berlin"; + services.timesyncd.enable = true; + + i18n.defaultLocale = "en_US.UTF-8"; + console = { + font = "Lat2-Terminus16"; + keyMap = "de-latin1-nodeadkeys"; + }; + + fonts.fonts = with pkgs; [ + (nerdfonts.override { fonts = [ "DejaVuSansMono" ]; }) + ]; + + environment.systemPackages = with pkgs; [ + neovim + git + ]; + + services.openssh.enable = true; + + nix = { + package = pkgs.nixFlakes; + extraOptions = "experimental-features = nix-command flakes"; + }; + + system.stateVersion = "22.05"; +} + diff --git a/flake.nix b/flake.nix index aea87bc..4ab4a08 100644 --- a/flake.nix +++ b/flake.nix @@ -16,12 +16,22 @@ nixosConfigurations.nixos-vm = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = inputs; - modules = [ ./machines/nixos-vm/configuration.nix ]; + modules = [ + ./configuration.nix + ./users.nix + ./machines/nixos-vm/configuration.nix + ./machines/nixos-vm/hardware-configuration.nix + ]; }; nixosConfigurations.apache = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = inputs; - modules = [ ./machines/apache/configuration.nix ]; + modules = [ + ./configuration.nix + ./users.nix + ./machines/apache/configuration.nix + ./machines/apache/hardware-configuration.nix + ]; }; }; } diff --git a/machines/apache/configuration.nix b/machines/apache/configuration.nix index 1c72046..4d8553d 100644 --- a/machines/apache/configuration.nix +++ b/machines/apache/configuration.nix @@ -1,136 +1,16 @@ -# Edit this configuration file to define what should be installed on -# your system. Help is available in the configuration.nix(5) man page -# and in the NixOS manual (accessible by running ‘nixos-help’). - { config, pkgs, ... }: { - imports = - [ # Include the results of the hardware scan. - ./hardware-configuration.nix - ]; + networking.hostName = "apache"; - boot.loader = { - timeout = 1; - efi.canTouchEfiVariables = true; - - grub = { - efiSupport = true; - enableCryptodisk = true; - device = "nodev"; - }; - }; + boot.loader.grub.enableCryptodisk = true; boot.initrd.luks.devices = { - crypt-nixos.device = "/dev/disk/by-uuid/4345618c-6968-465f-8ebd-1d76defc0f57"; - crypt-swap.device = "/dev/disk/by-uuid/fa3440af-0354-4299-860e-01a3b012416f"; + # crypt-nixos.device = "/dev/disk/by-uuid/4345618c-6968-465f-8ebd-1d76defc0f57"; + # crypt-swap.device = "/dev/disk/by-uuid/fa3440af-0354-4299-860e-01a3b012416f"; }; - networking.hostName = "apache"; # Define your hostname. - # Pick only one of the below networking options. networking.wireless.enable = true; - # networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. - - - - # Set your time zone. - time.timeZone = "Europe/Berlin"; - - # 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 = "de-latin1-nodeadkeys"; - # useXkbConfig = true; # use xkbOptions in tty. - }; - - # Enable the X11 windowing system. - # services.xserver.enable = true; - - fonts.fonts = with pkgs; [ - (nerdfonts.override { fonts = [ "DejaVuSansMono" ]; }) - ]; - - - - - # Configure keymap in X11 - # services.xserver.layout = "us"; - # services.xserver.xkbOptions = { - # "eurosign:e"; - # "caps:escape" # map caps to 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.jane = { - # isNormalUser = true; - # extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. - # packages = with pkgs; [ - # firefox - # thunderbird - # ]; - # }; - - # 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 - neovim - git - ]; - - # 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; - - # 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 = "22.05"; # Did you read the comment? - - nix = { - package = pkgs.nixFlakes; - extraOptions = "experimental-features = nix-command flakes"; - }; - } diff --git a/machines/apache/hardware-configuration.nix b/machines/apache/hardware-configuration.nix index bfbb695..250dc2a 100644 --- a/machines/apache/hardware-configuration.nix +++ b/machines/apache/hardware-configuration.nix @@ -18,7 +18,10 @@ fsType = "ext4"; }; - boot.initrd.luks.devices."crypt-nixos".device = "/dev/disk/by-uuid/4345618c-6968-465f-8ebd-1d76defc0f57"; + boot.initrd.luks.devices = { + crypt-nixos.device = "/dev/disk/by-uuid/4345618c-6968-465f-8ebd-1d76defc0f57"; + crypt-swap.device = "/dev/disk/by-uuid/fa3440af-0354-4299-860e-01a3b012416f"; + }; fileSystems."/boot" = { device = "/dev/disk/by-uuid/01E5-F47D"; diff --git a/machines/nixos-vm/configuration.nix b/machines/nixos-vm/configuration.nix index 04f560a..b34b17f 100644 --- a/machines/nixos-vm/configuration.nix +++ b/machines/nixos-vm/configuration.nix @@ -1,108 +1,5 @@ -# Edit this configuration file to define what should be installed on -# your system. Help is available in the configuration.nix(5) man page -# and in the NixOS manual (accessible by running ‘nixos-help’). - { config, lib, pkgs, inputs, ... }: { - imports = - [ # Include the results of the hardware scan. - ./hardware-configuration.nix - ../../users.nix - ]; - - boot.loader = { - efi = { - canTouchEfiVariables = true; - }; - grub = { - enable = true; - efiSupport = true; - device = "nodev"; - configurationLimit = 5; - }; - }; - - networking.hostName = "nixos-vm"; # Define your hostname. - # 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/Berlin"; - - # Enable NTP - services.timesyncd.enable = true; - - # 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 = "de-latin1-nodeadkeys"; - # useXkbConfig = true; # use xkbOptions in tty. - }; - - # Enable the X11 windowing system. - # services.xserver.enable = true; - - # Configure keymap in X11 - # services.xserver.layout = "us"; - # services.xserver.xkbOptions = { - # "eurosign:e"; - # "caps:escape" # map caps to 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; - - # 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 - git - ]; - - # 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; - - # 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 = "22.05"; # Did you read the comment? + networking.hostName = "nixos-vm"; }