aboutsummaryrefslogtreecommitdiff
path: root/nixos
diff options
context:
space:
mode:
authorstefan <stefan@s00.xyz>2025-05-22 00:05:19 -0400
committerstefan <stefan@s00.xyz>2025-05-22 00:05:19 -0400
commit949bdb233fd26bfe5ba51368f6172a33a369f714 (patch)
tree38cac93ea68cb926f4c82a45bf9b4c19dc17b0c4 /nixos
parent02780906808ef15ad3dc4709fcadac13acffa0b8 (diff)
downloadhome-949bdb233fd26bfe5ba51368f6172a33a369f714.tar.gz
repo: move to modular nixos configuration
Diffstat (limited to 'nixos')
-rw-r--r--nixos/default.nix179
1 files changed, 179 insertions, 0 deletions
diff --git a/nixos/default.nix b/nixos/default.nix
new file mode 100644
index 0000000..1997948
--- /dev/null
+++ b/nixos/default.nix
@@ -0,0 +1,179 @@
+{ config, lib, pkgs, inputs, ... }:
+let
+ cfg = config.nixos;
+in
+{
+ imports = [
+ # ./kmonad.nix
+ ];
+
+ options.nixos = with lib.options; {
+ hostname = mkOption {
+ type = lib.types.str;
+ description = "Hostname for the system";
+ default = "nixos";
+ };
+
+ timezone = mkOption {
+ type = lib.types.str;
+ description = "Local timezone";
+ default = "America/New_York";
+ };
+
+ username = mkOption {
+ type = lib.types.str;
+ description = "Username for the main user";
+ default = "stefan";
+ };
+
+ shell = mkOption {
+ type = lib.types.package;
+ default = pkgs.zsh;
+ description = "Interactive shell for main user";
+ };
+
+ wifi = mkOption {
+ type = lib.types.bool;
+ description = "Whether to enable wireless networking via NetworkManager";
+ default = true;
+ };
+ };
+
+ config = {
+ # nixos = {
+ # };
+ nix = {
+ settings.experimental-features = [ "nix-command" "flakes" ];
+ };
+
+ time.timeZone = cfg.timezone;
+ nixpkgs.config.allowUnfree = true;
+
+ boot.kernelPackages = pkgs.linuxPackages_latest;
+ boot.loader.systemd-boot.enable = true;
+ boot.loader.systemd-boot.consoleMode = "max";
+ boot.loader.efi.canTouchEfiVariables = true;
+
+ networking = {
+ hostName = cfg.hostname;
+ networkmanager.enable = cfg.wifi;
+ };
+
+ documentation.dev.enable = true;
+
+ users.users."${cfg.username}" = {
+ isNormalUser = true;
+ extraGroups = [
+ "wheel"
+ "input" # TODO: remove;
+ "uinput"
+ "networkmanager"
+ "gamemode"
+ ];
+ # ++ (lib.optional cfg.wifi "networkmanager")
+ # ++ (lib.optional cfg.gaming "gamemode");
+ packages = with pkgs; [
+ unzip
+ tree
+ ungoogled-chromium
+ ];
+ shell = cfg.shell;
+ };
+
+ environment.systemPackages = with pkgs; [
+ neovim
+ wl-clipboard
+ wmenu
+ gnupg
+ pinentry-qt
+ btop
+ man-pages
+ man-pages-posix
+ cage
+ zsh
+ ]; # TODO
+
+
+ services.greetd = {
+ enable = true;
+ settings = {
+ default_session = {
+ command = "${pkgs.greetd.greetd}/bin/agreety --cmd 'sway --unsupported-gpu'";
+ };
+ };
+ };
+
+ programs.zsh = {
+ enable = true;
+ # TODO
+ shellInit = ''
+ # autoload -Uz add-zsh-hook # avoids an error with system prompt
+ '';
+ # promptInit = "";
+ };
+ # TODO
+ programs.foot.enable = true;
+ programs.foot.enableZshIntegration = false; # TODO: https://github.com/NixOS/nixpkgs/pull/409627
+ programs.sway.enable = true;
+ programs.steam = {
+ enable = true;
+ };
+ programs.gamescope = {
+ enable = true;
+ capSysNice = true;
+ };
+
+ security = {
+ polkit.enable = true;
+ rtkit.enable = true;
+ doas = {
+ enable = true;
+ extraRules = [{
+ users = ["${cfg.username}"];
+ keepEnv = true;
+ persist = true;
+ }];
+ };
+ };
+
+ services.xserver.xkb.layout = "us";
+ services.xserver.xkb.variant = "colemak_dh,";
+
+ services.pipewire = {
+ enable = true;
+ alsa.enable = true;
+ wireplumber.enable = true;
+ pulse.enable = true;
+ };
+
+ services.libinput.enable = true;
+
+ # environment.pathsToLink = [ "/share/zsh" ];
+ console = {
+ earlySetup = true;
+ useXkbConfig = true;
+ colors = [
+ "0f0f0f"
+ "ac8a8c"
+ "8aac8b"
+ "aca98a"
+ "8f8aac"
+ "ac8aac"
+ "8aabac"
+ "cacaca"
+ "4c4c4c"
+ "ac8a8c"
+ "8aac8b"
+ "aca98a"
+ "8f8aac"
+ "ac8aac"
+ "8aabac"
+ "f0f0f0"
+ ];
+ };
+
+ system.stateVersion = "24.11";
+ };
+
+
+}