From f5f2fa95d4a53b3249847a7fb02eff0866973f21 Mon Sep 17 00:00:00 2001 From: beanigen Date: Mon, 3 Mar 2025 14:48:08 +0800 Subject: [PATCH] the return of hypermac --- base/hypermac/configuration.nix | 180 +++++++++++++++++++++++ base/hypermac/default.nix | 10 ++ base/hypermac/hardware-configuration.nix | 41 ++++++ flake.nix | 20 +++ home/waybar/config | 16 +- home/waybar/style.css | 7 +- 6 files changed, 270 insertions(+), 4 deletions(-) create mode 100644 base/hypermac/configuration.nix create mode 100644 base/hypermac/default.nix create mode 100644 base/hypermac/hardware-configuration.nix diff --git a/base/hypermac/configuration.nix b/base/hypermac/configuration.nix new file mode 100644 index 0000000..cacfbde --- /dev/null +++ b/base/hypermac/configuration.nix @@ -0,0 +1,180 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page, on +# https://search.nixos.org/options and in the NixOS manual (`nixos-help`). + +{ config, lib, pkgs, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; + + programs.gamemode.enable = true; + boot.loader = { + efi.canTouchEfiVariables = false; + grub = { + efiSupport = true; + efiInstallAsRemovable = true; + device = "nodev"; + forcei686 = true; + }; + }; + + programs.sway.enable = true; + services.greetd = { + enable = true; + restart = true; + settings.default_session = { + command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time"; + user = "greeter"; + }; + }; + + programs.adb.enable = true; + environment.variables = { + WLR_NO_HARDWARE_CURSORS = "1"; + }; + systemd.services.greetd.serviceConfig = { + Type = "idle"; + StandardInput = "tty"; + StandardOutput = "tty"; + StandardError = "journal"; + TTYReset = "true"; + TTYHangup = "true"; + TTYVTDisallocate = "true"; + }; + networking.hostName = "hypermac"; # Define your hostname. + # Pick only one of the below networking options. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. + + # Set your time zone. + time.timeZone = "Australia/Perth"; + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_AU.UTF-8"; + # console = { + # font = "Lat2-Terminus16"; + # keyMap = "us"; + # useXkbConfig = true; # use xkb.options in tty. + # }; + nix.settings.experimental-features = "nix-command flakes"; + # Enable the X11 windowing system. + services.xserver.enable = true; + nixpkgs.config.allowUnfree = true; + services.xserver.videoDrivers = [ "nouveau" ]; + hardware.graphics = { + enable = true; + enable32Bit = true; + extraPackages = with pkgs; [ + mesa + mesa.drivers + vulkan-validation-layers + libvdpau-va-gl + vaapiVdpau + ]; + extraPackages32 = with pkgs; [ + driversi686Linux.mesa + ]; + }; + + xdg.portal = { + enable = true; + wlr.enable = true; + extraPortals = [pkgs.xdg-desktop-portal-gtk]; + config.common.default = "*"; + }; + + fonts.fontconfig.defaultFonts = { + serif = ["Noto Serif" "Source Han Serif"]; + sansSerif = ["Noto Sans" "Source Han Sans"]; + }; + # Configure keymap in X11 + # services.xserver.xkb.layout = "us"; + # services.xserver.xkb.options = "eurosign:e,caps:escape"; + + # Enable CUPS to print documents. + # services.printing.enable = true; + + # Enable sound. + services.pipewire = { + enable = true; + audio.enable = true; + pulse.enable = true; + alsa = { + enable = true; + support32Bit = true; + }; + jack.enable = true; + }; + programs.dconf.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.maya = { + isNormalUser = true; + extraGroups = [ "wheel" "adbusers" ]; # Enable ‘sudo’ for the user. + packages = with pkgs; [ + tree + ]; + }; + security.polkit.enable = true; + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + neovim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + wget + firefox + lutris + alacritty + libsForQt5.qt5ct + git + ]; + + # 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; + # 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; + + # This option defines the first version of NixOS you have installed on this particular machine, + # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. + # + # Most users should NEVER change this value after the initial install, for any reason, + # even if you've upgraded your system to a new NixOS release. + # + # This value does NOT affect the Nixpkgs version your packages and OS are pulled from, + # so changing it will NOT upgrade your system. + # + # This value being lower than the current NixOS release does NOT mean your system is + # out of date, out of support, or vulnerable. + # + # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, + # and migrated your data accordingly. + # + # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . + system.stateVersion = "23.11"; # Did you read the comment? + +} + diff --git a/base/hypermac/default.nix b/base/hypermac/default.nix new file mode 100644 index 0000000..ac61773 --- /dev/null +++ b/base/hypermac/default.nix @@ -0,0 +1,10 @@ +{config, pkgs, ...}:{ + imports = [ + ./configuration.nix + ../overrides.nix + ../ssh.nix + ../firewall.nix + ../substituters.nix + ../fonts.nix + ]; +} diff --git a/base/hypermac/hardware-configuration.nix b/base/hypermac/hardware-configuration.nix new file mode 100644 index 0000000..ed0879e --- /dev/null +++ b/base/hypermac/hardware-configuration.nix @@ -0,0 +1,41 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "ohci_pci" "ehci_pci" "ahci" "firewire_ohci" "uas" "usb_storage" "usbhid" "sd_mod" "sr_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "wl" "nouveau" ]; + boot.kernelParams = [ "noefi" ]; + boot.blacklistedKernelModules = [ "nvidia" "nvidia_uvm" "nvidia_drm" "nvidia_modeset" ]; + boot.extraModulePackages = [ config.boot.kernelPackages.broadcom_sta ]; + boot.kernelPackages = pkgs.linuxPackages-rt_latest; + fileSystems."/" = + { device = "/dev/disk/by-uuid/a8237e2f-c6e5-4818-8e29-aeecedc9e57a"; + fsType = "xfs"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/DA2E-30B9"; + fsType = "vfat"; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/472810b1-cbb6-4812-b0ab-b3539c432dc2"; } + ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp3s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/flake.nix b/flake.nix index ae5eb61..962d220 100644 --- a/flake.nix +++ b/flake.nix @@ -35,6 +35,26 @@ } ]; }; + nixosConfigurations."hypermac" = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + ./base/hypermac + home-manager.nixosModules.home-manager { + home-manager.extraSpecialArgs = { + inherit inputs; + vars = { + isNixOS = true; + class = "desktop"; + user = "maya"; + useSyncthing = true; + }; + }; + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.maya = ./home; + }]; + }; + #other confs go here, cant be assed rn homeConfigurations.generic = home-manager.lib.homeManagerConfiguration { pkgs = import nixpkgs { system = "x86_64-linux"; overlays = [inputs.nixgl.overlay]; }; diff --git a/home/waybar/config b/home/waybar/config index 026afee..2d4cda1 100644 --- a/home/waybar/config +++ b/home/waybar/config @@ -9,7 +9,7 @@ "position": "top", "modules-center": ["group/mpdg"], "modules-left": ["group/dtray"], - "modules-right": ["battery", "battery#bat1", "battery#bat2", "clock", "group/audio"], + "modules-right": ["disk", "battery", "battery#bat1", "battery#bat2", "clock", "group/audio", "cpu"], "cava": { "method": "pipewire", "format-icons" : ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█" ], @@ -19,9 +19,16 @@ "hide_on_silence": true, "input_delay": 1, "autosens": 0, + "noise_reduction": 0.5, "sensitivity": 13, }, - + "disk": { + "format": " {free} {path}", + }, + "cpu": { + "format": " {usage}% {max_frequency}GHz", + "states": { "highcpu": 85 }, + }, "group/dtray": { "orientation": "inherit", "drawer": { @@ -32,7 +39,8 @@ }, "group/audio": { "orientation": "inherit", - "modules": ["wireplumber", "cava"] + "modules": ["wireplumber", "cava"], + "on-click": "pavucontrol", }, "group/mpdg": { "orientation": "inherit", @@ -67,6 +75,8 @@ }, "wireplumber": { "on-click": "pavucontrol", + "format": "󰓃 {volume}%", + "format-muted": "󰓄 {volume}%", }, "mpd": { "on-click": "mpc toggle", diff --git a/home/waybar/style.css b/home/waybar/style.css index ec43f9f..f0f0cd9 100644 --- a/home/waybar/style.css +++ b/home/waybar/style.css @@ -37,7 +37,9 @@ window#waybar { #clock, #audio, #mpd, -#battery { +#battery, +#cpu, +#disk { padding: 5px; border-radius: 10px; border: 0.2em solid #cba6f7; @@ -95,3 +97,6 @@ window#waybar { margin-left: 0.2em; color: @mauve; } +#cpu.highcpu { + background: @mauve; +}