aboutsummaryrefslogtreecommitdiff
path: root/hosts
diff options
context:
space:
mode:
Diffstat (limited to 'hosts')
-rw-r--r--hosts/default.nix46
-rw-r--r--hosts/nixbox/configuration.nix219
-rw-r--r--hosts/nixbox/hardware-configuration.nix44
-rw-r--r--hosts/nixpad/configuration.nix267
-rw-r--r--hosts/nixpad/hardware-configuration.nix50
5 files changed, 162 insertions, 464 deletions
diff --git a/hosts/default.nix b/hosts/default.nix
index e12b1f6..5abd965 100644
--- a/hosts/default.nix
+++ b/hosts/default.nix
@@ -1,35 +1,33 @@
-{
- nixpkgs,
- self,
- outputs,
- ...
-}: let
- inputs = self.inputs;
+{self, ...}: let
+ # get inputs from self
+ inherit (self) inputs;
+ # get necessary inputs from self.inputs
+ inherit (inputs) nixpkgs lanzaboote nixos-hardware;
+ inherit (inputs.home-manager.nixosModules) home-manager;
+ # get lib from nixpkgs and create and alias for lib.nixosSystem
+ # for potential future overrides & abstractions
+ inherit (nixpkgs) lib;
+ mkSystem = lib.nixosSystem;
- home-manager = inputs.home-manager.nixosModules.home-manager;
- homes = ../homes;
-in {
- nixbox = nixpkgs.lib.nixosSystem {
- specialArgs = {inherit inputs outputs;};
- modules = [
- # this list defines which files will be imported to be used as "modules" in the system config
- ./nixbox/configuration.nix
+ home = ../homes;
- # use the nixos-module for home-manager
- home-manager
- homes
- ];
- };
+ # define a sharedArgs variable that we can simply inherit
+ # across all hosts to avoid traversing the file whenever
+ # we need to add a common specialArg
+ # if a host needs a specific arg that others do not need
+ # then we can merge into the old attribute set as such:
+ # specialArgs = commonArgs // { newArg = "value"; };
- nixpad = nixpkgs.lib.nixosSystem {
- specialArgs = {inherit inputs outputs;};
+ commonArgs = {inherit self inputs;};
+in {
+ "nixpad" = mkSystem {
+ specialArgs = commonArgs;
modules = [
# this list defines which files will be imported to be used as "modules" in the system config
./nixpad/configuration.nix
-
# use the nixos-module for home-manager
home-manager
- homes
+ home
];
};
}
diff --git a/hosts/nixbox/configuration.nix b/hosts/nixbox/configuration.nix
deleted file mode 100644
index f1790d8..0000000
--- a/hosts/nixbox/configuration.nix
+++ /dev/null
@@ -1,219 +0,0 @@
-# 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
- ];
-
- # Bootloader.
- boot.loader.systemd-boot.enable = true;
- boot.loader.efi.canTouchEfiVariables = true;
- boot.loader.efi.efiSysMountPoint = "/boot/efi";
-
- networking.hostName = "nixbox"; # Define your hostname.
- # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
-
- # Configure network proxy if necessary
- # networking.proxy.default = "http://user:password@proxy:port/";
- # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
-
- # Enable networking
- networking.networkmanager.enable = true;
-
- # Set your time zone.
- time.timeZone = "Europe/London";
-
- # Select internationalisation properties.
- i18n.defaultLocale = "en_GB.UTF-8";
-
- i18n.extraLocaleSettings = {
- LC_ADDRESS = "en_GB.UTF-8";
- LC_IDENTIFICATION = "en_GB.UTF-8";
- LC_MEASUREMENT = "en_GB.UTF-8";
- LC_MONETARY = "en_GB.UTF-8";
- LC_NAME = "en_GB.UTF-8";
- LC_NUMERIC = "en_GB.UTF-8";
- LC_PAPER = "en_GB.UTF-8";
- LC_TELEPHONE = "en_GB.UTF-8";
- LC_TIME = "en_GB.UTF-8";
- };
-
- # Enable the X11 windowing system.
- services.xserver.enable = true;
-
- # Enable the flatpak service
- services.flatpak.enable = true;
-
- # Enable SDDM and set second display resolution/position
- services.xserver.displayManager = {
- sddm.enable = true;
- setupCommands = "xrandr --output HDMI-0 --mode 1280x1024 --output HDMI-0 --right-of DP-0";
- };
-
- # Enable the KDE Plasma Desktop Environment.
- services.xserver.desktopManager.plasma5.enable = true;
-
- # Enable hyprland
- programs.hyprland = {
- enable = true;
- enableNvidiaPatches = true;
- xwayland.enable = true;
- };
-
- # Configure keymap in X11
- services.xserver = {
- layout = "us";
- xkbVariant = "";
- };
-
- # Enable experimental features
- nix.settings.extra-experimental-features = ["flakes" "nix-command"];
-
- # Enable automatic gc
- nix.gc = {
- automatic = true;
- dates = "weekly";
- options = "--delete-older-than 30d";
- };
-
- # I never want to touch this again
- security.rtkit.enable = true;
- services.pipewire = {
- enable = true;
- alsa.enable = true;
- alsa.support32Bit = true;
- pulse.enable = true;
- jack.enable = true;
- };
-
- services.xserver.videoDrivers = ["nvidia"];
- hardware = {
- opengl = {
- enable = true;
- driSupport = true;
- driSupport32Bit = true;
- };
- nvidia = {
- modesetting.enable = true;
- nvidiaSettings = 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.floppydisk = {
- isNormalUser = true;
- description = "Frankie B.";
- extraGroups = ["networkmanager" "wheel"];
- packages = with pkgs; [
- kate
- ];
- initialPassword = "changeme";
- shell = pkgs.zsh;
- };
-
- # Allow unfree packages
- nixpkgs.config.allowUnfree = true;
-
- # security is for wusses
- nixpkgs.config.permittedInsecurePackages = [
- "openssl-1.1.1u"
- ];
-
- # Fonts
- fonts.packages = with pkgs; [
- winePackages.fonts
- ];
-
- # List packages installed in system profile. To search, run:
- # $ nix search wget
- environment.systemPackages = with pkgs; [
- # Tools
- vim
- wget
- git
- gnupg
- pinentry
- kitty
- ntfs3g
- pulseaudioFull
- linuxKernel.packages.linux_zen.v4l2loopback
- pciutils
- usbutils
- isoimagewriter
- nvtop
- screen
- pavucontrol
- paprefs
- gcc
-
- # Fonts
- nerdfonts
- jetbrains-mono
-
- # other shit
- libnotify
- hyprpaper
- networkmanagerapplet
- grim
- slurp
- wl-clipboard
- font-awesome
- rofi
- wlogout
- swaynotificationcenter
- swaylock
- sway
- swayidle
- helvum
- ];
-
- environment.sessionVariables = {
- WLR_NO_HARDWARE_CURSORS = "1";
- NIXOS_OZONE_WL = "1";
- };
-
- xdg.portal.enable = true;
- xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];
-
- programs.zsh.enable = true;
-
- # 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;
-
- # Enable printing
- services.printing.enable = true;
- services.printing.drivers = [pkgs.hplipWithPlugin];
-
- # Open ports in the firewall.
- # networking.firewall.allowedTCPPorts = [ ... ];
- # networking.firewall.allowedUDPPorts = [ ... ];
- # Or disable the firewall altogether.
- networking.firewall.enable = false;
-
- # 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?
-}
diff --git a/hosts/nixbox/hardware-configuration.nix b/hosts/nixbox/hardware-configuration.nix
deleted file mode 100644
index 2be489f..0000000
--- a/hosts/nixbox/hardware-configuration.nix
+++ /dev/null
@@ -1,44 +0,0 @@
-# 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 = ["xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod"];
- boot.initrd.kernelModules = [];
- boot.kernelModules = ["kvm-intel"];
- boot.extraModulePackages = [];
-
- fileSystems."/" = {
- device = "/dev/disk/by-uuid/c694a72f-2faa-49f3-813f-b9b552143088";
- fsType = "ext4";
- };
-
- fileSystems."/boot/efi" = {
- device = "/dev/disk/by-uuid/BA8E-DAAA";
- fsType = "vfat";
- };
-
- swapDevices = [
- {device = "/dev/disk/by-uuid/f30ab1ac-66a5-4389-b4fe-a52f53255ec6";}
- ];
-
- # 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.interfaces.enp3s0.useDHCP = lib.mkDefault true;
-
- nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
- powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
- hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
-}
diff --git a/hosts/nixpad/configuration.nix b/hosts/nixpad/configuration.nix
index 4b86ea4..68c8c3f 100644
--- a/hosts/nixpad/configuration.nix
+++ b/hosts/nixpad/configuration.nix
@@ -1,199 +1,156 @@
-# 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’).
+# This is your system's configuration file.
+# Use this to configure your system environment (it replaces /etc/nixos/configuration.nix)
{
+ inputs,
+ lib,
config,
pkgs,
...
}: {
+ # You can import other NixOS modules here
imports = [
- # Include the results of the hardware scan.
./hardware-configuration.nix
];
- # Bootloader.
- boot.loader.systemd-boot.enable = true;
- boot.loader.efi.canTouchEfiVariables = true;
- boot.loader.efi.efiSysMountPoint = "/boot/efi";
-
- networking.hostName = "nixpad"; # Define your hostname.
- # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
-
- # Configure network proxy if necessary
- # networking.proxy.default = "http://user:password@proxy:port/";
- # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
-
- # Enable networking
- networking.networkmanager.enable = true;
-
- # Set your time zone.
- time.timeZone = "Europe/London";
-
- # Select internationalisation properties.
- i18n.defaultLocale = "en_GB.UTF-8";
-
- i18n.extraLocaleSettings = {
- LC_ADDRESS = "en_GB.UTF-8";
- LC_IDENTIFICATION = "en_GB.UTF-8";
- LC_MEASUREMENT = "en_GB.UTF-8";
- LC_MONETARY = "en_GB.UTF-8";
- LC_NAME = "en_GB.UTF-8";
- LC_NUMERIC = "en_GB.UTF-8";
- LC_PAPER = "en_GB.UTF-8";
- LC_TELEPHONE = "en_GB.UTF-8";
- LC_TIME = "en_GB.UTF-8";
+ services.xserver = {
+ enable = true;
+ displayManager.sddm.enable = true;
+ desktopManager.plasma5.enable = true;
+ xkb.layout = "us";
+ libinput.enable = true;
};
- # Enable the X11 windowing system.
- services.xserver.enable = true;
-
- # Enable the KDE Plasma Desktop Environment.
- services.xserver.displayManager.sddm.enable = true;
- services.xserver.desktopManager.plasma5.enable = true;
-
- programs.hyprland = {
+ hardware.opengl = {
enable = true;
- xwayland.enable = true;
+ driSupport = true;
+ driSupport32Bit = true;
};
- # Configure keymap in X11
- services.xserver = {
- layout = "us";
- xkbVariant = "";
+ nixpkgs = {
+ # Configure your nixpkgs instance
+ config = {
+ # Disable if you don't want unfree packages
+ allowUnfree = true;
+ };
};
- # Enable experimental features
- nix.settings.extra-experimental-features = ["flakes" "nix-command"];
-
- # Enable automatic gc
- nix.gc = {
- automatic = true;
- dates = "weekly";
- options = "--delete-older-than 30d";
+ 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;
+ };
};
- # Enable CUPS to print documents.
- services.printing.enable = true;
+ # the configuration (pain)
+ programs = {
+ gnupg.agent = {
+ enable = true;
+ enableSSHSupport = true;
+ };
+ hyprland = {
+ enable = true;
+ xwayland.enable = true;
+ };
+ zsh.enable = true;
+ };
- # I never want to touch this again
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
- jack.enable = true;
};
- services.xserver.videoDrivers = ["intel"];
- hardware.opengl = {
- enable = true;
- driSupport = true;
- driSupport32Bit = 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.floppydisk = {
- isNormalUser = true;
- description = "Frankie B.";
- extraGroups = ["networkmanager" "wheel"];
- packages = with pkgs; [
- kate
- ];
- initialPassword = "changeme";
- shell = pkgs.zsh;
- };
+ environment.systemPackages = with pkgs; [
+ gcc
+ git
+ grim
+ lxqt.lxqt-policykit
+ pavucontrol
+ pciutils
+ pulseaudio
+ screen
+ slurp
+ usbutils
+ wget
+ wl-clipboard
+ xdg-utils
+ swaynotificationcenter
+ swayidle
+ wofi
+ swaylock
+ ];
- # Allow unfree packages
- nixpkgs.config.allowUnfree = true;
+ services.printing.enable = true;
- # Fonts
fonts.packages = with pkgs; [
+ font-awesome
+ nerdfonts
+ jetbrains-mono
winePackages.fonts
];
- # List packages installed in system profile. To search, run:
- # $ nix search wget
- environment.systemPackages = with pkgs; [
- # Tools
- vim
- wget
- git
- gnupg
- pinentry
- kitty
- ntfs3g
- pulseaudioFull
- linuxKernel.packages.linux_zen.v4l2loopback
- pciutils
- usbutils
- isoimagewriter
- nvtop
- screen
- pavucontrol
- paprefs
- gcc
-
-
- # Fonts
- nerdfonts
- jetbrains-mono
+ networking.hostName = "nixpad";
- # other shit
- #dunst
- libnotify
- hyprpaper
- networkmanagerapplet
- grim
- slurp
- wl-clipboard
- font-awesome
- rofi
- wlogout
- swaynotificationcenter
- swaylock
- sway
- swayidle
- helvum
- ];
+ boot.loader.systemd-boot.enable = true;
+ boot.loader.efi.canTouchEfiVariables = true;
+ boot.initrd.systemd.enable = true;
+ boot.kernelPackages = pkgs.linuxPackages_latest;
+
- environment.sessionVariables = {
- WLR_NO_HARDWARE_CURSORS = "1";
- NIXOS_OZONE_WL = "1";
- };
+ # Set a time zone, idiot
+ time.timeZone = "Europe/London";
- xdg.portal.enable = true;
- xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
+ # Fun internationalisation stuffs (AAAAAAAA)
+ i18n.defaultLocale = "en_GB.UTF-8";
- programs.zsh.enable = true;
+ i18n.extraLocaleSettings = {
+ LC_ADDRESS = "en_GB.UTF-8";
+ LC_IDENTIFICATION = "en_GB.UTF-8";
+ LC_MEASUREMENT = "en_GB.UTF-8";
+ LC_MONETARY = "en_GB.UTF-8";
+ LC_NAME = "en_GB.UTF-8";
+ LC_NUMERIC = "en_GB.UTF-8";
+ LC_PAPER = "en_GB.UTF-8";
+ LC_TELEPHONE = "en_GB.UTF-8";
+ LC_TIME = "en_GB.UTF-8";
+ };
- # 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;
+ # define user acc
+ users.users.floppydisk = {
+ isNormalUser = true;
+ description = "Frankie B.";
+ extraGroups = ["networkmanager" "wheel"];
+ openssh.authorizedKeys.keys = [
+ # TODO: Add your SSH public key(s) here, if you plan on using SSH to connect
+ ];
+ shell = pkgs.zsh;
};
- # List services that you want to enable:
+ nix.gc = {
+ automatic = true;
+ dates = "weekly";
+ options = "--delete-older-than 30d";
+ };
- # Enable the OpenSSH daemon.
- services.openssh.enable = true;
+ # 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.
- # Open ports in the firewall.
- # networking.firewall.allowedTCPPorts = [ ... ];
- # networking.firewall.allowedUDPPorts = [ ... ];
- # Or disable the firewall altogether.
+ services.openssh.enable = true;
+
networking.firewall.enable = false;
-
- # 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?
+
+ system.stateVersion = "24.05";
+
}
diff --git a/hosts/nixpad/hardware-configuration.nix b/hosts/nixpad/hardware-configuration.nix
index e326b0c..3588111 100644
--- a/hosts/nixpad/hardware-configuration.nix
+++ b/hosts/nixpad/hardware-configuration.nix
@@ -1,39 +1,45 @@
# 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")
- ];
+ config,
+ lib,
+ pkgs,
+ modulesPath,
+ ...
+}: {
+ imports = [
+ (modulesPath + "/installer/scan/not-detected.nix")
+ ];
+
+ boot.initrd.availableKernelModules = ["xhci_pci" "nvme" "uas" "sd_mod" "rtsx_usb_sdmmc"];
+ boot.initrd.kernelModules = [];
+ boot.kernelModules = ["kvm-intel"];
+ boot.extraModulePackages = [];
- boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ata_piix" "usb_storage" "sd_mod" "sdhci_pci" ];
- boot.initrd.kernelModules = [ ];
- boot.kernelModules = [ "kvm-intel" ];
- boot.extraModulePackages = [ ];
+ fileSystems."/" = {
+ device = "/dev/disk/by-uuid/81d5eb4d-ed55-446c-8c99-048dfb214f9d";
+ fsType = "ext4";
+ };
- fileSystems."/" =
- { device = "/dev/disk/by-uuid/79fd353d-4e05-44fd-9e10-e57b08c140f0";
- fsType = "ext4";
- };
+ boot.initrd.luks.devices."luks-6251bba4-3361-4923-8d83-812cc3162b3e".device = "/dev/disk/by-uuid/6251bba4-3361-4923-8d83-812cc3162b3e";
- fileSystems."/boot/efi" =
- { device = "/dev/disk/by-uuid/AA53-B6CE";
- fsType = "vfat";
- };
+ fileSystems."/boot" = {
+ device = "/dev/disk/by-uuid/89AE-5193";
+ fsType = "vfat";
+ };
- swapDevices =
- [ { device = "/dev/disk/by-uuid/92e64b37-f558-4333-bfb0-0e4bfe6e91c0"; }
- ];
+ swapDevices = [
+ {device = "/dev/disk/by-uuid/d3f0c084-4a4d-4175-a0e6-94fbe8459614";}
+ ];
# 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.interfaces.enp0s25.useDHCP = lib.mkDefault true;
- # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
+ # networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true;
+ # networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;