diff options
| author | stefan <stefan@s00.xyz> | 2025-05-22 00:05:19 -0400 |
|---|---|---|
| committer | stefan <stefan@s00.xyz> | 2025-05-22 00:05:19 -0400 |
| commit | 949bdb233fd26bfe5ba51368f6172a33a369f714 (patch) | |
| tree | 38cac93ea68cb926f4c82a45bf9b4c19dc17b0c4 /nixos | |
| parent | 02780906808ef15ad3dc4709fcadac13acffa0b8 (diff) | |
| download | home-949bdb233fd26bfe5ba51368f6172a33a369f714.tar.gz | |
repo: move to modular nixos configuration
Diffstat (limited to 'nixos')
| -rw-r--r-- | nixos/default.nix | 179 |
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"; + }; + + +} |