diff --git a/nalai/etc/nixos/configuration.nix b/nalai/etc/nixos/configuration.nix index 7f70747..1a89c8a 100644 --- a/nalai/etc/nixos/configuration.nix +++ b/nalai/etc/nixos/configuration.nix @@ -32,169 +32,6 @@ environment.etc."nginx/certs/sovr.key" = { source = ./certs/sovr.key; }; - # Bluetooth - hardware.bluetooth.enable = true; # enables support for Bluetooth - hardware.bluetooth.powerOnBoot = true; # powers up the default Bluetooth controller on boot - hardware.printers = { - ensureDefaultPrinter = "HL-L8250CDW"; - ensurePrinters = [{ - name = "HL-L8250CDW"; - deviceUri = "ipps://192.168.88.10/ipp/print"; - model = "Brother_HL-L8250CDN.ppd"; - description = "Brother HL-L8250CDW"; - location = "kids desks"; - ppdOptions = { - PageSize = "Letter"; - Duplex = "DuplexNoTumble"; # Double-sided along the long edge - Resolution = "600dpi"; - PrintQuality = "4"; - PwgRasterDocumentType = "Rgb_8"; - }; - }]; - }; - - home-manager.useGlobalPkgs = true; - home-manager.users.eliribble = { - home.homeDirectory = "/home/eliribble"; - # The home.stateVersion option does not have a default and must be set - home.stateVersion = "24.05"; - home.username = "eliribble"; - home.file.".config/nvim/after/ftplugin/html.vim".source = ./home/eliribble/config/nvim/after/ftplugin/html.vim; - home.file.".config/nvim/after/ftplugin/go.vim".source = ./home/eliribble/config/nvim/after/ftplugin/go.vim; - home.file.".config/tmux/tmux.conf".source = ./home/eliribble/config/tmux/tmux.conf; - programs.fish = { - enable = true; - interactiveShellInit = '' - set fish_greeting # Disable greeting - ''; - #plugins = [ - #{ name = "grc"; src = pkgs.fishPlugins.grc.src; } - #]; - }; - programs.git = { - enable = true; - userName = "Eli Ribble"; - userEmail = "eli@theribbles.org"; - }; - }; - networking.extraHosts = '' - 192.168.1.5 pihole.home.arpa - 127.0.0.1 sovr.home.arpa - ''; - networking.hostName = "nalai"; # Define your hostname. - # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. - - # Configure network proxy if necessary - # networking.proxy.default = "http://user:password@proxy:port/"; - # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; - - # Enable networking - networking.networkmanager.enable = true; - - # Set your time zone. - time.timeZone = "America/Phoenix"; - - # Select internationalisation properties. - 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"; - }; - - # Enable the KDE Plasma Desktop Environment. - services.displayManager.sddm.enable = true; - services.desktopManager.plasma6.enable = true; - - services.nginx.enable = true; - services.nginx.virtualHosts."sovr.home.arpa" = { - addSSL = true; - enableACME = false; - sslCertificate = "/etc/nginx/certs/sovr.crt"; - sslCertificateKey = "/etc/nginx/certs/sovr.key"; - locations."/" = { - proxyPass = "http://127.0.0.1:8080"; - }; - }; - - # Enable CUPS to print documents. - services.printing.enable = true; - services.printing.drivers = [ - # This PPD file was extracted from a windows BR-Script driver from the Brother website - # named 'Y13D_C1-ps-64-120-enus.EXE' when downloaded. I then used '7zz x ' to extract it - # and 'msexpand USA/brphl8250cdn.pp_' to expand it. Those tools are available in the _7zz and mscompress - # modules, respectively: 'nix-shell -p _7zz mscompress'. - (pkgs.writeTextDir "share/cups/model/Brother_HL-L8250CDN.ppd" (builtins.readFile ./Brother_HL-L8250CDN.ppd)) - # See https://github.com/NixOS/nixpkgs/issues/78535#issuecomment-2200268221 - # for an attempt at making this work when away from the printer - ]; - - # Enable rpcbind for nfs mounting - services.rpcbind.enable = true; - - # Enable the X11 windowing system. - # You can disable this if you're only using the Wayland session. - services.xserver.enable = true; - - # Configure keymap in X11 - services.xserver.xkb = { - layout = "us"; - }; - - # Enable sound with pipewire. - hardware.pulseaudio.enable = false; - security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - # If you want to use JACK applications, uncomment this - #jack.enable = true; - - # use the example session manager (no others are packaged yet so this is enabled by default, - # no need to redefine it in your config for now) - #media-session.enable = true; - }; - services.resolved.enable = true; - services.tailscale.enable = true; - - # Enable touchpad support (enabled default in most desktopManager). - # services.xserver.libinput.enable = true; - - # Define a user account. Don't forget to set a password with ‘passwd’. - users.users.eliribble = { - isNormalUser = true; - description = "Eli Ribble"; - extraGroups = [ "adbusers" "libvirtd" "networkmanager" "wheel" ]; - packages = with pkgs; [ - kdePackages.kate - # thunderbird - ]; - }; - - # Set up Android dev tools - programs.adb.enable = true; - - # Install firefox. - programs.firefox.enable = true; - - # Set neovim as the default editor - programs.neovim.enable = true; - programs.neovim.defaultEditor = true; - programs.virt-manager.enable = true; - - nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ - "brgenml1lpr" "lunar-client" "spotify" - ]; - # List packages installed in system profile. To search, run: # $ nix search wget environment.systemPackages = with pkgs; [ @@ -245,24 +82,182 @@ websocat ]; - # 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; - # }; + # Bluetooth + hardware.bluetooth.enable = true; # enables support for Bluetooth + hardware.bluetooth.powerOnBoot = true; # powers up the default Bluetooth controller on boot + hardware.printers = { + ensureDefaultPrinter = "HL-L8250CDW"; + ensurePrinters = [{ + name = "HL-L8250CDW"; + deviceUri = "ipps://192.168.88.10/ipp/print"; + model = "Brother_HL-L8250CDN.ppd"; + description = "Brother HL-L8250CDW"; + location = "kids desks"; + ppdOptions = { + PageSize = "Letter"; + Duplex = "DuplexNoTumble"; # Double-sided along the long edge + Resolution = "600dpi"; + PrintQuality = "4"; + PwgRasterDocumentType = "Rgb_8"; + }; + }]; + }; + hardware.pulseaudio.enable = false; - # List services that you want to enable: + home-manager.useGlobalPkgs = true; + home-manager.users.eliribble = { + home.homeDirectory = "/home/eliribble"; + # The home.stateVersion option does not have a default and must be set + home.stateVersion = "24.05"; + home.username = "eliribble"; + home.file.".config/nvim/after/ftplugin/html.vim".source = ./home/eliribble/config/nvim/after/ftplugin/html.vim; + home.file.".config/nvim/after/ftplugin/go.vim".source = ./home/eliribble/config/nvim/after/ftplugin/go.vim; + home.file.".config/tmux/tmux.conf".source = ./home/eliribble/config/tmux/tmux.conf; + programs.fish = { + enable = true; + interactiveShellInit = '' + set fish_greeting # Disable greeting + ''; + #plugins = [ + #{ name = "grc"; src = pkgs.fishPlugins.grc.src; } + #]; + }; + programs.git = { + enable = true; + userName = "Eli Ribble"; + userEmail = "eli@theribbles.org"; + }; + }; + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; - # Enable the OpenSSH daemon. - # services.openssh.enable = true; + 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"; + }; + + networking.extraHosts = '' + 192.168.1.5 pihole.home.arpa + 127.0.0.1 sovr.home.arpa + ''; # Open ports in the firewall. networking.firewall.allowedTCPPorts = [ 5353 50007 ]; networking.firewall.allowedUDPPorts = [ 5353 50007 ]; # Or disable the firewall altogether. # networking.firewall.enable = false; + networking.hostName = "nalai"; # Define your hostname. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Enable networking + networking.networkmanager.enable = true; + + nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ + "brgenml1lpr" "lunar-client" "spotify" + ]; + + # Set up Android dev tools + programs.adb.enable = true; + + # Install firefox. + programs.firefox.enable = true; + + # Set neovim as the default editor + programs.neovim.enable = true; + programs.neovim.defaultEditor = true; + programs.virt-manager.enable = true; + + # Enable the KDE Plasma Desktop Environment. + services.displayManager.sddm.enable = true; + services.desktopManager.plasma6.enable = true; + + services.nginx.enable = true; + services.nginx.virtualHosts."sovr.home.arpa" = { + addSSL = true; + enableACME = false; + sslCertificate = "/etc/nginx/certs/sovr.crt"; + sslCertificateKey = "/etc/nginx/certs/sovr.key"; + locations."/" = { + proxyPass = "http://127.0.0.1:8080"; + }; + }; + + # Enable CUPS to print documents. + services.printing.enable = true; + services.printing.drivers = [ + # This PPD file was extracted from a windows BR-Script driver from the Brother website + # named 'Y13D_C1-ps-64-120-enus.EXE' when downloaded. I then used '7zz x ' to extract it + # and 'msexpand USA/brphl8250cdn.pp_' to expand it. Those tools are available in the _7zz and mscompress + # modules, respectively: 'nix-shell -p _7zz mscompress'. + (pkgs.writeTextDir "share/cups/model/Brother_HL-L8250CDN.ppd" (builtins.readFile ./Brother_HL-L8250CDN.ppd)) + # See https://github.com/NixOS/nixpkgs/issues/78535#issuecomment-2200268221 + # for an attempt at making this work when away from the printer + ]; + + # Enable rpcbind for nfs mounting + services.rpcbind.enable = true; + + # Enable the X11 windowing system. + # You can disable this if you're only using the Wayland session. + services.xserver.enable = true; + + # Configure keymap in X11 + services.xserver.xkb = { + layout = "us"; + }; + + # Enable sound with pipewire. + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + # If you want to use JACK applications, uncomment this + #jack.enable = true; + + # use the example session manager (no others are packaged yet so this is enabled by default, + # no need to redefine it in your config for now) + #media-session.enable = true; + }; + services.resolved.enable = true; + services.tailscale.enable = true; + + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + + systemd.network.enable = true; + systemd.network.wait-online.enable = false; + + # Set your time zone. + time.timeZone = "America/Phoenix"; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.eliribble = { + isNormalUser = true; + description = "Eli Ribble"; + extraGroups = [ "adbusers" "libvirtd" "networkmanager" "wheel" ]; + packages = with pkgs; [ + kdePackages.kate + # thunderbird + ]; + }; + + virtualisation.docker.enable = false; + virtualisation.libvirtd.enable = true; + virtualisation.podman.enable = true; + # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions # on your system were taken. It‘s perfectly fine and recommended to leave @@ -270,11 +265,4 @@ # Before changing this value read the documentation for this option # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). system.stateVersion = "24.05"; # Did you read the comment? - - systemd.network.enable = true; - systemd.network.wait-online.enable = false; - - virtualisation.docker.enable = false; - virtualisation.libvirtd.enable = true; - virtualisation.podman.enable = true; }