From b6a8516d01e3bb256c88dc3e42470d9e5fd2ae20 Mon Sep 17 00:00:00 2001 From: scouckel Date: Wed, 26 Nov 2025 03:34:50 -0600 Subject: add generic flake for tests --- README.md | 12 +++- flake.nix | 23 ++++++++ hosts/generic/configuration.nix | 118 ++++++++++++++++++++++++++++++++++++++++ hosts/generic/home.nix | 65 ++++++++++++++++++++++ 4 files changed, 217 insertions(+), 1 deletion(-) create mode 100644 hosts/generic/configuration.nix create mode 100644 hosts/generic/home.nix diff --git a/README.md b/README.md index 15fc025..a800e28 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,16 @@ moved to nixos after using arch for the vast majority of my linux career largely i encourage you not to use this configuration as is, even if i do: not very pretty, exceedingly simple, not very elegant, written stupidly +IF YOU WANT TO USE THE CONFIG: +clone into any directory (i recommend home folder) +cd into hosts/generic and + - change hostname in configuration.nix to desired hostname + - change user in configuration.nix and home.nix to user name + - consider setting your hyprland monitors in home.nix under wayland.windowManager.hyprland.settings.monitor + - consider changing your timezone in configuration.nix under time.timeZone +run sudo nixos-rebuild switch --flake /path/to/directory/nixosconf/#generic +fix as necessary + hosts: tiamat is a framework 13 laptop, named because the io modules are kind of like the heads (also the name is awesome) @@ -22,4 +32,4 @@ xanathar ii (my old laptop, and maybe future server) is an hp pavilion from a fe - whatever is in one of those things -hope you enjoy reading my config files \ No newline at end of file +hope you enjoy reading my config files diff --git a/flake.nix b/flake.nix index 7144b00..9fda92e 100644 --- a/flake.nix +++ b/flake.nix @@ -103,6 +103,29 @@ chaotic.nixosModules.default ]; }; + generic = nixpkgs.lib.nixosSystem { + specialArgs = {inherit inputs;}; + modules = [ + ./hosts/generic/configuration.nix + /etc/nixos/hardware-configuration.nix + ./modules/nixos + nix-flatpak.nixosModules.nix-flatpak + home-manager.nixosModules.home-manager { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.jck = { + imports = [ + ./hosts/generic/home.nix + ./modules/home-manager + inputs.nvf.homeManagerModules.default + ]; + }; + home-manager.extraSpecialArgs = {inherit inputs;}; + } + nur.modules.nixos.default + chaotic.nixosModules.default + ]; + }; }; }; } diff --git a/hosts/generic/configuration.nix b/hosts/generic/configuration.nix new file mode 100644 index 0000000..07f15fe --- /dev/null +++ b/hosts/generic/configuration.nix @@ -0,0 +1,118 @@ +{ pkgs, ... }: + +{ + imports = [ # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; + + # Bootloader. + boot.loader = { + efi = { + canTouchEfiVariables = true; + efiSysMountPoint = "/boot"; # ← use the same mount point here. + }; + grub = { + efiSupport = true; + device = "nodev"; + useOSProber = true; + theme = "${pkgs.fetchFromGitHub { # blue screen of life grub theme + owner = "harishnkr"; + repo = "bsol"; + rev = "8f39f66967e2391b11ee554578f0b821070ec72a"; + sha256 = "sha256-UD5crwJdqnKVnxTN2vHIukJnQuzxmkko3E5wb8Xg6gs"; + }}/bsol"; + }; + }; + + boot.kernelPackages = pkgs.linuxPackages_latest; + + # amd gpu config + hardware.graphics = { + enable = true; + enable32Bit = true; + extraPackages = with pkgs; [ + rocmPackages.clr.icd + libva + ]; + }; + + hardware.firmware = with pkgs; [ + linux-firmware + ]; + hardware.cpu.amd.updateMicrocode = true; + + # networking + system.name = "system"; + networking.hostName = "system"; + networking.networkmanager = { + enable = true; + plugins = with pkgs; [ + networkmanager-openvpn + ]; + }; + + networking.nameservers = [ "1.1.1.1" "9.9.9.9" ]; + + # localization + time.timeZone = "Etc/UTC"; + 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.user = { + isNormalUser = true; + description = "user"; + extraGroups = [ "networkmanager" "wheel" "nordvpn" ]; + }; + + nixpkgs.config.allowUnfree = true; + + nix.settings = { + experimental-features = [ "nix-command" "flakes" ]; + auto-optimise-store = true; + }; + + environment.pathsToLink = [ "/share/xdg-desktop-portal" "/share/applications" ]; + + gaming.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; + # }; + + security.polkit.enable = true; + services.playerctld.enable = true; + + services.openssh = { + enable = true; + settings.PermitRootLogin = "no"; + # PasswordAuthentication = true; + # allowSFTP = true; + }; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + system.stateVersion = "25.05"; +} diff --git a/hosts/generic/home.nix b/hosts/generic/home.nix new file mode 100644 index 0000000..64bf842 --- /dev/null +++ b/hosts/generic/home.nix @@ -0,0 +1,65 @@ +{ config, pkgs, ... }: + +{ + # Home Manager needs a bit of information about you and the paths it should + # manage. + home.username = "user"; + home.homeDirectory = "/home/user"; + + # This value determines the Home Manager release that your configuration is + # compatible with. This helps avoid breakage when a new Home Manager release + # introduces backwards incompatible changes. + # + # You should not change this value, even if you update Home Manager. If you do + # want to update the value, then make sure to first check the Home Manager + # release notes. + home.stateVersion = "25.05"; # Please read the comment before changing. + + # The home.packages option allows you to install Nix packages into your + # environment. + + # Home Manager is pretty good at managing dotfiles. The primary way to manage + # plain files is through 'home.file'. + home.file = { + # # Building this configuration will create a copy of 'dotfiles/screenrc' in + # # the Nix store. Activating the configuration will then make '~/.screenrc' a + # # symlink to the Nix store copy. + # ".screenrc".source = dotfiles/screenrc; + + # # You can also set the file content immediately. + # ".gradle/gradle.properties".text = '' + # org.gradle.console=verbose + # org.gradle.daemon.idletimeout=3600000 + # ''; + }; + + # Home Manager can also manage your environment variables through + # 'home.sessionVariables'. These will be explicitly sourced when using a + # shell provided by Home Manager. If you don't want to manage your shell + # through Home Manager then you have to manually source 'hm-session-vars.sh' + # located at either + # + # ~/.nix-profile/etc/profile.d/hm-session-vars.sh + # + # or + # + # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh + # + # or + # + # /etc/profiles/per-user/jck/etc/profile.d/hm-session-vars.sh + # + home.sessionVariables = { + # EDITOR = "emacs"; + }; + + hyprland.enable = true; + gaming.enable = true; + + dconf.settings."org/gnome/desktop/interface" = { + color-scheme = "prefer-dark"; + }; + + # Let Home Manager install and manage itself. + programs.home-manager.enable = true; +} -- cgit v1.3