From eb1666f310fd3ff225f474aed5be2b295f97f84c Mon Sep 17 00:00:00 2001 From: Corwin Perren Date: Wed, 25 Jun 2025 21:59:36 -0700 Subject: [PATCH] Deduplicate all applications and system settings --- flake.nix | 2 - hosts/cap-nr200p/configuration.nix | 333 ++---------------- hosts/cap-slim7/configuration.nix | 333 ++---------------- modules/application-groups/3d-design.nix | 8 + modules/application-groups/android.nix | 5 + modules/application-groups/downloads.nix | 7 + modules/application-groups/gaming.nix | 35 +- modules/application-groups/homelab.nix | 4 + modules/application-groups/media.nix | 39 ++ modules/application-groups/pcb-design.nix | 8 + modules/application-groups/productivity.nix | 6 + modules/application-groups/programming.nix | 41 +++ modules/application-groups/sdr.nix | 10 + modules/application-groups/social.nix | 9 + .../application-groups/system-utilities.nix | 57 +++ modules/application-groups/virtualization.nix | 12 + modules/application-groups/web.nix | 8 + modules/applications/firefox.nix | 4 - modules/applications/steam.nix | 27 -- modules/applications/thunar.nix | 10 - modules/nixos/hyprland-amd.nix | 82 ----- modules/nixos/hyprland.nix | 77 ---- modules/system/cpu-amd.nix | 4 + modules/system/desktop.nix | 10 + modules/system/displaylink.nix | 8 + modules/system/fonts.nix | 20 ++ modules/system/gpu-amd.nix | 5 + modules/system/gpu-nvidia.nix | 26 ++ modules/system/hyprland.nix | 51 +++ modules/system/laptop.nix | 56 +++ modules/system/networking.nix | 13 + modules/system/nix-settings.nix | 6 + modules/system/pipewire.nix | 8 + modules/system/security.nix | 21 ++ modules/system/systemd-boot.nix | 7 + modules/{applications => system}/xfce.nix | 0 users/caperren/caperren.nix | 18 + users/crestline/crestline.nix | 22 ++ 38 files changed, 571 insertions(+), 821 deletions(-) create mode 100644 modules/application-groups/3d-design.nix create mode 100644 modules/application-groups/android.nix create mode 100644 modules/application-groups/downloads.nix create mode 100644 modules/application-groups/homelab.nix create mode 100644 modules/application-groups/media.nix create mode 100644 modules/application-groups/pcb-design.nix create mode 100644 modules/application-groups/productivity.nix create mode 100644 modules/application-groups/programming.nix create mode 100644 modules/application-groups/sdr.nix create mode 100644 modules/application-groups/social.nix create mode 100644 modules/application-groups/system-utilities.nix create mode 100644 modules/application-groups/virtualization.nix create mode 100644 modules/application-groups/web.nix delete mode 100644 modules/applications/firefox.nix delete mode 100644 modules/applications/steam.nix delete mode 100644 modules/applications/thunar.nix delete mode 100644 modules/nixos/hyprland-amd.nix delete mode 100644 modules/nixos/hyprland.nix create mode 100644 modules/system/cpu-amd.nix create mode 100644 modules/system/desktop.nix create mode 100644 modules/system/displaylink.nix create mode 100644 modules/system/fonts.nix create mode 100644 modules/system/gpu-amd.nix create mode 100644 modules/system/gpu-nvidia.nix create mode 100644 modules/system/hyprland.nix create mode 100644 modules/system/laptop.nix create mode 100644 modules/system/networking.nix create mode 100644 modules/system/security.nix create mode 100644 modules/system/systemd-boot.nix rename modules/{applications => system}/xfce.nix (100%) create mode 100644 users/caperren/caperren.nix create mode 100644 users/crestline/crestline.nix diff --git a/flake.nix b/flake.nix index 33be7a1..481e20b 100644 --- a/flake.nix +++ b/flake.nix @@ -28,7 +28,6 @@ }; modules = [ ./hosts/cap-slim7/configuration.nix - ./modules/nixos/hyprland-amd.nix inputs.home-manager.nixosModules.default nixos-hardware.nixosModules.lenovo-legion-16arha7 ]; @@ -38,7 +37,6 @@ system = "x86_64-linux"; modules = [ ./hosts/cap-nr200p/configuration.nix - ./modules/nixos/hyprland.nix inputs.home-manager.nixosModules.default ]; }; diff --git a/hosts/cap-nr200p/configuration.nix b/hosts/cap-nr200p/configuration.nix index 162e6c6..45d2ce9 100644 --- a/hosts/cap-nr200p/configuration.nix +++ b/hosts/cap-nr200p/configuration.nix @@ -14,235 +14,43 @@ # Include the results of the hardware scan. ./hardware-configuration.nix - # System Configuration - ../../modules/system/internationalization.nix - ../../modules/system/nix-settings.nix + # Users + ../../users/caperren/caperren.nix + # System Configuration + ../../modules/system/cpu-amd.nix + ../../modules/system/desktop.nix + ../../modules/system/fonts.nix + ../../modules/system/gpu-nvidia.nix + ../../modules/system/hyprland.nix + ../../modules/system/internationalization.nix + ../../modules/system/networking.nix + ../../modules/system/nix-settings.nix ../../modules/system/pipewire.nix + ../../modules/system/security.nix + ../../modules/system/systemd-boot.nix # Application Groups + ../../modules/application-groups/3d-design.nix + ../../modules/application-groups/android.nix + ../../modules/application-groups/downloads.nix ../../modules/application-groups/gaming.nix - - # Individual Applications - ../../modules/applications/firefox.nix - ../../modules/applications/thunar.nix + ../../modules/application-groups/homelab.nix + ../../modules/application-groups/media.nix + ../../modules/application-groups/pcb-design.nix + ../../modules/application-groups/productivity.nix + ../../modules/application-groups/programming.nix + ../../modules/application-groups/social.nix + ../../modules/application-groups/system-utilities.nix + ../../modules/application-groups/virtualization.nix + ../../modules/application-groups/web.nix ]; - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; - - boot = { - # Make v4l2loopback kernel module available to NixOS. - extraModulePackages = with config.boot.kernelPackages; [ - v4l2loopback - ]; - # Activate kernel module(s). - kernelModules = [ - # Virtual camera. - "v4l2loopback" - # Virtual Microphone. Custom DroidCam v4l2loopback driver needed for audio. - # "snd-aloop" - ]; - }; - - boot.extraModprobeConfig = '' - # exclusive_caps: Skype, Zoom, Teams etc. will only show device when actually streaming - # card_label: Name of virtual camera, how it'll show up in Skype, Zoom, Teams - # https://github.com/umlaeute/v4l2loopback - options v4l2loopback exclusive_caps=1 card_label="Virtual Camera" - ''; - - # - - - # Bootloader. - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - networking.hostName = "cap-nr200p"; # Define your hostname. #-# - # Enable networking - networking.networkmanager.enable = true; - - # hardware.u2f.enable = true; - - services.flatpak.enable = true; - - # Enable flakes - nix.settings.experimental-features = [ - "nix-command" - "flakes" - ]; # -# - # Set your time zone. time.timeZone = "America/Los_Angeles"; - - - # Enable CUPS to print documents. - services.printing.enable = true; - - services.avahi = { - enable = true; - nssmdns4 = true; - openFirewall = 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.caperren = { - isNormalUser = true; - description = "Corwin Perren"; - extraGroups = [ - "networkmanager" - "wheel" - "input" - "dialout" - "plugdev" - "adbusers" - ]; - packages = with pkgs; [ - # thunderbird - ]; - }; - # users.users.crestline = { - # isNormalUser = true; - # description = "Crestline"; - # extraGroups = [ - # "networkmanager" - # "wheel" - # "input" - # "dialout" - # ]; - # packages = with pkgs; [ - # # thunderbird - # ]; - - # }; - - #services.displayManager.autoLogin = { - # enable = true; - # user = "crestline"; - #}; - - #services.xserver.displayManager.gdm.autoLogin.delay = 60; - - # List packages installed in system profile. To search, run: - # $ nix search wget - environment.systemPackages = with pkgs; [ - # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. - # wget - lf - git - wofi - nvtopPackages.full - htop - iftop - iotop - pulsemixer - arandr - util-linux - usbutils - telegram-desktop - discord - # spotify - vscode-with-extensions - swayimg - pavucontrol - networkmanagerapplet - pasystray - glava - spotify-player - hyprpicker - unetbootin - lf - dnsutils - unzip - playerctl - google-chrome - killall - #jetbrains.pycharm-professional - wget - jq - rofi-bluetooth - wl-clipboard - networkmanager - alsa-utils - nixfmt-rfc-style - mako - podman - kicad - obsidian - speedcrunch - deadbeef - vlc - sox - audacity - platformio - - # flatcam - pcb2gcode - jetbrains-toolbox - arduino-ide - # python311Full - gcc - stm32cubemx - stm32flash - easyeffects - ncspot - #yubikey-personalization-gui - #yubikey-manager-qt - #zoom-us - mangohud - distrobox - # plex-desktop - rpi-imager - rpiboot - imagemagick - prusa-slicer - freecad - wlogout - gparted - nix-update - ffmpeg-full - projectm_3 - heroic - flameshot - krename - xfce.mousepad - yt-dlp - soapysdr - soapyrtlsdr - # sdrpp - # brave - python3 - #nodejs_23 - streamdeck-ui - scrcpy - kanshi - #wsmancli - #realvnc-vnc-viewer - ncdu - hyprlock - openrgb-with-all-plugins - swayidle - transmission_4-qt - nixos-generators - openwsman - wsmancli - bs-manager - ]; - - services.hardware.openrgb.enable = true; - - services.meshcentral.enable = true; - programs.ydotool.enable = true; - programs.adb.enable = true; - - hardware.logitech.wireless.enable = true; - hardware.logitech.wireless.enableGraphical = true; - programs.bash.shellAliases = { nixrebuild = "pushd /etc/nixos && { trap 'popd' EXIT; sudo nixos-rebuild switch --flake .#$(hostname); }"; nixupdate = "cd /etc/nixos && sudo nix flake update && sudo nixos-rebuild switch --flake .#$(hostname)"; @@ -253,96 +61,6 @@ scrwebcam = "sudo pkill scrcpy ; sudo modprobe -r v4l2loopback ; sudo modprobe v4l2loopback && nohup scrcpy --camera-facing=back --video-source=camera --v4l2-sink=/dev/video0 --no-window --no-audio-playback 2>&1 1>/dev/null"; }; - virtualisation.waydroid.enable = true; - - virtualisation.podman = { - enable = true; - dockerCompat = true; - }; - - services.udev.extraRules = '' - # ST-LINK V2 - SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv2_%n" - - # ST-LINK V2.1 - SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374b", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv2-1_%n" - SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3752", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv2-1_%n" - - # ST-LINK V3 - SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374d", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv3loader_%n" - SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374e", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv3_%n" - SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374f", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv3_%n" - SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3753", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv3_%n" - - # CP2101 - CP 2104 - SUBSYSTEMS=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE="600", TAG+="uaccess", SYMLINK+="usb2ser_%n" - - # ATEN UC-232A - SUBSYSTEMS=="usb", ATTRS{idVendor}=="0557", ATTRS{idProduct}=="2008", MODE="600", TAG+="uaccess", SYMLINK+="usb2ser_aten_%n" - ''; - - fonts.fontDir.enable = true; - fonts.fontconfig.enable = true; - fonts.fontconfig.antialias = true; - fonts.packages = with pkgs; [ - noto-fonts - noto-fonts-emoji - liberation_ttf - fira-code - fira-code-symbols - jetbrains-mono - mplus-outline-fonts.githubRelease - dina-font - proggyfonts - font-awesome - nerd-fonts.symbols-only - nerd-fonts.jetbrains-mono - ]; - - hardware.bluetooth.enable = true; # enables support for Bluetooth - hardware.bluetooth.powerOnBoot = true; # powers up the default Bluetooth controller on boot - services.blueman.enable = true; - - hardware.rtl-sdr.enable = true; - - security.sudo = { - enable = true; - extraRules = [ - { - commands = [ - { - command = "${pkgs.systemd}/bin/reboot"; - options = [ "NOPASSWD" ]; - } - { - command = "${pkgs.systemd}/bin/poweroff"; - options = [ "NOPASSWD" ]; - } - ]; - groups = [ "wheel" ]; - } - ]; - }; - - # 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; - # }; - - # 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; - # 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 @@ -350,5 +68,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 = "23.11"; # Did you read the comment? - } diff --git a/hosts/cap-slim7/configuration.nix b/hosts/cap-slim7/configuration.nix index 20458f3..99d6a26 100644 --- a/hosts/cap-slim7/configuration.nix +++ b/hosts/cap-slim7/configuration.nix @@ -9,198 +9,44 @@ # Include the results of the hardware scan. ./hardware-configuration.nix - # System Configuration - ../../modules/system/internationalization.nix - ../../modules/system/nix-settings.nix + # Users + ../../users/caperren/caperren.nix + # System Configuration + ../../modules/system/cpu-amd.nix + ../../modules/system/displaylink.nix + ../../modules/system/fonts.nix + ../../modules/system/gpu-amd.nix + ../../modules/system/hyprland.nix + ../../modules/system/internationalization.nix + ../../modules/system/laptop.nix + ../../modules/system/networking.nix + ../../modules/system/nix-settings.nix ../../modules/system/pipewire.nix + ../../modules/system/security.nix + ../../modules/system/systemd-boot.nix # Application Groups + ../../modules/application-groups/3d-design.nix + ../../modules/application-groups/android.nix + ../../modules/application-groups/downloads.nix ../../modules/application-groups/gaming.nix - - # Individual Applications - ../../modules/applications/firefox.nix - ../../modules/applications/thunar.nix + ../../modules/application-groups/homelab.nix + ../../modules/application-groups/media.nix + ../../modules/application-groups/pcb-design.nix + ../../modules/application-groups/productivity.nix + ../../modules/application-groups/programming.nix + ../../modules/application-groups/social.nix + ../../modules/application-groups/system-utilities.nix + ../../modules/application-groups/virtualization.nix + ../../modules/application-groups/web.nix ]; - #boot.kernelPackages = pkgs.linuxPackages_latest; - - # Bootloader. - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - boot.loader.grub.configurationLimit = 8; - networking.hostName = "cap-slim7"; # Define your hostname. #-# - #security.sudo.extraConfig = '' - # Defaults timestamp_timeout=15 - #''; - - # security.polkit.extraConfig = '' - # polkit.addRule(function(action, subject) { - # if ((action.id == "org.freedesktop.login1.reboot" || - # action.id == "org.freedesktop.login1.poweroff") && - # subject.isInGroup("powerusers")) { - # return polkit.Result.YES; - # } - # }); - # ''; - - # Enable networking - networking.networkmanager.enable = true; - - # Enable flakes - nix.settings.experimental-features = [ - "nix-command" - "flakes" - ]; # -# - # Set your time zone. time.timeZone = "America/Los_Angeles"; # time.timeZone = "Pacific/Honolulu"; - #time.timeZone = "Europe/Oslo"; - # services.tzupdate.enable = true; - - # Enable CUPS to print documents. - services.printing.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.caperren = { - isNormalUser = true; - description = "Corwin Perren"; - extraGroups = [ - "networkmanager" - "wheel" - "input" - "dialout" - "plugdev" - "adbusers" - ]; - packages = with pkgs; [ - # thunderbird - ]; - }; - - # List packages installed in system profile. To search, run: - # $ nix search wget - environment.systemPackages = with pkgs; [ - # droidcam-obs - # teensyduino - # ]; - # plugins = with obs-studio-plugins; [ - # PKGS END - # bottles - # lenovo-legion - obs-studio - #(wrapOBS { - #arduino-ide - #audacity - #deadbeef - #dolphin-emu - #dualsensectl - #easyeffects - #flameshot - #gcc - #glmark2 - #heroic - #jetbrains.pycharm-professional - #lf - #lf - #librewolf - #lutris - #meshcentral - #pcb2gcode - #projectm_3 - #python311Full - #qemu - #quickemu - #rofi-bluetooth - #s-tui - #scrcpy - #sox - #stm32cubemx - #stm32flash - #teensy-udev-rules - #transmission_4-qt - #via - #vlc - #vscode - #winetricks - #}) - vlc - alsa-utils - arandr - brightnessctl - discord - dnsutils - git - glava - google-chrome - htop - hyprpicker - iftop - iotop - jetbrains-toolbox - flameshot - jq - kanshi - killall - mako - ncdu - networkmanager - networkmanagerapplet - nixfmt-rfc-style - nodejs - nvtopPackages.full - obsidian - pasystray - pavucontrol - playerctl - podman - powertop - pulsemixer - speedcrunch - spotify-player - streamdeck-ui - telegram-desktop - unetbootin - unzip - usbutils - util-linux - wget - wl-clipboard - wlogout - wofi - xfce.mousepad - imagemagick - hyprlock - # plex-desktop - darktable - arduino - yt-dlp - nmap - signal-desktop - swayidle - hyprlock - pciutils - s-tui - woeusb - gparted - ]; - - hardware.logitech.wireless.enable = true; - hardware.logitech.wireless.enableGraphical = true; - - #programs.adb.enable = true; - services.meshcentral.enable = true; - services.xserver.videoDrivers = [ - "displaylink" - "modesetting" - ]; - programs.ydotool.enable = true; programs.bash.shellAliases = { nixrebuild = "pushd /etc/nixos && { trap 'popd' EXIT; sudo nixos-rebuild switch --flake .#$(hostname); }"; @@ -210,133 +56,6 @@ nixlimitfive = "sudo nix-env --list-generations --profile /nix/var/nix/profiles/system | head -n -5 | cut -d ' ' -f2 | xargs -I {} sudo nix-env --delete-generations --profile /nix/var/nix/profiles/system {}"; }; - services.tlp = { - enable = true; - settings = { - ##### Defaults ###### - # WIFI - WIFI_PWR_ON_AC = "off"; - WIFI_PWR_ON_BAT = "off"; - - # AC - CPU_MIN_PERF_ON_AC = 0; - - # BATT - CPU_MIN_PERF_ON_BAT = 0; - CPU_MAX_PERF_ON_BAT = 35; - - CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; - CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; - - START_CHARGE_THRESH_BAT0 = 1; # On non-thinkpad lenovo, this sets conservation mode to 0 - STOP_CHARGE_THRESH_BAT0 = 1; # ..., but to 1 - - ###### Airplane Settings ##### - # AC - # CPU_MAX_PERF_ON_AC = 35; - - # CPU_SCALING_GOVERNOR_ON_AC = "powersave"; - # CPU_ENERGY_PERF_POLICY_ON_AC = "power"; - - ###### Normal Settings ###### - # AC - CPU_MAX_PERF_ON_AC = 100; - - CPU_SCALING_GOVERNOR_ON_AC = "performanc"; - CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; - - # BATT - - ##### Special Overrides ##### - #Optional helps save long term battery health - # START_CHARGE_THRESH_BAT0 = 0; # On non-thinkpad lenovo, this sets conservation mode to 0 - # STOP_CHARGE_THRESH_BAT0 = 0; # ..., but to 1 - }; - }; - - #hardware.keyboard.qmk.enable = true; - #services.udev.packages = [ pkgs.via ]; - services.udev.extraRules = '' - # ST-LINK V2 - SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv2_%n" - - # ST-LINK V2.1 - SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374b", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv2-1_%n" - SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3752", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv2-1_%n" - - # ST-LINK V3 - SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374d", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv3loader_%n" - SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374e", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv3_%n" - SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374f", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv3_%n" - SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3753", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv3_%n" - - # CP2101 - CP 2104 - SUBSYSTEMS=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE="600", TAG+="uaccess", SYMLINK+="usb2ser_%n" - - # ATEN UC-232A - SUBSYSTEMS=="usb", ATTRS{idVendor}=="0557", ATTRS{idProduct}=="2008", MODE="600", TAG+="uaccess", SYMLINK+="usb2ser_aten_%n" - ''; - - fonts.fontDir.enable = true; - fonts.fontconfig.enable = true; - fonts.fontconfig.antialias = true; - fonts.packages = with pkgs; [ - noto-fonts - noto-fonts-emoji - liberation_ttf - fira-code - fira-code-symbols - jetbrains-mono - mplus-outline-fonts.githubRelease - dina-font - proggyfonts - font-awesome - nerd-fonts.symbols-only - nerd-fonts.jetbrains-mono - ]; - - hardware.bluetooth.enable = true; # enables support for Bluetooth - hardware.bluetooth.powerOnBoot = true; # powers up the default Bluetooth controller on boot - services.blueman.enable = true; - - security.sudo = { - enable = true; - extraRules = [ - { - commands = [ - { - command = "${pkgs.systemd}/bin/reboot"; - options = [ "NOPASSWD" ]; - } - { - command = "${pkgs.systemd}/bin/poweroff"; - options = [ "NOPASSWD" ]; - } - ]; - groups = [ "wheel" ]; - } - ]; - }; - - # 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; - # }; - - # 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; - # 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 diff --git a/modules/application-groups/3d-design.nix b/modules/application-groups/3d-design.nix new file mode 100644 index 0000000..4048143 --- /dev/null +++ b/modules/application-groups/3d-design.nix @@ -0,0 +1,8 @@ +{ config, pkgs, ... }: +{ + environment.systemPackages = with pkgs; [ + prusa-slicer + freecad + ]; + +} diff --git a/modules/application-groups/android.nix b/modules/application-groups/android.nix new file mode 100644 index 0000000..df68489 --- /dev/null +++ b/modules/application-groups/android.nix @@ -0,0 +1,5 @@ +{ config, pkgs, ... }: +{ + programs.adb.enable = true; + virtualisation.waydroid.enable = true; +} diff --git a/modules/application-groups/downloads.nix b/modules/application-groups/downloads.nix new file mode 100644 index 0000000..222e4c0 --- /dev/null +++ b/modules/application-groups/downloads.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: +{ + environment.systemPackages = with pkgs; [ + transmission_4-qt + yt-dlp + ]; +} diff --git a/modules/application-groups/gaming.nix b/modules/application-groups/gaming.nix index d87e3f8..33ff874 100644 --- a/modules/application-groups/gaming.nix +++ b/modules/application-groups/gaming.nix @@ -1,5 +1,32 @@ -{ ... }: { - imports = [ - ../applications/steam.nix +{ pkgs, ... }: +{ + # Support steam hardware like the index and steam controller + hardware.steam-hardware.enable = true; + + # Steam + programs.steam = { + enable = true; + remotePlay.openFirewall = true; + dedicatedServer.openFirewall = true; + gamescopeSession.enable = true; + }; + + # Valve's micro-compositor + programs.gamescope = { + enable = true; + capSysNice = true; + }; + + # Open source OpenXR runtime for VR + services.monado = { + enable = true; + defaultRuntime = true; + highPriority = true; + }; + + environment.systemPackages = with pkgs; [ + bs-manager + heroic + monado ]; -} \ No newline at end of file +} diff --git a/modules/application-groups/homelab.nix b/modules/application-groups/homelab.nix new file mode 100644 index 0000000..0d10251 --- /dev/null +++ b/modules/application-groups/homelab.nix @@ -0,0 +1,4 @@ +{ pkgs, ... }: +{ + services.meshcentral.enable = true; +} diff --git a/modules/application-groups/media.nix b/modules/application-groups/media.nix new file mode 100644 index 0000000..437cbc2 --- /dev/null +++ b/modules/application-groups/media.nix @@ -0,0 +1,39 @@ +{ config, pkgs, ... }: +{ + boot = { + # Make v4l2loopback kernel module available to NixOS. + extraModulePackages = with config.boot.kernelPackages; [ + v4l2loopback + ]; + # Activate kernel module(s). + kernelModules = [ + # Virtual camera. + "v4l2loopback" + # Virtual Microphone. Custom DroidCam v4l2loopback driver needed for audio. + # "snd-aloop" + ]; + }; + + boot.extraModprobeConfig = '' + # exclusive_caps: Skype, Zoom, Teams etc. will only show device when actually streaming + # card_label: Name of virtual camera, how it'll show up in Skype, Zoom, Teams + # https://github.com/umlaeute/v4l2loopback + options v4l2loopback exclusive_caps=1 card_label="Virtual Camera" + ''; + + environment.systemPackages = with pkgs; [ + deadbeef + vlc + sox + audacity + glava + spotify-player + projectm_3 + obs-studio + darktable + + # Encountering build failures + # plex-desktop + ]; + +} diff --git a/modules/application-groups/pcb-design.nix b/modules/application-groups/pcb-design.nix new file mode 100644 index 0000000..1758f81 --- /dev/null +++ b/modules/application-groups/pcb-design.nix @@ -0,0 +1,8 @@ +{ config, pkgs, ... }: +{ + environment.systemPackages = with pkgs; [ + kicad + pcb2gcode + ]; + +} diff --git a/modules/application-groups/productivity.nix b/modules/application-groups/productivity.nix new file mode 100644 index 0000000..3eccb9f --- /dev/null +++ b/modules/application-groups/productivity.nix @@ -0,0 +1,6 @@ +{ pkgs, ... }: +{ + environment.systemPackages = with pkgs; [ + obsidian + ]; +} diff --git a/modules/application-groups/programming.nix b/modules/application-groups/programming.nix new file mode 100644 index 0000000..b194bf3 --- /dev/null +++ b/modules/application-groups/programming.nix @@ -0,0 +1,41 @@ +{ config, pkgs, ... }: +{ + environment.systemPackages = with pkgs; [ + vscode-with-extensions + nixfmt-rfc-style + platformio + jetbrains-toolbox + arduino-ide + python311Full + gcc + nodejs + stm32cubemx + stm32flash + python3Full + nix-update + nixos-generators + teensy-udev-rules + ]; + + services.udev.extraRules = '' + # ST-LINK V2 + SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv2_%n" + + # ST-LINK V2.1 + SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374b", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv2-1_%n" + SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3752", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv2-1_%n" + + # ST-LINK V3 + SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374d", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv3loader_%n" + SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374e", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv3_%n" + SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374f", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv3_%n" + SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3753", MODE="600", TAG+="uaccess", SYMLINK+="stlinkv3_%n" + + # CP2101 - CP 2104 + SUBSYSTEMS=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE="600", TAG+="uaccess", SYMLINK+="usb2ser_%n" + + # ATEN UC-232A + SUBSYSTEMS=="usb", ATTRS{idVendor}=="0557", ATTRS{idProduct}=="2008", MODE="600", TAG+="uaccess", SYMLINK+="usb2ser_aten_%n" + ''; + +} diff --git a/modules/application-groups/sdr.nix b/modules/application-groups/sdr.nix new file mode 100644 index 0000000..ae62c8c --- /dev/null +++ b/modules/application-groups/sdr.nix @@ -0,0 +1,10 @@ +{ config, pkgs, ... }: +{ + hardware.rtl-sdr.enable = true; + + environment.systemPackages = with pkgs; [ + soapysdr + soapyrtlsdr + ]; + +} diff --git a/modules/application-groups/social.nix b/modules/application-groups/social.nix new file mode 100644 index 0000000..7b55cb8 --- /dev/null +++ b/modules/application-groups/social.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: +{ + + environment.systemPackages = with pkgs; [ + telegram-desktop + discord + ]; + +} diff --git a/modules/application-groups/system-utilities.nix b/modules/application-groups/system-utilities.nix new file mode 100644 index 0000000..502241e --- /dev/null +++ b/modules/application-groups/system-utilities.nix @@ -0,0 +1,57 @@ +{ config, pkgs, ... }: +{ + programs.thunar.enable = true; + programs.thunar.plugins = with pkgs.xfce; [ + thunar-archive-plugin + thunar-volman + ]; + services.gvfs.enable = true; # Mount, trash, and other functionalities + services.tumbler.enable = true; # Thumbnail support for images + + programs.ydotool.enable = true; + + services.openssh.enable = true; + services.printing.enable = true; + + hardware.logitech.wireless.enable = true; + hardware.logitech.wireless.enableGraphical = true; + hardware.keyboard.qmk.enable = true; + + services.hardware.openrgb.enable = true; + + environment.systemPackages = with pkgs; [ + kitty + lf + git + htop + iftop + iotop + util-linux + usbutils + dnsutils + unzip + killall + wget + jq + speedcrunch + gparted + ffmpeg-full + xfce.mousepad + imagemagick + nvtopPackages.full + ncdu + s-tui + nmap + pciutils + desktop-file-utils + rpi-imager + rpiboot + streamdeck-ui + scrcpy + openrgb-with-all-plugins + networkmanagerapplet + rofi-bluetooth + networkmanager + ]; + +} diff --git a/modules/application-groups/virtualization.nix b/modules/application-groups/virtualization.nix new file mode 100644 index 0000000..385dace --- /dev/null +++ b/modules/application-groups/virtualization.nix @@ -0,0 +1,12 @@ +{ config, pkgs, ... }: +{ + virtualisation.podman = { + enable = true; + dockerCompat = true; + }; + + environment.systemPackages = with pkgs; [ + distrobox + ]; + +} diff --git a/modules/application-groups/web.nix b/modules/application-groups/web.nix new file mode 100644 index 0000000..36f7535 --- /dev/null +++ b/modules/application-groups/web.nix @@ -0,0 +1,8 @@ +{ config, pkgs, ... }: +{ + programs.firefox.enable = true; + + environment.systemPackages = with pkgs; [ + google-chrome + ]; +} diff --git a/modules/applications/firefox.nix b/modules/applications/firefox.nix deleted file mode 100644 index 345a7c8..0000000 --- a/modules/applications/firefox.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ config, pkgs, ... }: -{ - programs.firefox.enable = true; -} diff --git a/modules/applications/steam.nix b/modules/applications/steam.nix deleted file mode 100644 index 1af18e6..0000000 --- a/modules/applications/steam.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ config, pkgs, ... }: -{ - # Support steam hardware like the index and steam controller - hardware.steam-hardware.enable = true; - - # Steam program itself - programs.steam = { - enable = true; - remotePlay.openFirewall = true; - dedicatedServer.openFirewall = true; - gamescopeSession.enable = true; - }; - - # Valve's micro-compositor - programs.gamescope = { - enable = true; - capSysNice = true; - }; - - # Open source OpenXR runtime for VR - services.monado = { - enable = true; - defaultRuntime = true; - highPriority = true; - }; - -} diff --git a/modules/applications/thunar.nix b/modules/applications/thunar.nix deleted file mode 100644 index fecbfaf..0000000 --- a/modules/applications/thunar.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ config, pkgs, ... }: -{ - programs.thunar.enable = true; - programs.thunar.plugins = with pkgs.xfce; [ - thunar-archive-plugin - thunar-volman - ]; - services.gvfs.enable = true; # Mount, trash, and other functionalities - services.tumbler.enable = true; # Thumbnail support for images -} diff --git a/modules/nixos/hyprland-amd.nix b/modules/nixos/hyprland-amd.nix deleted file mode 100644 index 216c819..0000000 --- a/modules/nixos/hyprland-amd.nix +++ /dev/null @@ -1,82 +0,0 @@ -{ pkgs, config, ... }: -{ - programs.hyprland = { - enable = true; - xwayland.enable = true; - }; - -# programs.waybar = { -# enable = true; -## systemd.enable = true; -# }; - - 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; - }; - - # environment.sessionVariables = { - # If your cursor becomes invisible - # WLR_NO_HARDWARE_CURSORS = "1"; - # Hint electron apps to use wayland - # NIXOS_OZONE_WL = "1"; - # Fix waiting on vsync - # __GL_SYNC_TO_VBLANK = "0"; - # }; - - services.xserver = { - enable = true; - videoDrivers = [ "amdgpu" ]; - }; - services.displayManager.gdm = { - enable = true; - wayland = true; - }; - - # services.displayManager.autoLogin = { - # enable = true; - # user = "caperren"; - # }; - - hardware.graphics = { - enable = true; - enable32Bit = true; - }; - - # hardware.nvidia = { - # Enable modesetting for Wayland compositors (hyprland) - # modesetting.enable = true; - # Use the open source version of the kernel module (for driver 515.43.04+) - # Actually, just overridden to false for now - # open = false; - # Enable the Nvidia settings menu - # nvidiaSettings = true; - # Select the appropriate driver version for your specific GPU - # package = config.boot.kernelPackages.nvidiaPackages.stable; - # }; - environment.systemPackages = [ - pkgs.hyprland - pkgs.kitty - pkgs.waybar - pkgs.dunst - pkgs.libnotify - pkgs.rofi-wayland - pkgs.nwg-look - pkgs.desktop-file-utils - pkgs.grim - pkgs.slurp - pkgs.nwg-displays - - (pkgs.waybar.overrideAttrs (oldAttrs: { - mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ]; - })) - ]; - - xdg.portal.enable = true; - xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; -} diff --git a/modules/nixos/hyprland.nix b/modules/nixos/hyprland.nix deleted file mode 100644 index 8237e1f..0000000 --- a/modules/nixos/hyprland.nix +++ /dev/null @@ -1,77 +0,0 @@ -{ pkgs, config, ... }: -{ - programs.hyprland = { - enable = true; - xwayland.enable = true; - }; - - 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; - }; - - environment.sessionVariables = { - # If your cursor becomes invisible - WLR_NO_HARDWARE_CURSORS = "1"; - # Hint electron apps to use wayland - NIXOS_OZONE_WL = "1"; - # Fix waiting on vsync - __GL_SYNC_TO_VBLANK = "0"; - }; - - services.xserver = { - enable = true; - videoDrivers = [ "nvidia" ]; - }; - services.displayManager.gdm = { - enable = true; - wayland = true; - }; - -# services.displayManager.autoLogin = { -# enable = true; -# user = "caperren"; -# }; - - hardware.graphics = { - enable = true; - enable32Bit = true; - }; - - hardware.nvidia = { - # Enable modesetting for Wayland compositors (hyprland) - modesetting.enable = true; - # Use the open source version of the kernel module (for driver 515.43.04+) - # Actually, just overridden to false for now - open = false; - # Enable the Nvidia settings menu - nvidiaSettings = true; - # Select the appropriate driver version for your specific GPU - package = config.boot.kernelPackages.nvidiaPackages.stable; - }; - environment.systemPackages = [ - pkgs.hyprland - pkgs.kitty - pkgs.waybar - pkgs.dunst - pkgs.libnotify - pkgs.rofi-wayland - pkgs.nwg-look - pkgs.desktop-file-utils - pkgs.grim - pkgs.slurp - pkgs.nwg-displays - - (pkgs.waybar.overrideAttrs (oldAttrs: { - mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ]; - })) - ]; - - xdg.portal.enable = true; - xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; -} diff --git a/modules/system/cpu-amd.nix b/modules/system/cpu-amd.nix new file mode 100644 index 0000000..5b69c57 --- /dev/null +++ b/modules/system/cpu-amd.nix @@ -0,0 +1,4 @@ +{ config, lib, ... }: +{ + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/modules/system/desktop.nix b/modules/system/desktop.nix new file mode 100644 index 0000000..55a43dd --- /dev/null +++ b/modules/system/desktop.nix @@ -0,0 +1,10 @@ +{ config, pkgs, ... }: +{ + hardware.bluetooth.enable = true; # enables support for Bluetooth + hardware.bluetooth.powerOnBoot = true; # powers up the default Bluetooth controller on boot + services.blueman.enable = true; + + environment.systemPackages = with pkgs; [ + + ]; +} diff --git a/modules/system/displaylink.nix b/modules/system/displaylink.nix new file mode 100644 index 0000000..740c98c --- /dev/null +++ b/modules/system/displaylink.nix @@ -0,0 +1,8 @@ +{ config, pkgs, ... }: +{ + services.xserver.videoDrivers = [ + "displaylink" + "modesetting" + ]; + +} diff --git a/modules/system/fonts.nix b/modules/system/fonts.nix new file mode 100644 index 0000000..95fd68c --- /dev/null +++ b/modules/system/fonts.nix @@ -0,0 +1,20 @@ +{ config, pkgs, ... }: +{ + fonts.fontDir.enable = true; + fonts.fontconfig.enable = true; + fonts.fontconfig.antialias = true; + fonts.packages = with pkgs; [ + noto-fonts + noto-fonts-emoji + liberation_ttf + fira-code + fira-code-symbols + jetbrains-mono + mplus-outline-fonts.githubRelease + dina-font + proggyfonts + font-awesome + nerd-fonts.symbols-only + nerd-fonts.jetbrains-mono + ]; +} diff --git a/modules/system/gpu-amd.nix b/modules/system/gpu-amd.nix new file mode 100644 index 0000000..80b1f66 --- /dev/null +++ b/modules/system/gpu-amd.nix @@ -0,0 +1,5 @@ +{ config, pkgs, ... }: +{ + services.xserver.videoDrivers = [ "amdgpu" ]; + +} diff --git a/modules/system/gpu-nvidia.nix b/modules/system/gpu-nvidia.nix new file mode 100644 index 0000000..fca2856 --- /dev/null +++ b/modules/system/gpu-nvidia.nix @@ -0,0 +1,26 @@ +{ config, pkgs, ... }: +{ + environment.sessionVariables = { + # If your cursor becomes invisible + WLR_NO_HARDWARE_CURSORS = "1"; + # Hint electron apps to use wayland + NIXOS_OZONE_WL = "1"; + # Fix waiting on vsync + __GL_SYNC_TO_VBLANK = "0"; + }; + + services.xserver.videoDrivers = [ "nvidia" ]; + + hardware.nvidia = { + # Enable modesetting for Wayland compositors (hyprland) + modesetting.enable = true; + # Use the open source version of the kernel module (for driver 515.43.04+) + # Actually, just overridden to false for now + open = false; + # Enable the Nvidia settings menu + nvidiaSettings = true; + # Select the appropriate driver version for your specific GPU + package = config.boot.kernelPackages.nvidiaPackages.stable; + }; + +} diff --git a/modules/system/hyprland.nix b/modules/system/hyprland.nix new file mode 100644 index 0000000..0ac6f2b --- /dev/null +++ b/modules/system/hyprland.nix @@ -0,0 +1,51 @@ +{ config, pkgs, ... }: +{ + programs.hyprland = { + enable = true; + xwayland.enable = true; + }; + + services.displayManager.gdm = { + enable = true; + wayland = true; + }; + + services.xserver = { + enable = true; + }; + + hardware.graphics = { + enable = true; + enable32Bit = true; + }; + + xdg.portal.enable = true; + xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; + + environment.systemPackages = with pkgs; [ + waybar + dunst + libnotify + rofi-wayland + nwg-look + nwg-displays + slurp + grim + arandr + wl-clipboard + wlogout + flameshot + wofi + swayimg + hyprpicker + kanshi + hyprlock + swayidle + mako + + (pkgs.waybar.overrideAttrs (oldAttrs: { + mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ]; + })) + ]; + +} diff --git a/modules/system/laptop.nix b/modules/system/laptop.nix new file mode 100644 index 0000000..680d4df --- /dev/null +++ b/modules/system/laptop.nix @@ -0,0 +1,56 @@ +{ config, pkgs, ... }: +{ + + hardware.bluetooth.enable = true; # enables support for Bluetooth + hardware.bluetooth.powerOnBoot = false; # powers up the default Bluetooth controller on boot + services.blueman.enable = true; + + environment.systemPackages = with pkgs; [ + brightnessctl + powertop + ]; + + services.tlp = { + enable = true; + settings = { + ##### Defaults ###### + # WIFI + WIFI_PWR_ON_AC = "off"; + WIFI_PWR_ON_BAT = "off"; + + # AC + CPU_MIN_PERF_ON_AC = 0; + + # BATT + CPU_MIN_PERF_ON_BAT = 0; + CPU_MAX_PERF_ON_BAT = 35; + + CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; + CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; + + START_CHARGE_THRESH_BAT0 = 1; # On non-thinkpad lenovo, this sets conservation mode to 0 + STOP_CHARGE_THRESH_BAT0 = 1; # ..., but to 1 + + ###### Airplane Settings ##### + # AC + # CPU_MAX_PERF_ON_AC = 35; + + # CPU_SCALING_GOVERNOR_ON_AC = "powersave"; + # CPU_ENERGY_PERF_POLICY_ON_AC = "power"; + + ###### Normal Settings ###### + # AC + CPU_MAX_PERF_ON_AC = 100; + + CPU_SCALING_GOVERNOR_ON_AC = "performance"; + CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; + + # BATT + + ##### Special Overrides ##### + #Optional helps save long term battery health + # START_CHARGE_THRESH_BAT0 = 0; # On non-thinkpad lenovo, this sets conservation mode to 0 + # STOP_CHARGE_THRESH_BAT0 = 0; # ..., but to 1 + }; + }; +} diff --git a/modules/system/networking.nix b/modules/system/networking.nix new file mode 100644 index 0000000..01fbb0b --- /dev/null +++ b/modules/system/networking.nix @@ -0,0 +1,13 @@ +{ config, pkgs, ... }: +{ + # Enable networking + networking.networkmanager.enable = true; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + + # Or disable the firewall altogether. + networking.firewall.enable = false; + +} diff --git a/modules/system/nix-settings.nix b/modules/system/nix-settings.nix index dfd7fcb..63b2989 100644 --- a/modules/system/nix-settings.nix +++ b/modules/system/nix-settings.nix @@ -1,5 +1,11 @@ { config, pkgs, ... }: { + # Enable flakes + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; + # Allow unfree packages nixpkgs.config.allowUnfree = true; diff --git a/modules/system/pipewire.nix b/modules/system/pipewire.nix index 2381f30..b3ce057 100644 --- a/modules/system/pipewire.nix +++ b/modules/system/pipewire.nix @@ -9,4 +9,12 @@ alsa.support32Bit = true; pulse.enable = true; }; + + environment.systemPackages = with pkgs; [ + pavucontrol + pasystray + alsa-utils + pulsemixer + easyeffects + ]; } diff --git a/modules/system/security.nix b/modules/system/security.nix new file mode 100644 index 0000000..e2a0caf --- /dev/null +++ b/modules/system/security.nix @@ -0,0 +1,21 @@ +{ pkgs, ... }: +{ + security.sudo = { + enable = true; + extraRules = [ + { + commands = [ + { + command = "${pkgs.systemd}/bin/reboot"; + options = [ "NOPASSWD" ]; + } + { + command = "${pkgs.systemd}/bin/poweroff"; + options = [ "NOPASSWD" ]; + } + ]; + groups = [ "wheel" ]; + } + ]; + }; +} diff --git a/modules/system/systemd-boot.nix b/modules/system/systemd-boot.nix new file mode 100644 index 0000000..d13b423 --- /dev/null +++ b/modules/system/systemd-boot.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: +{ + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.loader.grub.configurationLimit = 8; +} diff --git a/modules/applications/xfce.nix b/modules/system/xfce.nix similarity index 100% rename from modules/applications/xfce.nix rename to modules/system/xfce.nix diff --git a/users/caperren/caperren.nix b/users/caperren/caperren.nix new file mode 100644 index 0000000..fce03e8 --- /dev/null +++ b/users/caperren/caperren.nix @@ -0,0 +1,18 @@ +{ config, pkgs, ... }: +{ + users.users.caperren = { + isNormalUser = true; + description = "Corwin Perren"; + extraGroups = [ + "networkmanager" + "wheel" + "input" + "dialout" + "plugdev" + "adbusers" + ]; + packages = with pkgs; [ + obsidian + ]; + }; +} diff --git a/users/crestline/crestline.nix b/users/crestline/crestline.nix new file mode 100644 index 0000000..bcbeb38 --- /dev/null +++ b/users/crestline/crestline.nix @@ -0,0 +1,22 @@ +{ config, pkgs, ... }: +{ + users.users.crestline = { + isNormalUser = true; + description = "Crestline"; + extraGroups = [ + "networkmanager" + "wheel" + "input" + "dialout" + ]; + packages = with pkgs; [ ]; + + }; + + services.displayManager.autoLogin = { + enable = true; + user = "crestline"; + }; + + services.xserver.displayManager.gdm.autoLogin.delay = 60; +}