feat: Add machine configurations
This commit is contained in:
parent
80587b5f82
commit
2d11a56619
7 changed files with 278 additions and 2 deletions
15
flake.lock
15
flake.lock
|
@ -592,6 +592,20 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixos-hardware": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1705312285,
|
||||||
|
"narHash": "sha256-rd+dY+v61Y8w3u9bukO/hB55Xl4wXv4/yC8rCGVnK5U=",
|
||||||
|
"rev": "bee2202bec57e521e3bd8acd526884b9767d7fa0",
|
||||||
|
"revCount": 1526,
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://api.flakehub.com/f/pinned/NixOS/nixos-hardware/0.1.1526%2Brev-bee2202bec57e521e3bd8acd526884b9767d7fa0/018d0c89-6528-7027-9aae-490d904ad98f/source.tar.gz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://flakehub.com/f/NixOS/nixos-hardware/0.1.%2A.tar.gz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681001314,
|
"lastModified": 1681001314,
|
||||||
|
@ -718,6 +732,7 @@
|
||||||
"flake-schemas": "flake-schemas",
|
"flake-schemas": "flake-schemas",
|
||||||
"home-config": "home-config",
|
"home-config": "home-config",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"stylix": "stylix"
|
"stylix": "stylix"
|
||||||
}
|
}
|
||||||
|
|
13
flake.nix
13
flake.nix
|
@ -21,8 +21,10 @@
|
||||||
|
|
||||||
inputs.flake-schemas.url = "https://flakehub.com/f/DeterminateSystems/flake-schemas/*.tar.gz";
|
inputs.flake-schemas.url = "https://flakehub.com/f/DeterminateSystems/flake-schemas/*.tar.gz";
|
||||||
|
|
||||||
|
inputs.nixos-hardware.url = "https://flakehub.com/f/NixOS/nixos-hardware/0.1.*.tar.gz";
|
||||||
|
|
||||||
# Flake outputs that other flakes can use
|
# Flake outputs that other flakes can use
|
||||||
outputs = { flake-schemas, nixpkgs, stylix, home-manager, home-config, ... }:
|
outputs = { flake-schemas, nixpkgs, stylix, home-manager, home-config, nixos-hardware, ... }:
|
||||||
let
|
let
|
||||||
inherit (nixpkgs) lib;
|
inherit (nixpkgs) lib;
|
||||||
# Helpers for producing system-specific outputs
|
# Helpers for producing system-specific outputs
|
||||||
|
@ -55,10 +57,17 @@
|
||||||
# Pin nixpkgs
|
# Pin nixpkgs
|
||||||
nix.registry.nixpkgs.flake = nixpkgs;
|
nix.registry.nixpkgs.flake = nixpkgs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
machines = [ "capricorn" "gemini" "vm" ];
|
||||||
|
mkMachine = hostname: {
|
||||||
|
imports = [ nixosModule (import ./machine + "${hostname}" nixos-hardware) ];
|
||||||
|
home-manager.sharedModules = [{ jhome.hostName = hostname; }];
|
||||||
|
};
|
||||||
|
machineModules = lib.genAttrs machines mkMachine;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
default = nixosModule;
|
default = nixosModule;
|
||||||
inherit nixosModule;
|
inherit nixosModule;
|
||||||
};
|
} // machineModules;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
41
machines/capricorn/default.nix
Normal file
41
machines/capricorn/default.nix
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
{ nixos-hardware }: {
|
||||||
|
imports = [
|
||||||
|
# Include the results of the hardware scan.
|
||||||
|
./hardware-configuration.nix
|
||||||
|
nixos-hardware.nixosModules.common-pc-laptop
|
||||||
|
nixos-hardware.nixosModules.common-pc-laptop-hdd
|
||||||
|
nixos-hardware.nixosModules.common-pc-laptop-ssd
|
||||||
|
nixos-hardware.nixosModules.common-cpu-intel
|
||||||
|
];
|
||||||
|
|
||||||
|
# Setup extra filesystem options
|
||||||
|
fileSystems."/".options = [ "compress=zstd" ];
|
||||||
|
fileSystems."/home".options = [ "compress=zstd" ];
|
||||||
|
fileSystems."/nix".options = [ "compress=zstd" "noatime" ];
|
||||||
|
|
||||||
|
hardware.bluetooth.enable = true;
|
||||||
|
|
||||||
|
# Bootloader
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.systemd-boot.configurationLimit = 10;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
# Network configuration
|
||||||
|
networking.hostName = "capricorn";
|
||||||
|
networking.networkmanager.enable = true;
|
||||||
|
networking.networkmanager.wifi.backend = "iwd";
|
||||||
|
networking.networkmanager.appendNameservers = [ "1.1.1.1" "1.0.0.1" "8.8.8.8" "8.4.4.8" ];
|
||||||
|
|
||||||
|
console.useXkbConfig = true;
|
||||||
|
|
||||||
|
# Enable CUPS to print documents.
|
||||||
|
services.printing.enable = 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?
|
||||||
|
}
|
51
machines/capricorn/hardware-configuration.nix
Normal file
51
machines/capricorn/hardware-configuration.nix
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
# 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, modulesPath, ... }: {
|
||||||
|
imports = [
|
||||||
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "sd_mod" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/disk/by-label/NIXROOT";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = [ "subvol=root" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/nix" = {
|
||||||
|
device = "/dev/disk/by-label/NIXROOT";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = [ "subvol=nix" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/home" = {
|
||||||
|
device = "/dev/disk/by-label/NIXHOME";
|
||||||
|
fsType = "btrfs";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" = {
|
||||||
|
device = "/dev/disk/by-label/NIXBOOT";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [
|
||||||
|
{ device = "/dev/disk/by-label/NIXSWAP"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
# 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.enp0s20f0u1c2.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlp2s0.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;
|
||||||
|
}
|
71
machines/gemini/default.nix
Normal file
71
machines/gemini/default.nix
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
# 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’).
|
||||||
|
{ nixos-hardware }: { pkgs, ... }: {
|
||||||
|
imports = [
|
||||||
|
# Include the results of the hardware scan.
|
||||||
|
./hardware-configuration.nix
|
||||||
|
nixos-hardware.nixosModules.common-pc
|
||||||
|
nixos-hardware.nixosModules.common-pc-hdd
|
||||||
|
nixos-hardware.nixosModules.common-pc-ssd
|
||||||
|
nixos-hardware.nixosModules.common-cpu-amd
|
||||||
|
nixos-hardware.nixosModules.common-gpu-amd
|
||||||
|
];
|
||||||
|
|
||||||
|
fileSystems."/".options = [ "compress=zstd" ];
|
||||||
|
fileSystems."/steam".options = [ "compress=zstd" ];
|
||||||
|
fileSystems."/home".options = [ "compress=zstd" ];
|
||||||
|
fileSystems."/nix".options = [ "compress=zstd" "noatime" ];
|
||||||
|
|
||||||
|
# Use the systemd-boot EFI boot loader.
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.systemd-boot.configurationLimit = 3;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
# Enable bluetooth
|
||||||
|
hardware.bluetooth.enable = true;
|
||||||
|
|
||||||
|
networking.hostName = "gemini";
|
||||||
|
networking.networkmanager.enable = true;
|
||||||
|
networking.interfaces.enp4s0.wakeOnLan.enable = true;
|
||||||
|
|
||||||
|
console = {
|
||||||
|
# font = "Lat2-Terminus16";
|
||||||
|
# keyMap = "us";
|
||||||
|
useXkbConfig = true; # use xkbOptions in tty.
|
||||||
|
};
|
||||||
|
|
||||||
|
# Fix PoE switch going to sleep
|
||||||
|
systemd.services."ping-router" = {
|
||||||
|
enable = true;
|
||||||
|
description = "Continiuosly ping router to prevent PoE switch from going to sleep";
|
||||||
|
script = ''
|
||||||
|
${pkgs.iputils}/bin/ping \
|
||||||
|
"$(${pkgs.iproute2}/bin/ip route list default | sed 's/.*via \(\S\+\) .*/\1/')"
|
||||||
|
'';
|
||||||
|
wantedBy = [ "network-online.target" ];
|
||||||
|
after = [ "network-online.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "simple";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Configure keymap in X11
|
||||||
|
# services.xserver.xkbOptions = {
|
||||||
|
# "caps:swapescape" # map caps to escape.
|
||||||
|
# };
|
||||||
|
services.openssh.enable = true;
|
||||||
|
services.openssh.startWhenNeeded = true;
|
||||||
|
services.openssh.settings.AllowUsers = [ "jalil" ];
|
||||||
|
|
||||||
|
# Enable CUPS to print documents.
|
||||||
|
services.printing.enable = 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?
|
||||||
|
}
|
58
machines/gemini/hardware-configuration.nix
Normal file
58
machines/gemini/hardware-configuration.nix
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
# 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, 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-label/NIXOSROOT";
|
||||||
|
device = "/dev/disk/by-label/NIXOSHOME";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = [ "subvol=root" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/steam" = {
|
||||||
|
device = "/dev/disk/by-label/STEAM";
|
||||||
|
fsType = "btrfs";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/home" = {
|
||||||
|
device = "/dev/disk/by-label/NIXOSHOME";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = [ "subvol=home" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/nix" = {
|
||||||
|
device = "/dev/disk/by-label/NIXOSROOT";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = [ "subvol=nix" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" = {
|
||||||
|
device = "/dev/disk/by-label/BOOT";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [
|
||||||
|
{
|
||||||
|
device = "/dev/disk/by-label/SWAP";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
# 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.enp4s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
31
machines/vm/default.nix
Normal file
31
machines/vm/default.nix
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
{ ... }: {
|
||||||
|
services.qemuGuest.enable = true;
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [
|
||||||
|
"xhci_pci"
|
||||||
|
"ehci_pci"
|
||||||
|
"ahci"
|
||||||
|
"usbhid"
|
||||||
|
"usb_storage"
|
||||||
|
"sd_mod"
|
||||||
|
"virtio_balloon"
|
||||||
|
"virtio_blk"
|
||||||
|
"virtio_pci"
|
||||||
|
"virtio_ring"
|
||||||
|
# "virtio_vga"
|
||||||
|
"virtio_gpu"
|
||||||
|
];
|
||||||
|
fileSystems."/".device = "/dev/disk/by-label/nixos";
|
||||||
|
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
|
||||||
|
services.openssh.enable = 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?
|
||||||
|
}
|
Loading…
Reference in a new issue