Aktuelle Version |
Dein Text |
Zeile 800: |
Zeile 800: |
|
| |
|
| <!-- | | <!-- |
| : <code>sed /mnt/etc/nixos/</code> | | : <code></code> |
| <pre>
| |
| configuration.nix machine.nix
| |
| </pre>
| |
| | |
| : <code>cat /mnt/etc/nixos/configuration.nix</code>
| |
| <pre>
| |
| # 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, modulesPath, ... }:
| |
| | |
| let
| |
| zfsRoot.partitionScheme = {
| |
| biosBoot = "-part5";
| |
| efiBoot = "-part1";
| |
| swap = "-part4";
| |
| bootPool = "-part2";
| |
| rootPool = "-part3";
| |
| };
| |
| zfsRoot.devNodes = "/dev/disk/by-id/"; # MUST have trailing slash! /dev/disk/by-id/
| |
| zfsRoot.bootDevices = (import ./machine.nix).bootDevices;
| |
| zfsRoot.mirroredEfi = "/boot/efis/";
| |
| | |
| in {
| |
| # adjust according to your platform, such as
| |
| imports = [
| |
| # (modulesPath + "/profiles/qemu-guest.nix")
| |
| # (modulesPath + "/profiles/all-hardware.nix")
| |
| (modulesPath + "/installer/scan/not-detected.nix")
| |
| ];
| |
| systemd.services.zfs-mount.enable = false;
| |
| | |
| # networking.hostName = "nixos"; # 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/Amsterdam";
| |
| | |
| # 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 = "us";
| |
| # useXkbConfig = true; # use xkbOptions in tty.
| |
| # };
| |
| | |
| # 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).
| |
| | |
| # 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
| |
| # 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
| |
| mg
| |
| ];
| |
| | |
| # 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 = false;
| |
| users.users.root = {
| |
| ##hash: mkpasswd -m SHA-512 -s
| |
| initialHashedPassword = "$6$OYQ1J8P/eJcD.D/nAeF.Gq8IPRrZfu.EGZkYJ3kYpmzhTq1QNVwraZboxoGaQxVmMpEq.Zrz0bgV$Vm/oMUobWh7VpNYtt4baExd960";
| |
| openssh.authorizedKeys.keys = [
| |
| ];
| |
| };
| |
| programs.git.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.11"; # Did you read the comment?
| |
| | |
| boot.initrd.availableKernelModules = [
| |
| "ahci"
| |
| "xhci_pci"
| |
| "virtio_pci"
| |
| "virtio_blk"
| |
| "ehci_pci"
| |
| "nvme"
| |
| "uas"
| |
| "sd_mod"
| |
| "sr_mod"
| |
| "sdhci_pci"
| |
| ];
| |
| boot.initrd.kernelModules = [ ];
| |
| boot.kernelModules = [ "kvm-intel" "kvm-amd" ];
| |
| boot.extraModulePackages = [ ];
| |
| | |
| fileSystems = {
| |
| "/" = {
| |
| device = "rpool/nixos/root";
| |
| fsType = "zfs";
| |
| options = [ "X-mount.mkdir" ];
| |
| };
| |
| | |
| "/home" = {
| |
| device = "rpool/nixos/home";
| |
| fsType = "zfs";
| |
| options = [ "X-mount.mkdir" ];
| |
| };
| |
| | |
| "/var/lib" = {
| |
| device = "rpool/nixos/var/lib";
| |
| fsType = "zfs";
| |
| options = [ "X-mount.mkdir" ];
| |
| };
| |
| | |
| "/var/log" = {
| |
| device = "rpool/nixos/var/log";
| |
| fsType = "zfs";
| |
| options = [ "X-mount.mkdir" ];
| |
| };
| |
| | |
| "/boot" = {
| |
| device = "bpool/nixos/root";
| |
| fsType = "zfs";
| |
| options = [ "X-mount.mkdir" ];
| |
| };
| |
| } // (builtins.listToAttrs (map (diskName: {
| |
| name = zfsRoot.mirroredEfi + diskName + zfsRoot.partitionScheme.efiBoot;
| |
| value = {
| |
| device = zfsRoot.devNodes + diskName + zfsRoot.partitionScheme.efiBoot;
| |
| fsType = "vfat";
| |
| options = [
| |
| "x-systemd.idle-timeout=1min"
| |
| "x-systemd.automount"
| |
| "noauto"
| |
| "nofail"
| |
| ];
| |
| };
| |
| }) zfsRoot.bootDevices));
| |
| | |
| swapDevices = (map (diskName: {
| |
| device = zfsRoot.devNodes + diskName + zfsRoot.partitionScheme.swap;
| |
| discardPolicy = "both";
| |
| randomEncryption = {
| |
| enable = true;
| |
| allowDiscards = true;
| |
| };
| |
| }) zfsRoot.bootDevices);
| |
| | |
| # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
| |
| # (the default) this is the recommended approach. When using systemd-networkd it's
| |
| # still possible to use this option, but it's recommended to use it in conjunction
| |
| # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
| |
| networking.useDHCP = lib.mkDefault true;
| |
| # networking.networkmanager.enable = true;
| |
| # networking.interfaces.enp1s0.useDHCP = lib.mkDefault true;
| |
| | |
| nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
| |
| hardware.cpu.intel.updateMicrocode =
| |
| lib.mkDefault config.hardware.enableRedistributableFirmware;
| |
| hardware.cpu.amd.updateMicrocode =
| |
| lib.mkDefault config.hardware.enableRedistributableFirmware;
| |
| | |
| boot.supportedFilesystems = [ "zfs" ];
| |
| networking.hostId = "abcd1234";
| |
| boot.kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages;
| |
| boot.loader.efi.efiSysMountPoint = with builtins;
| |
| (zfsRoot.mirroredEfi + (head zfsRoot.bootDevices) + zfsRoot.partitionScheme.efiBoot);
| |
| boot.zfs.devNodes = zfsRoot.devNodes;
| |
| boot.loader.efi.canTouchEfiVariables = false;
| |
| boot.loader.generationsDir.copyKernels = true;
| |
| boot.loader.grub.efiInstallAsRemovable = true;
| |
| boot.loader.grub.enable = true;
| |
| boot.loader.grub.version = 2;
| |
| boot.loader.grub.copyKernels = true;
| |
| boot.loader.grub.efiSupport = true;
| |
| boot.loader.grub.zfsSupport = true;
| |
| boot.loader.grub.extraInstallCommands = with builtins;
| |
| (toString (map (diskName:
| |
| "cp -r " + config.boot.loader.efi.efiSysMountPoint + "/EFI" + " "
| |
| + zfsRoot.mirroredEfi + diskName + zfsRoot.partitionScheme.efiBoot + "\n")
| |
| (tail zfsRoot.bootDevices)));
| |
| boot.loader.grub.devices =
| |
| (map (diskName: zfsRoot.devNodes + diskName) zfsRoot.bootDevices);
| |
| }
| |
| | |
| </pre>
| |
| | |
| : <code>cat /mnt/etc/nixos/machine.nix</code>
| |
| <pre>
| |
| {
| |
| bootDevices = [ "ata-Samsung_SSD_850_EVO_1TB_S3LENB0JB00287Z" "ata-Samsung_SSD_860_EVO_M.2_1TB_S415NB0M120414E" ];
| |
| }
| |
| </pre>
| |
| | |
| : <code></code> | | : <code></code> |
| : <code></code> | | : <code></code> |