diff --git a/flake.nix b/flake.nix index d17c0e6..0e4e12c 100644 --- a/flake.nix +++ b/flake.nix @@ -27,6 +27,12 @@ # > Our main nixos configuration file < modules = [ ./nixos/machines/nixos-desktop-mans/configuration.nix ]; }; + + nixos-laptop-mans = nixpkgs.lib.nixosSystem { + specialArgs = { inherit inputs; }; # Pass flake inputs to our config + # > Our main nixos configuration file < + modules = [ ./nixos/machines/nixos-laptop-mans/configuration.nix ]; + }; }; }; } diff --git a/nixos/machines/nixos-desktop-mans/configuration.nix b/nixos/machines/nixos-desktop-mans/configuration.nix index d049add..091b943 100644 --- a/nixos/machines/nixos-desktop-mans/configuration.nix +++ b/nixos/machines/nixos-desktop-mans/configuration.nix @@ -12,7 +12,7 @@ # You can also split up your configuration and import pieces of it here: # ./users.nix ./network.nix - ../roles/desktop.nix + ../../roles/desktop.nix # Import home-manager's NixOS module inputs.home-manager.nixosModules.home-manager @@ -149,7 +149,7 @@ extraSpecialArgs = { inherit inputs; }; users = { # Import your home-manager configuration - mans = import ../home-manager/home.nix; + mans = import ../../../home-manager/home.nix; }; }; diff --git a/nixos/machines/nixos-laptop-mans/configuration.nix b/nixos/machines/nixos-laptop-mans/configuration.nix new file mode 100644 index 0000000..091b943 --- /dev/null +++ b/nixos/machines/nixos-laptop-mans/configuration.nix @@ -0,0 +1,158 @@ +# This is your system's configuration file. +# Use this to configure your system environment (it replaces /etc/nixos/configuration.nix) +# https://github.com/Misterio77/nix-starter-configs + +{ inputs, lib, config, pkgs, ... }: { + # You can import other NixOS modules here + imports = [ + # If you want to use modules from other flakes (such as nixos-hardware): + inputs.hardware.nixosModules.common-cpu-amd + # inputs.hardware.nixosModules.common-gpu-nvidia + + # You can also split up your configuration and import pieces of it here: + # ./users.nix + ./network.nix + ../../roles/desktop.nix + + # Import home-manager's NixOS module + inputs.home-manager.nixosModules.home-manager + + # Import your generated (nixos-generate-config) hardware configuration + ./hardware-configuration.nix + ]; + + nixpkgs = { + # You can add overlays here + overlays = [ + # If you want to use overlays exported from other flakes: + # neovim-nightly-overlay.overlays.default + + # Or define it inline, for example: + # (final: prev: { + # hi = final.hello.overrideAttrs (oldAttrs: { + # patches = [ ./change-hello-to-hi.patch ]; + # }); + # }) + ]; + # Configure your nixpkgs instance + config = { + # Disable if you don't want unfree packages + allowUnfree = true; + }; + }; + + nix = { + # This will add each flake input as a registry + # To make nix3 commands consistent with your flake + registry = lib.mapAttrs (_: value: { flake = value; }) inputs; + + # This will additionally add your inputs to the system's legacy channels + # Making legacy nix commands consistent as well, awesome! + nixPath = lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry; + + settings = { + # Enable flakes and new 'nix' command + experimental-features = "nix-command flakes"; + # Deduplicate and optimize nix store + auto-optimise-store = true; + }; + }; + + # TODO_: This is just an example, be sure to use whatever bootloader you prefer + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + + # Setup keyfile + boot.initrd.secrets = { + "/crypto_keyfile.bin" = null; + }; + + # FIXME_: Add the rest of your current configuration + + # Set your time zone. + time.timeZone = "Europe/Amsterdam"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "nl_NL.UTF-8"; + LC_IDENTIFICATION = "nl_NL.UTF-8"; + LC_MEASUREMENT = "nl_NL.UTF-8"; + LC_MONETARY = "nl_NL.UTF-8"; + LC_NAME = "nl_NL.UTF-8"; + LC_NUMERIC = "nl_NL.UTF-8"; + LC_PAPER = "nl_NL.UTF-8"; + LC_TELEPHONE = "nl_NL.UTF-8"; + LC_TIME = "nl_NL.UTF-8"; + }; + + # Enable CUPS to print documents. + services.printing.enable = true; + + # Enable sound with pipewire. + sound.enable = true; + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + # If you want to use JACK applications, uncomment this + # jack.enable = true; + + # use the example session manager (no others are packaged yet so this is enabled by default, + # no need to redefine it in your config for now) + #media-session.enable = true; + }; + + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + + # TODO_: Configure your system-wide user settings (groups, etc), add more users as needed. + users.users = { + # FIXME_: Replace with your username + mans = { + # TODO_: You can set an initial password for your user. + # If you do, you can skip setting a root password by passing '--no-root-passwd' to nixos-install. + # Be sure to change it (using passwd) after rebooting! + isNormalUser = true; + openssh.authorizedKeys.keys = [ + # TODO: Add your SSH public key(s) here, if you plan on using SSH to connect + ]; + # TODO_: Be sure to add any other groups you need (such as networkmanager, audio, docker, etc) + extraGroups = [ "wheel" "networkmanager" ]; + }; + }; + + environment.systemPackages = with pkgs; [ + wget + neovim + openssl + ]; + + # This setups a SSH server. Very important if you're setting up a headless system. + # Feel free to remove if you don't need it. + services.openssh = { + enable = true; + settings = { + # Forbid root login through SSH. + PermitRootLogin = "no"; + # Use keys only. Remove if you want to SSH using password (not recommended) + PasswordAuthentication = false; + }; + }; + + home-manager = { + extraSpecialArgs = { inherit inputs; }; + users = { + # Import your home-manager configuration + mans = import ../../../home-manager/home.nix; + }; + }; + + # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion + system.stateVersion = "23.05"; +} diff --git a/nixos/machines/nixos-laptop-mans/hardware-configuration.nix b/nixos/machines/nixos-laptop-mans/hardware-configuration.nix new file mode 100644 index 0000000..5bde617 --- /dev/null +++ b/nixos/machines/nixos-laptop-mans/hardware-configuration.nix @@ -0,0 +1,39 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/a0ce5ff7-5e7c-4ef3-ae98-a91f04969a36"; + fsType = "ext4"; + }; + + boot.initrd.luks.devices."luks-2a137f62-de59-4560-afc6-129f13ee6c16".device = "/dev/disk/by-uuid/2a137f62-de59-4560-afc6-129f13ee6c16"; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/61EC-610B"; + fsType = "vfat"; + }; + + swapDevices = [ ]; + + # 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..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.eno1.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/nixos/machines/nixos-laptop-mans/network.nix b/nixos/machines/nixos-laptop-mans/network.nix new file mode 100644 index 0000000..5191f61 --- /dev/null +++ b/nixos/machines/nixos-laptop-mans/network.nix @@ -0,0 +1,21 @@ +# networking.nix + +# Import the necessary modules +{ config, pkgs, ... }: + +{ + # Set the network interface configuration + # networking.interfaces.eth0.useDHCP = true; + + networking.networkmanager.enable = true; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ 22 ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + + # Set the hostname + networking.hostName = "nixos-laptop-mans"; +}