diff --git a/laptop/configuration.nix b/laptop/configuration.nix index a380dc8c..cea5b2bf 100644 --- a/laptop/configuration.nix +++ b/laptop/configuration.nix @@ -1,173 +1,178 @@ -{ config, pkgs, ...}: { - # Desktop/Laptop configuration.nix - # Import other files to this config: - imports = [ - ./home-manager.nix - ./variables.nix - ]; +# 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 + + ]; - # Basic configs - time.timeZone = ${timezone} + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + # Plymouth splash screen + boot.plymouth.enable = true; - # Boot settings - boot = { - blacklistedKernelModules = [ "nouveau" ]; - cleanTmpDir = true; + # Setup keyfile + boot.initrd.secrets = { + "/crypto_keyfile.bin" = null; }; - # Keep the system up-to-date automatically - system = { - stateVersion = ${nixos-version} - autoUpgrade = { - enable = true; - allowReboot = false; - channel = https://channels.nixos.org/nixos-${nixos-version} - }; - }; + # Plymouth troubleshooting + boot.initrd.systemd.enable = true; + boot.kernelParams = ["quiet"]; - # Networking: + # Enable swap on luks + boot.initrd.luks.devices."luks-9704447e-6bd0-4a35-9c24-20cbab81c431".device = "/dev/disk/by-uuid/9704447e-6bd0-4a35-9c24-20cbab81c431"; + boot.initrd.luks.devices."luks-9704447e-6bd0-4a35-9c24-20cbab81c431".keyFile = "/crypto_keyfile.bin"; + + # Enable networking networking = { - hostname = ${hostname}; + hostName = "nixos-p1"; + networkmanager = { + enable = true; + }; enableIPv6 = false; - firewall = { + firewall = { enable = true; allowedTCPPorts = [ 22 ]; - allowedUDPPorts = [ 41641 ]; - }; - networkmanager = { - enable = true; + allowedUDPPorts = [ ]; }; }; - # Create a user: - # https://nixos.org/manual/nixos/stable/index.html#sec-user-management - users.users.${username} = { - isNormalUser = false; - initialPassword = "Password"; - description = "${user-full-name}"; - extraGroups = [ "wheel", "networkmanager" ]; - uid = 1000; - shell = "/bin/bash" + # Set your time zone. + time.timeZone = "Asia/Tokyo"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_US.UTF-8"; + LC_IDENTIFICATION = "en_US.UTF-8"; + LC_MEASUREMENT = "en_US.UTF-8"; + LC_MONETARY = "en_US.UTF-8"; + LC_NAME = "en_US.UTF-8"; + LC_NUMERIC = "en_US.UTF-8"; + LC_PAPER = "en_US.UTF-8"; + LC_TELEPHONE = "en_US.UTF-8"; + LC_TIME = "en_US.UTF-8"; }; - # Enable various services: - services = { - openssh = { - enable = true; - }; - ntp = { - enable = true; - }; - tailscale = { - enable = true; - useRoutingFeatures = "server"; - }; - # X Display Manager - # https://nixos.org/manual/nixos/stable/index.html#sec-x11 - xserver = { - enable = true; - videoDrivers = nvidia; - autorun = true; - layout = "en"; - displayManager = { - gdm = { - enable = true; - }; - }; - desktopManager = { - gnome = { - enable = true; - }; - }; - # https://nixos.org/manual/nixos/stable/index.html#sec-gnome-enable - # Adding icon themes: https://nixos.org/manual/nixos/stable/index.html#sec-gnome-icons-and-gtk-themes - gnome = { - core-utilities.enable = false; - games.enable = false; - }; - }; - pipewire = { - enable = true; - alsa.enable = true; - alsa.support32bit = true; - }; + # Configure the fingerprint reader + services.fprintd = { + enable = true; + tod.enable = true; + tod.driver = pkgs.libfprint-2-tod1-vfs0090; }; - # NixPkgs configuration - nixpkgs = { - system = "${system-arch}" - config = { - allowUnfree = true; + # Configure keymap in X11 + services.xserver = { + enable = true; + layout = "us"; + xkbVariant = ""; + libinput = { + enable = true; + touchpad.tapping = true; }; + # Enable the GNOME Desktop Environment. + displayManager.gdm.enable = true; + desktopManager.gnome.enable = true; + # Enable nVidia drivers + videoDrivers = [ "nvidia" ]; + autorun = true; }; - # Install various packages - environment = { - systemPackages = with pkgs; [ - vim - git - curl - htop - tailscale - iftop - jq - zip - tar - bash - ]; + # Set Gnome settings: + services.gnome = { + games.enable = false; + core-utilities.enable = true; + }; - # If a GUI is enabled, install GUI apps: - if config.services.xserver.enable then [ - pkgs.firefox - pkgs.steam - pkgs.bitwarden - pkgs.lutris - pkgs.vscodium - pkgs.vlc + # https://nixos.wiki/wiki/GNOME + environment.gnome.excludePackages = (with pkgs; [ + gnome.cheese + gnome.gnome-music + gnome.epiphany + gnome.geary + gnome.totem + gnome.gnome-characters + gnome-tour + gnome.gnome-maps + ]); + + # 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; + }; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.albert = { + isNormalUser = true; + description = "Albert J. Copeland"; + extraGroups = [ "networkmanager" "wheel" ]; + packages = with pkgs; [ + firefox + bitwarden + steam + lutris + vlc ]; }; - # Configure programs - programs = { - bash = { - enableCompletion = true; - enableLsColors = true; - shellAliases = { - d = "docker"; - dc = "docker-compose"; - de = "docker exec -it"; - ddate = "date +%Y.%m.%d"; - dday = "date +%A"; - e = "emacsclient -nw"; # emacs in a terminal - f = "fossil"; - g = "git"; - ga = "git add -A"; - gb = "git branch"; - gc = "git commit"; - gca = "git commit -a"; - gco = "git checkout"; - gd = "git diff"; - gl = "git pull --prune"; - gp = "git push origin HEAD"; - gs = "git status -sb"; - hs = "home-manager switch"; - ll = "ls -lah"; - rm = "rm -i"; - tdate = "date +%Y.%m.%d..%H.%M"; - ttime = "date +%H.%M"; - } - }; - firefox = { - # https://nixos.org/manual/nixos/stable/options.html#opt-programs.firefox.preferences - }; - vim = { - defaultEditor = true; - }; - xwayland = { - enable = true; - }; - dconf = { - enable = true; - }; + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + # Secureboot + sbctl + # Fingerprint Reader + fprintd + + # General packages + wget + vim + git + curl + htop + iftop + nload + iotop + glxinfo + tailscale + + # Gnome Extensions / Packages + gnomeExtensions.dash-to-dock + gnomeExtensions.blur-my-shell + gnomeExtensions.vitals + gnomeExtensions.user-themes + gnomeExtensions.caffeine + gnome3.gnome-tweaks + ]; + + # Enable the OpenSSH daemon and Tailscale. + services.openssh.enable = true; + services.tailscale.enable = true; + + # Enable nVidia drivers: + hardware.nvidia = { + }; + + # 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 = "unstable"; # Did you read the comment? } diff --git a/testing/configuration.nix b/testing/configuration.nix new file mode 100644 index 00000000..a380dc8c --- /dev/null +++ b/testing/configuration.nix @@ -0,0 +1,173 @@ +{ config, pkgs, ...}: { + # Desktop/Laptop configuration.nix + # Import other files to this config: + imports = [ + ./home-manager.nix + ./variables.nix + ]; + + # Basic configs + time.timeZone = ${timezone} + + # Boot settings + boot = { + blacklistedKernelModules = [ "nouveau" ]; + cleanTmpDir = true; + }; + + # Keep the system up-to-date automatically + system = { + stateVersion = ${nixos-version} + autoUpgrade = { + enable = true; + allowReboot = false; + channel = https://channels.nixos.org/nixos-${nixos-version} + }; + }; + + # Networking: + networking = { + hostname = ${hostname}; + enableIPv6 = false; + firewall = { + enable = true; + allowedTCPPorts = [ 22 ]; + allowedUDPPorts = [ 41641 ]; + }; + networkmanager = { + enable = true; + }; + }; + + # Create a user: + # https://nixos.org/manual/nixos/stable/index.html#sec-user-management + users.users.${username} = { + isNormalUser = false; + initialPassword = "Password"; + description = "${user-full-name}"; + extraGroups = [ "wheel", "networkmanager" ]; + uid = 1000; + shell = "/bin/bash" + }; + + # Enable various services: + services = { + openssh = { + enable = true; + }; + ntp = { + enable = true; + }; + tailscale = { + enable = true; + useRoutingFeatures = "server"; + }; + # X Display Manager + # https://nixos.org/manual/nixos/stable/index.html#sec-x11 + xserver = { + enable = true; + videoDrivers = nvidia; + autorun = true; + layout = "en"; + displayManager = { + gdm = { + enable = true; + }; + }; + desktopManager = { + gnome = { + enable = true; + }; + }; + # https://nixos.org/manual/nixos/stable/index.html#sec-gnome-enable + # Adding icon themes: https://nixos.org/manual/nixos/stable/index.html#sec-gnome-icons-and-gtk-themes + gnome = { + core-utilities.enable = false; + games.enable = false; + }; + }; + pipewire = { + enable = true; + alsa.enable = true; + alsa.support32bit = true; + }; + }; + + # NixPkgs configuration + nixpkgs = { + system = "${system-arch}" + config = { + allowUnfree = true; + }; + }; + + # Install various packages + environment = { + systemPackages = with pkgs; [ + vim + git + curl + htop + tailscale + iftop + jq + zip + tar + bash + ]; + + # If a GUI is enabled, install GUI apps: + if config.services.xserver.enable then [ + pkgs.firefox + pkgs.steam + pkgs.bitwarden + pkgs.lutris + pkgs.vscodium + pkgs.vlc + ]; + }; + + # Configure programs + programs = { + bash = { + enableCompletion = true; + enableLsColors = true; + shellAliases = { + d = "docker"; + dc = "docker-compose"; + de = "docker exec -it"; + ddate = "date +%Y.%m.%d"; + dday = "date +%A"; + e = "emacsclient -nw"; # emacs in a terminal + f = "fossil"; + g = "git"; + ga = "git add -A"; + gb = "git branch"; + gc = "git commit"; + gca = "git commit -a"; + gco = "git checkout"; + gd = "git diff"; + gl = "git pull --prune"; + gp = "git push origin HEAD"; + gs = "git status -sb"; + hs = "home-manager switch"; + ll = "ls -lah"; + rm = "rm -i"; + tdate = "date +%Y.%m.%d..%H.%M"; + ttime = "date +%H.%M"; + } + }; + firefox = { + # https://nixos.org/manual/nixos/stable/options.html#opt-programs.firefox.preferences + }; + vim = { + defaultEditor = true; + }; + xwayland = { + enable = true; + }; + dconf = { + enable = true; + }; + }; +} diff --git a/laptop/home-manager.nix b/testing/home-manager.nix similarity index 100% rename from laptop/home-manager.nix rename to testing/home-manager.nix diff --git a/laptop/test-configuration.nix b/testing/test-configuration.nix similarity index 100% rename from laptop/test-configuration.nix rename to testing/test-configuration.nix diff --git a/laptop/variables.nix b/testing/variables.nix similarity index 100% rename from laptop/variables.nix rename to testing/variables.nix