diff options
| -rw-r--r-- | flake.nix | 4 | ||||
| -rw-r--r-- | modules/core/createHost.nix | 77 | ||||
| -rw-r--r-- | modules/hosts/hostBoilerplate.nix | 5 | ||||
| -rw-r--r-- | modules/hosts/tiamat/hardware-configuration.nix | 40 | ||||
| -rw-r--r-- | modules/packages/fish.nix | 23 |
5 files changed, 142 insertions, 7 deletions
@@ -6,6 +6,6 @@ }; outputs = inputs: - inputs.flake-parts.lib.mkFlake { inherit inputs; } - (inputs.import-tree ./modules); + inputs.flake-parts.lib.mkFlake {inherit inputs;} + (inputs.import-tree ./modules); } diff --git a/modules/core/createHost.nix b/modules/core/createHost.nix new file mode 100644 index 0000000..7c84bde --- /dev/null +++ b/modules/core/createHost.nix @@ -0,0 +1,77 @@ +{ + self, + lib, + config, + pkgs, + ... +}: let + cfg = config.jcklib.createHost; +in { + flake.nixosModules.createHost = {lib, ...}: { + options.jcklib.createHost = { + hostName = lib.mkOption { + type = lib.types.str; + }; + architecture = lib.mkOption { + type = lib.types.enum ["x86_64-linux" "aarch64-linux"]; + default = "x86_64-linux"; + }; + userName = lib.mkOption { + type = lib.types.str; + default = "jck"; + }; + }; + }; + + config = { + boot.kernelPackages = lib.mkDefault pkgs.linuxPackages_latest; + hardware.firmware = with pkgs; [ + linux-firmware + ]; + hardware.enableRedistributableFirmware = true; + + system.name = cfg.hostName; + networking.hostName = cfg.hostName; + + networking.networkmanager.enable = true; + + time.timeZone = lib.mkDefault "US/Central"; + 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"; + }; + + services.xserver.xkb = { + layout = "us"; + variant = ""; + }; + + users.users.${cfg.userName} = { + isNormalUser = true; + description = cfg.userName; + extraGroups = ["networkmanager" "wheel"]; + shell = pkgs.fish; # UPDATE WITH WRAPPED FISH CONFIG LATER + }; + + nixpkgs.config.allowUnfree = true; + nix.settings = { + experimental-features = ["nix-command" "flakes"]; + auto-optimise-store = true; + }; + + services.openssh = { + enable = true; + settings.PermitRootLogin = "no"; + }; + + system.stateVersion = "25.05"; + }; +} diff --git a/modules/hosts/hostBoilerplate.nix b/modules/hosts/hostBoilerplate.nix deleted file mode 100644 index 14b7c84..0000000 --- a/modules/hosts/hostBoilerplate.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - flake.nixosModules.hostBoilerplate = {lib, ...}: { - options. - }; -} diff --git a/modules/hosts/tiamat/hardware-configuration.nix b/modules/hosts/tiamat/hardware-configuration.nix new file mode 100644 index 0000000..dee0ce0 --- /dev/null +++ b/modules/hosts/tiamat/hardware-configuration.nix @@ -0,0 +1,40 @@ +# 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" "thunderbolt" "usb_storage" "uas" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/0983bf69-0f71-4c49-885b-0b5c09a19429"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/756C-8B9B"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/50dd07e0-bf93-450c-a91b-aa73a18a8224"; } + ]; + + # 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.wlp1s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/modules/packages/fish.nix b/modules/packages/fish.nix new file mode 100644 index 0000000..fb3223d --- /dev/null +++ b/modules/packages/fish.nix @@ -0,0 +1,23 @@ +{inputs, ...}: { + perSystem = { + self', + pkgs, + ... + }: let + fishConf = '' + function fish_greeting + fastfetch + end + + fish_vi_key_bindings + ''; + in { + packages.fish = inputs.wrappers.lib.wrapPackage { + inherit pkgs; + package = pkgs.fish; + flags = { + "-C" = "source ${fishConf}"; + }; + }; + }; +} |
