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 | |
| parent | 02780906808ef15ad3dc4709fcadac13acffa0b8 (diff) | |
| download | home-949bdb233fd26bfe5ba51368f6172a33a369f714.tar.gz | |
repo: move to modular nixos configuration
| -rw-r--r-- | form/configuration.nix | 151 | ||||
| -rw-r--r-- | form/configuration_old.nix | 235 | ||||
| -rw-r--r-- | nixos/default.nix | 179 |
3 files changed, 202 insertions, 363 deletions
diff --git a/form/configuration.nix b/form/configuration.nix index 5a6a789..2bea6da 100644 --- a/form/configuration.nix +++ b/form/configuration.nix @@ -1,136 +1,31 @@ { config, lib, pkgs, inputs, ... }: - { - imports = - [ + imports = + [ + ../nixos ./hardware-configuration.nix ]; - boot.kernelPackages = pkgs.linuxPackages_latest; - boot.loader.systemd-boot.enable = true; - boot.loader.systemd-boot.consoleMode = "max"; - boot.loader.efi.canTouchEfiVariables = true; - - nixpkgs.config.allowUnfree = true; - - networking.hostName = "form"; - - networking.networkmanager.enable = true; - - time.timeZone = "America/New_York"; - - console = { - useXkbConfig = true; # use xkb.options in tty. - }; - - 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; - - programs.zsh = { - enable = true; - ohMyZsh.enable = true; - }; - - documentation.dev.enable = true; - - users.users.stefan = { - isNormalUser = true; - extraGroups = [ "wheel" "networkmanager" "gamemode" ]; # Enable ‘sudo’ for the user. - packages = with pkgs; [ - unzip - tree - discord-ptb - ungoogled-chromium - osu-lazer-bin - xfce.thunar - ]; - shell = pkgs.zsh; - }; - - #programs.firefox.enable = true; - programs.foot.enable = true; - programs.sway.enable = true; - programs.steam.enable = true; - - security = { - polkit.enable = true; - rtkit.enable = true; - doas = { - enable = true; - extraRules = [{ - users = ["stefan"]; - # keepEnv = true; - persist = true; - }]; + config.nixos = { + username = "stefan"; + hostname = "form"; + wifi = false; + }; + + config = { + hardware.graphics.enable = true; + boot.initrd.kernelModules = [ "nvidia" "nvidia_uvm" "nvidia_drm" ]; + boot.extraModulePackages = [ config.boot.kernelPackages.nvidia_x11 ]; + # boot.kernelParams = []; + services.xserver.videoDrivers = ["nvidia"]; + hardware.nvidia = { + modesetting.enable = true; + open = true; + nvidiaSettings = true; + package = config.boot.kernelPackages.nvidiaPackages.beta; }; + hardware.opengl.extraPackages = with pkgs; [ + vaapiVdpau + ]; }; - - services.greetd = { - enable = true; - settings = { - default_session = { - command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd 'sway --unsupported-gpu'"; - user = "greeter"; - }; - }; - }; - - environment.systemPackages = with pkgs; [ - zsh - neovim - wl-clipboard - wmenu - gnupg - pinentry-qt - btop - man-pages - man-pages-posix - wineWowPackages.staging - winetricks - wineWowPackages.waylandFull - ]; - - environment.pathsToLink = [ "/share/zsh" ]; - - # List services that you want to enable: - - # Enable the OpenSSH daemon. - # services.openssh.enable = true; - - # Open ports in the firewall. - # networking.firewall.allowedTCPPorts = [ ... ]; - # networking.firewall.allowedUDPPorts = [ ... ]; - # Or disable the firewall altogether. - # networking.firewall.enable = false; - - # Copy the NixOS configuration file and link it from the resulting system - # (/run/current-system/configuration.nix). This is useful in case you - # accidentally delete configuration.nix. - # system.copySystemConfiguration = true; - - - hardware.graphics.enable = true; - services.xserver.videoDrivers = ["nvidia"]; - hardware.nvidia = { - modesetting.enable = true; - open = true; - nvidiaSettings = true; - package = config.boot.kernelPackages.nvidiaPackages.latest; - }; - - nix = { - settings.experimental-features = [ "nix-command" "flakes" ]; - }; - - system.stateVersion = "24.11"; } - diff --git a/form/configuration_old.nix b/form/configuration_old.nix deleted file mode 100644 index e2c6bcb..0000000 --- a/form/configuration_old.nix +++ /dev/null @@ -1,235 +0,0 @@ -{ config, lib, pkgs, inputs, kmonad, ... }: -let - ttyColor = str: (lib.strings.removePrefix "#" str); - scheme = config.modules.scheme; -in -{ - imports = - [ - ../nixos - ./hardware-configuration.nix - ]; - - services.kmonad = { - enable = true; - # keyboards = { - # }; - }; - - boot.kernelPackages = pkgs.linuxPackages_latest; - boot.loader.systemd-boot.enable = true; - boot.loader.systemd-boot.consoleMode = "max"; - boot.loader.efi.canTouchEfiVariables = true; - - nixpkgs.config.allowUnfree = true; - - networking.hostName = "form"; - - networking.networkmanager.enable = true; - - time.timeZone = "America/New_York"; - - services.xserver.xkb.layout = "us"; - services.xserver.xkb.variant = "colemak_dh,"; - # services.xserver.enable = true; - # services.displayManager.sddm.enable = true; - # services.desktopManager.plasma6.enable = true; - - services.pipewire = { - enable = true; - alsa.enable = true; - wireplumber.enable = true; - pulse.enable = true; - }; - - services.libinput.enable = true; - - programs.zsh = { - enable = true; - ohMyZsh.enable = true; - }; - - documentation.dev.enable = true; - - users.users.stefan = { - isNormalUser = true; - extraGroups = [ - "wheel" - "networkmanager" - "gamemode" - "input" # TODO: can remove these later - "uinput" - ]; - packages = with pkgs; [ - unzip - tree - discord-ptb - ungoogled-chromium - osu-lazer-bin - xfce.thunar - ]; - shell = pkgs.zsh; - }; - - #programs.firefox.enable = true; - programs.foot.enable = true; - programs.sway.enable = true; - programs.steam = { - enable = true; - gamescopeSession.enable = true; - }; - programs.gamescope = { - enable = true; - capSysNice = true; - }; - - security = { - polkit.enable = true; - rtkit.enable = true; - doas = { - enable = true; - extraRules = [{ - users = ["stefan"]; - # keepEnv = true; - persist = true; - }]; - }; - }; - - services.greetd = { - enable = true; - settings = { - default_session = { - command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd 'sway --unsupported-gpu'"; - user = "greeter"; - }; - }; - }; - - environment.systemPackages = with pkgs; [ - zsh - neovim - wl-clipboard - wmenu - gnupg - pinentry-qt - btop - man-pages - man-pages-posix - wineWowPackages.staging - winetricks - wineWowPackages.waylandFull - tamzen - ]; - - environment.pathsToLink = [ "/share/zsh" ]; - - # List services that you want to enable: - - # Enable the OpenSSH daemon. - # services.openssh.enable = true; - - # Open ports in the firewall. - # networking.firewall.allowedTCPPorts = [ ... ]; - # networking.firewall.allowedUDPPorts = [ ... ]; - # Or disable the firewall altogether. - # networking.firewall.enable = false; - - # Copy the NixOS configuration file and link it from the resulting system - # (/run/current-system/configuration.nix). This is useful in case you - # accidentally delete configuration.nix. - # system.copySystemConfiguration = true; - - console.font = "${pkgs.tamzen}/share/consolefonts/TamzenForPowerline7x14.psf"; - console.useXkbConfig = true; - console.earlySetup = true; - - # services.kmscon = { - # enable = true; - # useXkbConfig = true; - # # hwRender = true; # broken - # fonts = [ - # { name = "Hack Nerd Font Mono"; package = pkgs.nerd-fonts.hack; } - # ]; - # extraConfig = '' - # font-size=11 - # palette-background=15, 15, 15 - # palette-foreground=202, 202, 202 - # palette-red=172, 138, 140 - # palette-green=138, 172, 139 - # palette-yellow=172, 169, 138 - # palette-blue=143, 138, 172 - # palette-magenta=172, 138, 172 - # palette-cyan=138, 171, 172 - # palette-white=240, 240, 240 - # palette-light-grey=202, 202, 202 - # palette-dark-grey=76, 76, 76 - # palette-black=15, 15, 15 - # ''; - # }; - - # TODO - # console.colors = [ - # "${ttyColor scheme.base08}" - # "${ttyColor scheme.base0B}" - # "${ttyColor scheme.base0A}" - # "${ttyColor scheme.base0D}" - # "${ttyColor scheme.base0E}" - # "${ttyColor scheme.base0C}" - # "${ttyColor scheme.base05}" - # "${ttyColor scheme.base03}" - # "${ttyColor scheme.base08}" - # "${ttyColor scheme.base0B}" - # "${ttyColor scheme.base0A}" - # "${ttyColor scheme.base0D}" - # "${ttyColor scheme.base0E}" - # "${ttyColor scheme.base0C}" - # "${ttyColor scheme.base07}" - # ]; - console.colors = [ - "0f0f0f" - "ac8a8c" - "8aac8b" - "aca98a" - "8f8aac" - "ac8aac" - "8aabac" - "cacaca" - "4c4c4c" - "ac8a8c" - "8aac8b" - "aca98a" - "8f8aac" - "ac8aac" - "8aabac" - "f0f0f0" - ]; - - - hardware.graphics.enable = true; - boot.initrd.kernelModules = [ "nvidia" "nvidia_uvm" "nvidia_drm" ]; # otherwise it is loaded late and clears vram, - # which resets console font - # boot.initrd.kernelModules = [ "nvidia" ]; - boot.extraModulePackages = [ config.boot.kernelPackages.nvidia_x11 ]; - boot.kernelParams = [ - "quiet" - "splash" - ]; - services.xserver.videoDrivers = ["nvidia"]; - hardware.nvidia = { - modesetting.enable = true; - open = true; - nvidiaSettings = true; - package = config.boot.kernelPackages.nvidiaPackages.beta; - }; - hardware.opengl.extraPackages = with pkgs; [ - vaapiVdpau - ]; - - nix = { - settings.experimental-features = [ "nix-command" "flakes" ]; - }; - - system.stateVersion = "24.11"; -} - 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"; + }; + + +} |