diff --git a/lib/default.nix b/lib/default.nix new file mode 100644 index 0000000..c5011e9 --- /dev/null +++ b/lib/default.nix @@ -0,0 +1,7 @@ +{ lib, ... }: +{ + mkStrOption = lib.mkOption { + type = lib.types.str; + default = ""; + }; +} diff --git a/modules/nixos/hardware/default.nix b/modules/nixos/hardware/default.nix index 1463387..19cd3e2 100644 --- a/modules/nixos/hardware/default.nix +++ b/modules/nixos/hardware/default.nix @@ -8,15 +8,9 @@ options.hardware = { drives.btrfs = { enable = lib.mkEnableOption ""; - drive = lib.mkOption { - type = lib.types.str; - default = ""; - }; + drive = lib.pantheon.mkStrOption; ephemeralRoot = lib.mkEnableOption ""; }; - gpu = lib.mkOption { - type = lib.types.str; - default = ""; - }; + gpu = lib.pantheon.mkStrOption; }; } diff --git a/modules/nixos/system/default.nix b/modules/nixos/system/default.nix new file mode 100644 index 0000000..d6c4763 --- /dev/null +++ b/modules/nixos/system/default.nix @@ -0,0 +1,16 @@ +{ config, lib, ...}: +{ + imports = [ + ./users.nix + ./localisation.nix + ./nix-config.nix + ]; + + options.system = { + mainUser = lib.pantheon.mkStrOption; + }; + + config = { + system.stateVersion = "25.05"; # Did you read the comment? + }; +} diff --git a/modules/nixos/system/localisation.nix b/modules/nixos/system/localisation.nix new file mode 100644 index 0000000..904408b --- /dev/null +++ b/modules/nixos/system/localisation.nix @@ -0,0 +1,9 @@ +{ config, lib, ... }: +{ + config = lib.mkMerge [ + { + time.timeZone = "Asia/Singapore"; + i18n.defaultLocale = "en_US.UTF-8"; + } + ]; +} diff --git a/modules/nixos/system/nix-config.nix b/modules/nixos/system/nix-config.nix new file mode 100644 index 0000000..e2ff46b --- /dev/null +++ b/modules/nixos/system/nix-config.nix @@ -0,0 +1,6 @@ +{ config, lib, ... }: +{ + config = { + nix.settings.experimental-features = ["nix-command" "flakes"]; + }; +} diff --git a/modules/nixos/system/users.nix b/modules/nixos/system/users.nix new file mode 100644 index 0000000..e116e5e --- /dev/null +++ b/modules/nixos/system/users.nix @@ -0,0 +1,18 @@ +{ config, lib, pkgs, ... }: +{ + config = lib.mkMerge [ + { + users.users."${config.system.mainUser}" = { + isNormalUser = true; + initialPassword = "1"; + extraGroups = [ + "wheel" + ]; + packages = with pkgs; [ + git + neovim + ]; + }; + } + ]; +} diff --git a/systems/x86_64-linux/nemesis/default.nix b/systems/x86_64-linux/nemesis/default.nix index a0e75be..c3121e2 100644 --- a/systems/x86_64-linux/nemesis/default.nix +++ b/systems/x86_64-linux/nemesis/default.nix @@ -1,5 +1,6 @@ { config, lib, pkgs, ... }: { + system.mainUser = "rafiq"; hardware.drives.btrfs = { enable = true; drive = "/dev/disk/by-id/nvme-CT2000P3SSD8_2325E6E77434"; @@ -7,32 +8,23 @@ }; hardware.gpu = "nvidia"; + + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; boot.initrd.kernelModules = [ "dm-snapshot" ]; boot.kernelModules = [ "kvm-amd" ]; boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; + networking.useDHCP = lib.mkDefault true; - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; networking.hostName = "nemesis"; # Define your hostname. networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. - time.timeZone = "Asia/Singapore"; - i18n.defaultLocale = "en_US.UTF-8"; + services.pipewire = { enable = true; pulse.enable = true; }; - users.users.rafiq = { - isNormalUser = true; - initialPassword = "1"; - extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. - packages = with pkgs; [ - git - neovim - ]; - }; - nix.settings.experimental-features = ["nix-command" "flakes"]; - system.stateVersion = "25.05"; # Did you read the comment? + }