Compare commits

..

18 Commits

Author SHA1 Message Date
8bf191eefc yeyeyeyeyye 2025-12-15 12:45:40 -06:00
0ace7b6ad1 up 2025-11-19 16:43:05 -06:00
c04feaaba0 changes 2025-10-24 20:16:50 -05:00
Joshua Elmasri
e8b8791267 yeyeye 2025-10-15 21:46:24 -05:00
Joshua Elmasri
ceff2a381f uuuuu 2025-09-29 12:40:45 -05:00
Joshua Elmasri
d64a0e59b3 modified config 2025-09-26 18:21:29 -05:00
28b44e1f14 redid rofi 2025-09-26 18:19:37 -05:00
5a9bd5a305 modularlized rofi and kitty 2025-09-26 12:24:07 -05:00
6026656165 Monet, Browser declarative and themed with Stylix 2025-09-24 17:12:11 -05:00
222f869bbb switched bar, squared off corners 2025-09-24 15:45:11 -05:00
4ff0e72d8e update 2025-09-24 14:42:25 -05:00
Joshua Elmasri
1b2dbec838 ddd 2025-09-24 14:41:26 -05:00
Joshua Elmasri
6063b1cb97 update 2025-09-12 17:48:54 -05:00
78202b0b74 :Merge branch 'main' of https://gitea.base.jeditemple.com/joshuaelm/NixOS-Configs 2025-08-31 15:45:23 -05:00
d4f72e5b80 www 2025-08-31 15:41:36 -05:00
9922083fcd maintenance and OpenVPN 2025-07-29 13:29:44 -05:00
7a65a428b3 Merge branch 'main' of https://gitea.base.jeditemple.com/joshuaelm/NixOS-Configs 2025-07-23 22:17:46 -05:00
4f7fcad7ad switched to waybar 2025-07-23 22:16:59 -05:00
32 changed files with 2140 additions and 504 deletions

123
2 Normal file
View File

@@ -0,0 +1,123 @@
{ config, pkgs, inputs, ... }:
{
# Home Manager needs a bit of information about you and the
# paths it should manage.
home.username = "joshuaelm";
home.homeDirectory = "/home/joshuaelm";
imports = [ ../../modules/nvim ../../modules/stylix.nix ../../modules/hypr/hyprland_desktop.nix ../../modules/ashell/default.nix ../../modules/waybar/waybar.nix ];
home.packages = [
pkgs.element-desktop
pkgs.waybar
pkgs.signal-desktop-bin
pkgs.swaybg
pkgs.gpu-screen-recorder
pkgs.gpu-screen-recorder-gtk
pkgs.supersonic
pkgs.adw-gtk3
];
programs.hyprlock.enable = true;
programs.starship.enable = true;
programs.starship.enableFishIntegration = true;
programs.kitty.enable = true;
programs.cava.enable = true;
programs.btop.enable = true;
programs.rofi.enable = true;
programs.rofi.package = pkgs.rofi-wayland;
services.hyprpaper.enable = true;
wayland.windowManager.hyprland.enable = true;
home.shell.enableFishIntegration = true;
home.file.".icons/default".source = "${pkgs.bibata-cursors}/share/icons/Bibata-Modern-Classic";
services.mpd-mpris.enable = true;
programs.rofi.extraConfig = {
show-icons = true;
drun-display-format = "{icon} {name}";
hide-scrollbar = true;
sidebar-mode = true;
dpi = 110;
font = "FreeSans Regular 12";
icon-theme = "Gruvbox-Plus-Dark";
};
programs.rofi.theme = {
window.height = 600;
window.width = 600;
window.border-radius = 10;
element = {
padding = 5;
border-radius = 10;
};
inputbar.padding = 14;
listview = {
padding = 8;
border-radius = "0 0 10 10";
border = "2 2 2 2";
dynamic = false;
};
"element-text element-icon" = {
size = 40;
margin = "0 10 0 0";
};
mainbox.children = "inputbar, message, listview";
mainbox.spacing = 0;
};
programs.kitty.extraConfig = ''
font_family Fira Code Nerd Font
bold_font auto
italic_font auto
bold_italic_font auto
confirm_os_window_close 0
cursor_shape beam
cursor_trail 3
'';
# This value determines the Home Manager release that your
# configuration is compatible with. This helps avoid breakage
# when a new Home Manager release introduces backwards
# incompatible changes.
#
# You can update Home Manager without changing this value. See
# the Home Manager release notes for a list of state version
# changes in each release.
home.stateVersion = "23.11";
xdg.dataFile = {
"Steam/compatibilitytools.d/SteamTinkerLaunch/compatibilitytool.vdf".text = ''
"compatibilitytools"
{
"compat_tools"
{
"Proton-stl" // Internal name of this tool
{
"install_path" "."
"display_name" "Steam Tinker Launch"
"from_oslist" "windows"
"to_oslist" "linux"
}
}
}
'';
"Steam/compatibilitytools.d/SteamTinkerLaunch/steamtinkerlaunch".source =
config.lib.file.mkOutOfStoreSymlink "${pkgs.steamtinkerlaunch}/bin/steamtinkerlaunch";
"Steam/compatibilitytools.d/SteamTinkerLaunch/toolmanifest.vdf".text = ''
"manifest"
{
"commandline" "/steamtinkerlaunch run"
"commandline_waitforexitandrun" "/steamtinkerlaunch waitforexitandrun"
}
'';
};
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
}

474
] Normal file
View File

@@ -0,0 +1,474 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ config, pkgs, master, lib, inputs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];
# Bootloader.
boot.loader.grub.enable = true;
boot.loader.grub.devices = ["nodev"];
boot.loader.grub.useOSProber = true;
boot.loader.grub.efiSupport = true;
boot.initrd.systemd.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.grub.timeoutStyle = "hidden";
services.avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
};
boot = {
plymouth = {
enable = true;
theme = "square_hud";
themePackages = with pkgs; [
# By default we would install all themes
(adi1090x-plymouth-themes.override {
selected_themes = [ "square_hud" ];
})
];
};
# Enable "Silent Boot"
consoleLogLevel = 0;
initrd.verbose = false;
kernelPackages = pkgs.linuxPackages_zen;
/*kernelPatches = [
{
name = "dsc";
patch = ../../patches/vesa-dsc-fixed-bpp.patch;
}
];*/
kernelParams = [
"quiet"
"splash"
"boot.shell_on_fail"
"loglevel=3"
"rd.systemd.show_status=false"
"rd.udev.log_level=3"
"udev.log_priority=3"
];
# Hide the OS choice for bootloaders.
# It's still possible to open the bootloader list by pressing any key
# It will just not appear on screen unless a key is pressed
loader.timeout = 0;
};
services.udev.extraRules = ''
ACTION=="add", KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="35bd", ATTRS{idProduct}=="0101", TAG+="uaccess", MODE="0660"
'';
boot.extraModulePackages = with config.boot.kernelPackages; [ hid-tmff2 ];
networking.hostName = "nixos"; # 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/";
# Enable networking
networking.networkmanager.enable = true;
security.pki.certificateFiles = [ ./certs/beammp.pem ];
hardware.bluetooth.enable = true;
hardware.bluetooth.package = pkgs.bluez;
nixpkgs.config.permittedInsecurePackages = [
"electron-31.7.7"
"mbedtls-2.28.10"
];
environment.variables.AMD_VULKAN_ICD = "RADV";
# Set your time zone.
time.timeZone = "America/Chicago";
environment.sessionVariables.NIXOS_OZONE_WL = "1";
environment.sessionVariables.SDL_GAMECONTROLLERCONFIG = "03002f67c4100000c082000011010000,Shifter,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,platform:Linux";
# 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 X11 windowing sytem.
services.xserver.enable = true;
# Enable the GNOME Desktop Environment.
services.desktopManager.plasma6.enable = false;
services.displayManager.sddm.enable = false;
services.displayManager.cosmic-greeter.enable = false;
services.desktopManager.cosmic.enable = true;
services.desktopManager.gnome.enable = false;
services.displayManager.gdm.enable = false;
/*services.displayManager = {
autoLogin.enable = true;
autoLogin.user = "joshuaelm";
};*/
security.pam.services.hyprlock = {};
programs.noisetorch.enable = true;
services.greetd = {
enable = true;
settings = rec {
initial_session = {
command = "dbus-launch ${pkgs.hyprland}/bin/Hyprland";
user = "joshuaelm";
};
default_session = initial_session;
};
};
# Steam Deck Gamemode
programs.steam.gamescopeSession.enable = true;
# Polkit
security.polkit.enable = true;
services.udisks2.enable = true;
# Configure keymap in X11
services.xserver = {
xkb.layout = "us";
xkb.variant = "";
excludePackages = [ pkgs.xterm ];
};
# Enable Swap
/*swapDevices = [ {
device = "/var/lib/swapfile";
size = 16*1024;
}];*/
# Enable CUPS to print documents.
services.printing.enable = true;
# Enable sound with pipewire.
services.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
wireplumber.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;
wireplumber.configPackages = [
(pkgs.writeTextDir "share/wireplumber/wireplumber.conf.d/alsa.conf" ''
monitor.alsa.rules = [
{
matches = [
{
device.name = "~alsa_card.*"
}
]
actions = {
update-props = {
# Device settings
api.alsa.use-acp = true
}
}
}
{
matches = [
{
node.name = "~alsa_input.*"
}
{
node.name = "~alsa_output.*"
}
]
actions = {
# Node settings
update-props = {
session.suspend-timeout-seconds = 0
}
}
}
]
'')
];
};
services.pulseaudio.configFile = pkgs.runCommand "default.pa" {} ''
sed 's/module-udev-detect$/module-udev-detect tsched=0/' \
${pkgs.pulseaudio}/etc/pulse/default.pa > $out
'';
environment.etc."wireplumber/main.lua.d/90-suspend-timeout.lua" = {
text = ''
session.suspend-timeout-seconds = 0
'';
};
services.pipewire.extraConfig.pipewire-pulse."92-low-latency" = {
context.modules = [
{
name = "libpipewire-module-protocol-pulse";
args = {
pulse.min.req = "32/48000";
pulse.default.req = "32/48000";
pulse.max.req = "32/48000";
pulse.min.quantum = "32/48000";
pulse.max.quantum = "32/48000";
};
}
];
stream.properties = {
node.latency = "32/48000";
resample.quality = 1;
};
};
hardware.pulseaudio.extraConfig = ''
.nofail
unload-module module-suspend-on-idle
.fail
'';
# 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.
programs.adb.enable = true;
users.users.joshuaelm = {
isNormalUser = true;
description = "Joshua Elmasri";
extraGroups = [ "networkmanager" "input" "wheel" "adbusers" ];
packages = with pkgs; [
# thunderbird
];
shell = pkgs.fish;
};
programs.fish.enable = true;
nix.optimise.automatic = true;
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# Configure drives
fileSystems."/mnt/Games" = {
device = "/dev/nvme0n1p1";
fsType = "btrfs";
options = [
"users"
"nofail"
"x-gvfs-show"
"exec"
];
};
/*fileSystems."/mnt/More-Games" = {
device = "/dev/sdb1";
fsType = "btrfs";
options = [
"users"
"nofail"
"x-gvfs-show"
"exec"
];
};*/
# Fonts
fonts.packages = with pkgs; [
fira-code
fira-code-symbols
roboto
nerd-fonts.fira-code
nerd-fonts.jetbrains-mono
];
services.moltengamepad.enable = true;
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
(pkgs.buildFHSEnv {
name = "fhs";
targetPkgs = pkgs: with pkgs; [
alsa-lib atk cairo cups curl dbus expat file fish fontconfig freetype
fuse glib gtk3 libGL libnotify libxml2 libxslt netcat nspr nss openjdk8
openssl.dev cava pango appimage-run pkg-config strace udev vulkan-loader watch wget which
xorg.libX11 icu xorg.libxcb xorg.libXcomposite xorg.libXcursor
xorg.libXdamage xorg.libXext xorg.libXfixes xorg.libXi xorg.libXrandr
xorg.libXrender xorg.libXScrnSaver openssl xorg.libxshmfence xorg.libXtst
xorg.xcbutilkeysyms zlib fontconfig.lib SDL2 libGL libuuid xorg.libXft
];
profile = ''export FHS=1'';
runScript = "fish";
})
git
bibata-cursors
killall
usbutils
mangohud
# cemu broken with latest update
oterm
wget
wlx-overlay-s
labymod-launcher
unzip
winetricks
cowsay
pfetch
ryubing
gomatrix
python3
pavucontrol
bluebubbles
xfce.thunar
parallel-launcher
wiremix
termsonic
steamtinkerlaunch
kdePackages.kdenlive
wineWowPackages.wayland
blueman
lapce
prismlauncher
protonup-qt
openjdk23
heroic
protontricks
gamescope
playerctl
wine
#alvr
libreoffice
neovide
flatpak
];
# VirtualBox
virtualisation.virtualbox.host.enable = false;
users.extraGroups.vboxusers.members = [ "user-with-access-to-virtualbox" ];
services.flatpak.enable = true;
services.sunshine = {
enable = true;
autoStart = false;
capSysAdmin = true;
openFirewall = true;
};
# Enable Steam
programs.steam = {
enable = true;
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
};
hardware.steam-hardware.enable=true;
services.monado = {
enable = true;
defaultRuntime = true; # Register as default OpenXR runtime
};
systemd.user.services.monado.environment = {
STEAMVR_LH_ENABLE = "1";
XRT_COMPOSITOR_COMPUTE = "1";
WMR_HANDTRACKING = "0";
};
nixpkgs.config.packageOverrides = pkgs: {
steam = pkgs.steam.override {
extraLibraries = pkgs: [ pkgs.xorg.libxcb ];
extraPkgs = pkgs: with pkgs; [
xorg.libXcursor
xorg.libXi
xorg.libXinerama
xorg.libXScrnSaver
libpng
libpulseaudio
libvorbis
stdenv.cc.cc.lib
libkrb5
keyutils
];
};
};
programs.gamescope = {
enable = true;
capSysNice = true;
};
programs.nix-ld.enable = true;
# 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;
services.openssh.allowSFTP = true;
services.openssh.settings.PasswordAuthentication = true;
# Open ports in the firewall.
networking.firewall.allowedTCPPorts = [ 7860 3042 3246 9943 9944 7801 11434 47990 48010 5001 ];
networking.firewall.allowedUDPPorts = [ 7860 9943 9944 3042 47990 3246 11434 7801 4800 48010 ];
# 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. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# 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?
# Enable lakes
nix = {
extraOptions = ''
experimental-features = nix-command flakes
'';
};
}

365
flake.lock generated
View File

@@ -7,11 +7,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1751126708, "lastModified": 1764173295,
"narHash": "sha256-AodIKw7TmI7rHVcOfEsO82stupMYIMVQeLAUQfVxnkU=", "narHash": "sha256-Jh4VtPcK2Ov+RTcV9FtyQRsxiJmXFQGfqX6jjM7/mgc=",
"owner": "aylur", "owner": "aylur",
"repo": "astal", "repo": "astal",
"rev": "ac90f09385a2295da9fdc108aaba4a317aaeacc7", "rev": "7d1fac8a4b2a14954843a978d2ddde86168c75ef",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -25,11 +25,11 @@
"fromYaml": "fromYaml" "fromYaml": "fromYaml"
}, },
"locked": { "locked": {
"lastModified": 1746562888, "lastModified": 1755819240,
"narHash": "sha256-YgNJQyB5dQiwavdDFBMNKk1wyS77AtdgDk/VtU6wEaI=", "narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=",
"owner": "SenchoPens", "owner": "SenchoPens",
"repo": "base16.nix", "repo": "base16.nix",
"rev": "806a1777a5db2a1ef9d5d6f493ef2381047f2b89", "rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -41,27 +41,28 @@
"base16-fish": { "base16-fish": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1622559957, "lastModified": 1765809053,
"narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=", "narHash": "sha256-XCUQLoLfBJ8saWms2HCIj4NEN+xNsWBlU1NrEPcQG4s=",
"owner": "tomyun", "owner": "tomyun",
"repo": "base16-fish", "repo": "base16-fish",
"rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe", "rev": "86cbea4dca62e08fb7fd83a70e96472f92574782",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "tomyun", "owner": "tomyun",
"repo": "base16-fish", "repo": "base16-fish",
"rev": "86cbea4dca62e08fb7fd83a70e96472f92574782",
"type": "github" "type": "github"
} }
}, },
"base16-helix": { "base16-helix": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1748408240, "lastModified": 1760703920,
"narHash": "sha256-9M2b1rMyMzJK0eusea0x3lyh3mu5nMeEDSc4RZkGm+g=", "narHash": "sha256-m82fGUYns4uHd+ZTdoLX2vlHikzwzdu2s2rYM2bNwzw=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "base16-helix", "repo": "base16-helix",
"rev": "6c711ab1a9db6f51e2f6887cc3345530b33e152e", "rev": "d646af9b7d14bff08824538164af99d0c521b185",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -90,11 +91,11 @@
"firefox-gnome-theme": { "firefox-gnome-theme": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1748383148, "lastModified": 1764724327,
"narHash": "sha256-pGvD/RGuuPf/4oogsfeRaeMm6ipUIznI2QSILKjKzeA=", "narHash": "sha256-OkFLrD3pFR952TrjQi1+Vdj604KLcMnkpa7lkW7XskI=",
"owner": "rafaelmardojai", "owner": "rafaelmardojai",
"repo": "firefox-gnome-theme", "repo": "firefox-gnome-theme",
"rev": "4eb2714fbed2b80e234312611a947d6cb7d70caf", "rev": "66b7c635763d8e6eb86bd766de5a1e1fbfcc1047",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -104,22 +105,6 @@
} }
}, },
"flake-compat": { "flake-compat": {
"locked": {
"lastModified": 1688025799,
"narHash": "sha256-ktpB4dRtnksm9F5WawoIkEneh1nrEvuxb5lJFt1iOyw=",
"owner": "nix-community",
"repo": "flake-compat",
"rev": "8bf105319d44f6b9f0d764efa4fdef9f1cc9ba1c",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_2": {
"flake": false,
"locked": { "locked": {
"lastModified": 1746162366, "lastModified": 1746162366,
"narHash": "sha256-5SSSZ/oQkwfcAz/o/6TlejlVGqeK08wyREBQ5qFFPhM=", "narHash": "sha256-5SSSZ/oQkwfcAz/o/6TlejlVGqeK08wyREBQ5qFFPhM=",
@@ -142,11 +127,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1751413152, "lastModified": 1765495779,
"narHash": "sha256-Tyw1RjYEsp5scoigs1384gIg6e0GoBVjms4aXFfRssQ=", "narHash": "sha256-MhA7wmo/7uogLxiewwRRmIax70g6q1U/YemqTGoFHlM=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "77826244401ea9de6e3bac47c2db46005e1f30b5", "rev": "5635c32d666a59ec9a55cab87e898889869f7b71",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -163,11 +148,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1743550720, "lastModified": 1763759067,
"narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", "narHash": "sha256-LlLt2Jo/gMNYAwOgdRQBrsRoOz7BPRkzvNaI/fzXi2Q=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "c621e8422220273271f52058f618c94e405bb0f5", "rev": "2cccadc7357c0ba201788ae99c4dfa90728ef5e0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -176,24 +161,6 @@
"type": "github" "type": "github"
} }
}, },
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"fromYaml": { "fromYaml": {
"flake": false, "flake": false,
"locked": { "locked": {
@@ -213,18 +180,20 @@
"gnome-shell": { "gnome-shell": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1748186689, "host": "gitlab.gnome.org",
"narHash": "sha256-UaD7Y9f8iuLBMGHXeJlRu6U1Ggw5B9JnkFs3enZlap0=", "lastModified": 1764524476,
"narHash": "sha256-bTmNn3Q4tMQ0J/P0O5BfTQwqEnCiQIzOGef9/aqAZvk=",
"owner": "GNOME", "owner": "GNOME",
"repo": "gnome-shell", "repo": "gnome-shell",
"rev": "8c88f917db0f1f0d80fa55206c863d3746fa18d0", "rev": "c0e1ad9f0f703fd0519033b8f46c3267aab51a22",
"type": "github" "type": "gitlab"
}, },
"original": { "original": {
"host": "gitlab.gnome.org",
"owner": "GNOME", "owner": "GNOME",
"ref": "48.2", "ref": "gnome-49",
"repo": "gnome-shell", "repo": "gnome-shell",
"type": "github" "type": "gitlab"
} }
}, },
"home-manager": { "home-manager": {
@@ -234,11 +203,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1751824240, "lastModified": 1765823531,
"narHash": "sha256-aDDC0CHTlL7QDKWWhdbEgVPK6KwWt+ca0QkmHYZxMzI=", "narHash": "sha256-tyNJjd48hfgsyEfsq1Ueufg4oJv6b8xBA6NYRJrLPyg=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "fd9e55f5fac45a26f6169310afca64d56b681935", "rev": "8315c1544f383b791a3115c9959d1f27920e8320",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -247,62 +216,13 @@
"type": "github" "type": "github"
} }
}, },
"home-manager_2": {
"inputs": {
"nixpkgs": [
"zen-browser",
"nixpkgs"
]
},
"locked": {
"lastModified": 1743604125,
"narHash": "sha256-ZD61DNbsBt1mQbinAaaEqKaJk2RFo9R/j+eYWeGMx7A=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "180fd43eea296e62ae68e079fcf56aba268b9a1a",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"ixx": {
"inputs": {
"flake-utils": [
"nixvim",
"nuschtosSearch",
"flake-utils"
],
"nixpkgs": [
"nixvim",
"nuschtosSearch",
"nixpkgs"
]
},
"locked": {
"lastModified": 1748294338,
"narHash": "sha256-FVO01jdmUNArzBS7NmaktLdGA5qA3lUMJ4B7a05Iynw=",
"owner": "NuschtOS",
"repo": "ixx",
"rev": "cc5f390f7caf265461d4aab37e98d2292ebbdb85",
"type": "github"
},
"original": {
"owner": "NuschtOS",
"ref": "v0.0.8",
"repo": "ixx",
"type": "github"
}
},
"master": { "master": {
"locked": { "locked": {
"lastModified": 1751914753, "lastModified": 1765823699,
"narHash": "sha256-46zytRNdtF3SpFI/bh+AYR6stQCk7Ad79egf79uG/uI=", "narHash": "sha256-BdYVSKAvhBxGA4xO8UWKHg4IlqD88HeGIKLGof60OXk=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "e69f17b2fda2842ad65707ce3d3c65d62218dcd4", "rev": "ef3ade20ba7bfbcbf6bcd83eccf75e0fd5082c7a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -320,11 +240,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1751622568, "lastModified": 1765528634,
"narHash": "sha256-EE3NBsej517VRa1x+ylAghrvngftxf1KgfHlE9OYyXE=", "narHash": "sha256-uIavvJkDwTZD1QY/oSkDtPN9xwkLwQayoZ5xOni4SBY=",
"owner": "tpwrules", "owner": "tpwrules",
"repo": "nixos-apple-silicon", "repo": "nixos-apple-silicon",
"rev": "eba4b40c816e5aff8951ae231ac237e8aab8ec1d", "rev": "fc1440d6e6adb24d9b2650670744bae35654c867",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -333,36 +253,13 @@
"type": "github" "type": "github"
} }
}, },
"nixos-cosmic": {
"inputs": {
"flake-compat": "flake-compat_2",
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable",
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1751591814,
"narHash": "sha256-A4lgvuj4v+Pr8MniXz1FBG0DXOygi8tTECR+j53FMhM=",
"owner": "lilyinstarlight",
"repo": "nixos-cosmic",
"rev": "fef2d0c78c4e4d6c600a88795af193131ff51bdc",
"type": "github"
},
"original": {
"owner": "lilyinstarlight",
"repo": "nixos-cosmic",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1751792365, "lastModified": 1765472234,
"narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=", "narHash": "sha256-9VvC20PJPsleGMewwcWYKGzDIyjckEz8uWmT0vCDYK0=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb", "rev": "2fbfb1d73d239d2402a8fe03963e37aab15abe8b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -371,34 +268,18 @@
"type": "indirect" "type": "indirect"
} }
}, },
"nixpkgs-stable": {
"locked": {
"lastModified": 1751048012,
"narHash": "sha256-MYbotu4UjWpTsq01wglhN5xDRfZYLFtNk7SBY0BcjkU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a684c58d46ebbede49f280b653b9e56100aa3877",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1743448293, "lastModified": 1765644376,
"narHash": "sha256-bmEPmSjJakAp/JojZRrUvNcDX2R5/nuX6bm+seVaGhs=", "narHash": "sha256-yqHBL2wYGwjGL2GUF2w3tofWl8qO9tZEuI4wSqbCrtE=",
"owner": "nixos", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "77b584d61ff80b4cef9245829a6f1dfad5afdfa3", "rev": "23735a82a828372c4ef92c660864e82fbe2f5fbe",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "NixOS",
"ref": "nixos-unstable", "ref": "nixpkgs-unstable",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
@@ -406,18 +287,15 @@
"nixvim": { "nixvim": {
"inputs": { "inputs": {
"flake-parts": "flake-parts", "flake-parts": "flake-parts",
"nixpkgs": [ "nixpkgs": "nixpkgs_2",
"nixpkgs" "systems": "systems"
],
"nuschtosSearch": "nuschtosSearch",
"systems": "systems_2"
}, },
"locked": { "locked": {
"lastModified": 1751904655, "lastModified": 1765796308,
"narHash": "sha256-lHAj9Xh/vBf3cXns1wN5HPw/zwGTO/Uv/ttloBok1n4=", "narHash": "sha256-szKgoF0JbDUvWkqjB2AyyFagmsF5ZFEjajZRUiUV9mU=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixvim", "repo": "nixvim",
"rev": "bc997a240953bda9fa526e8a3d6f798a6072308a", "rev": "12a76dd12beccd8d18249b05d10d6acda4e722e0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -435,43 +313,19 @@
"nixpkgs": [ "nixpkgs": [
"stylix", "stylix",
"nixpkgs" "nixpkgs"
],
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1748730660,
"narHash": "sha256-5LKmRYKdPuhm8j5GFe3AfrJL8dd8o57BQ34AGjJl1R0=",
"owner": "nix-community",
"repo": "NUR",
"rev": "2c0bc52fe14681e9ef60e3553888c4f086e46ecb",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "NUR",
"type": "github"
}
},
"nuschtosSearch": {
"inputs": {
"flake-utils": "flake-utils",
"ixx": "ixx",
"nixpkgs": [
"nixvim",
"nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1749730855, "lastModified": 1764773531,
"narHash": "sha256-L3x2nSlFkXkM6tQPLJP3oCBMIsRifhIDPMQQdHO5xWo=", "narHash": "sha256-mCBl7MD1WZ7yCG6bR9MmpPO2VydpNkWFgnslJRIT1YU=",
"owner": "NuschtOS", "owner": "nix-community",
"repo": "search", "repo": "NUR",
"rev": "8dfe5879dd009ff4742b668d9c699bc4b9761742", "rev": "1d9616689e98beded059ad0384b9951e967a17fa",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NuschtOS", "owner": "nix-community",
"repo": "search", "repo": "NUR",
"type": "github" "type": "github"
} }
}, },
@@ -481,34 +335,12 @@
"home-manager": "home-manager", "home-manager": "home-manager",
"master": "master", "master": "master",
"nixos-apple-silicon": "nixos-apple-silicon", "nixos-apple-silicon": "nixos-apple-silicon",
"nixos-cosmic": "nixos-cosmic",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"nixvim": "nixvim", "nixvim": "nixvim",
"stylix": "stylix", "stylix": "stylix",
"zen-browser": "zen-browser" "zen-browser": "zen-browser"
} }
}, },
"rust-overlay": {
"inputs": {
"nixpkgs": [
"nixos-cosmic",
"nixpkgs"
]
},
"locked": {
"lastModified": 1751251399,
"narHash": "sha256-y+viCuy/eKKpkX1K2gDvXIJI/yzvy6zA3HObapz9XZ0=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "b22d5ee8c60ed1291521f2dde48784edd6bf695b",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"stylix": { "stylix": {
"inputs": { "inputs": {
"base16": "base16", "base16": "base16",
@@ -522,7 +354,7 @@
"nixpkgs" "nixpkgs"
], ],
"nur": "nur", "nur": "nur",
"systems": "systems_3", "systems": "systems_2",
"tinted-foot": "tinted-foot", "tinted-foot": "tinted-foot",
"tinted-kitty": "tinted-kitty", "tinted-kitty": "tinted-kitty",
"tinted-schemes": "tinted-schemes", "tinted-schemes": "tinted-schemes",
@@ -530,11 +362,11 @@
"tinted-zed": "tinted-zed" "tinted-zed": "tinted-zed"
}, },
"locked": { "locked": {
"lastModified": 1751914048, "lastModified": 1765812876,
"narHash": "sha256-xHO3xlw35tCC0f3pN3osPNjgwwwAgusTuZk5iC8oDiE=", "narHash": "sha256-mML2DlWmvwPOzn8K9QEsiKGdt67iHW/LaK6Xw+ZENMk=",
"owner": "danth", "owner": "danth",
"repo": "stylix", "repo": "stylix",
"rev": "bf0ef81c8fcc30c32db9dab32d379f8d9db835e4", "rev": "9ba353558a288eb9d6fc3057bb418509dd8b4c01",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -573,21 +405,6 @@
"type": "github" "type": "github"
} }
}, },
"systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"tinted-foot": { "tinted-foot": {
"flake": false, "flake": false,
"locked": { "locked": {
@@ -624,11 +441,11 @@
"tinted-schemes": { "tinted-schemes": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1748180480, "lastModified": 1763914658,
"narHash": "sha256-7n0XiZiEHl2zRhDwZd/g+p38xwEoWtT0/aESwTMXWG4=", "narHash": "sha256-Hju0WtMf3iForxtOwXqGp3Ynipo0EYx1AqMKLPp9BJw=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "schemes", "repo": "schemes",
"rev": "87d652edd26f5c0c99deda5ae13dfb8ece2ffe31", "rev": "0f6be815d258e435c9b137befe5ef4ff24bea32c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -640,11 +457,11 @@
"tinted-tmux": { "tinted-tmux": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1748740859, "lastModified": 1764465359,
"narHash": "sha256-OEM12bg7F4N5WjZOcV7FHJbqRI6jtCqL6u8FtPrlZz4=", "narHash": "sha256-lbSVPqLEk2SqMrnpvWuKYGCaAlfWFMA6MVmcOFJjdjE=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "tinted-tmux", "repo": "tinted-tmux",
"rev": "57d5f9683ff9a3b590643beeaf0364da819aedda", "rev": "edf89a780e239263cc691a987721f786ddc4f6aa",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -656,11 +473,11 @@
"tinted-zed": { "tinted-zed": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1725758778, "lastModified": 1764464512,
"narHash": "sha256-8P1b6mJWyYcu36WRlSVbuj575QWIFZALZMTg5ID/sM4=", "narHash": "sha256-rCD/pAhkMdCx6blsFwxIyvBJbPZZ1oL2sVFrH07lmqg=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "base16-zed", "repo": "base16-zed",
"rev": "122c9e5c0e6f27211361a04fae92df97940eccf9", "rev": "907dbba5fb8cf69ebfd90b00813418a412d0a29a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -669,39 +486,21 @@
"type": "github" "type": "github"
} }
}, },
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"stylix",
"nur",
"nixpkgs"
]
},
"locked": {
"lastModified": 1733222881,
"narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "49717b5af6f80172275d47a418c9719a31a78b53",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"zen-browser": { "zen-browser": {
"inputs": { "inputs": {
"home-manager": "home-manager_2", "home-manager": [
"nixpkgs": "nixpkgs_2" "home-manager"
],
"nixpkgs": [
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1751858709, "lastModified": 1765764138,
"narHash": "sha256-xghd1GDPRSa6aD6tEk2JCuQDZWdHITlCA/stwSVoZJQ=", "narHash": "sha256-Nb5y5xSDQLMeUYiA1bQkbmHffGm0d/XXWoJjFu8ovw0=",
"owner": "0xc000022070", "owner": "0xc000022070",
"repo": "zen-browser-flake", "repo": "zen-browser-flake",
"rev": "216dd333fa41aa013bf8aab9322d7c1a2aee5b4a", "rev": "bd8815d0a686267386268e7cc70315124e21362b",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@@ -3,20 +3,20 @@
inputs = { inputs = {
nixpkgs.url = "nixpkgs/nixos-unstable"; nixpkgs.url = "nixpkgs/nixos-unstable";
nixos-cosmic = {
url = "github:lilyinstarlight/nixos-cosmic";
inputs.nixpkgs.follows = "nixpkgs";
};
stylix = { stylix = {
url = "github:danth/stylix"; url = "github:danth/stylix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
zen-browser.url = "github:0xc000022070/zen-browser-flake"; zen-browser = {
url = "github:0xc000022070/zen-browser-flake";
inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager";
};
master.url = "github:NixOS/nixpkgs/master"; master.url = "github:NixOS/nixpkgs/master";
home-manager.url = "github:nix-community/home-manager"; home-manager.url = "github:nix-community/home-manager";
nixvim = { nixvim = {
url = "github:nix-community/nixvim"; url = "github:nix-community/nixvim";
inputs.nixpkgs.follows = "nixpkgs"; #inputs.nixpkgs.follows = "nixpkgs";
}; };
nixos-apple-silicon = { nixos-apple-silicon = {
url = "github:tpwrules/nixos-apple-silicon"; url = "github:tpwrules/nixos-apple-silicon";
@@ -29,29 +29,29 @@
home-manager.inputs.nixpkgs.follows = "nixpkgs"; home-manager.inputs.nixpkgs.follows = "nixpkgs";
}; };
outputs = { self, stylix, astal, nixpkgs, nixos-cosmic, home-manager, zen-browser, master, nixos-apple-silicon, nixvim }@inputs: outputs = { self, stylix, astal, nixpkgs, home-manager, zen-browser, master, nixos-apple-silicon, nixvim }@inputs:
{ let
system = "x86_64-linux";
lib = nixpkgs.lib;
pkgs = nixpkgs.legacyPackages.${system};
pkgs-master = master.legacyPackages.${system};
username = "joshuaelm";
name = "Joshua";
in {
nixosConfigurations = { nixosConfigurations = {
nixos = nixpkgs.lib.nixosSystem { nixos = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = {inherit nixvim;}; specialArgs = {inherit nixvim; inherit pkgs-master;};
specialArgs.inputs = inputs; specialArgs.inputs = inputs;
modules = [ modules = [
{
nix.settings = {
substituters = [ "https://cosmic.cachix.org/" ];
trusted-public-keys = [ "cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE=" ];
};
}
#stylix.nixosModules.stylix #stylix.nixosModules.stylix
nixos-cosmic.nixosModules.default
./hosts/desktop/configuration.nix ./hosts/desktop/configuration.nix
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
{ {
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = {inherit inputs;}; home-manager.extraSpecialArgs = {inherit inputs;};
home-manager.users.joshuaelm = { home-manager.users.joshuaelm = {
imports = [ ./hosts/desktop/home.nix nixvim.homeManagerModules.nixvim stylix.homeModules.stylix ]; imports = [ ./hosts/desktop/home.nix nixvim.homeModules.nixvim stylix.homeModules.stylix ];
}; };
} }
]; ];
@@ -62,21 +62,16 @@
specialArgs.inputs = inputs; specialArgs.inputs = inputs;
modules = [ modules = [
{ {
nix.settings = {
substituters = [ "https://cosmic.cachix.org/" ];
trusted-public-keys = [ "cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE=" ];
};
} }
nixos-apple-silicon.nixosModules.apple-silicon-support nixos-apple-silicon.nixosModules.apple-silicon-support
#stylix.nixosModules.stylix #stylix.nixosModules.stylix
nixos-cosmic.nixosModules.default
./hosts/mac-laptop/configuration.nix ./hosts/mac-laptop/configuration.nix
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
{ {
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = {inherit inputs;}; home-manager.extraSpecialArgs = {inherit inputs;};
home-manager.users.joshuaelm = { home-manager.users.joshuaelm = {
imports = [ ./hosts/mac-laptop/home.nix nixvim.homeManagerModules.nixvim stylix.homeModules.stylix ]; imports = [ ./hosts/mac-laptop/home.nix nixvim.homeModules.nixvim stylix.homeModules.stylix ];
}; };
} }
]; ];

View File

@@ -0,0 +1,146 @@
Found. Redirecting to https://beammp.comSubject:CN = auth.beammp.com
Issuer:C = US, O = "CLOUDFLARE, INC.", CN = Cloudflare TLS Issuing ECC CA 1
Version:2
Serial Number:13eb6f5c3abc908cf7907011df841bd5
Signature Algorithm:ecdsa-with-SHA256
Public Key Algorithm:id-ecPublicKey
X509v3 Basic Constraints:CA:FALSE
X509v3 Authority Key Identifier:9C:C4:09:72:47:18:17:7B:A7:1A:89:B3:92:35:D5:E1:03:8C:FE:92
Authority Information Access:CA Issuers - URI:http://i.cf-b.ssl.com/Cloudflare-TLS-I-E1.cer
OCSP - URI:http://o.cf-b.ssl.com
X509v3 Subject Alternative Name:DNS:auth.beammp.com
X509v3 Certificate Policies:Policy: 2.23.140.1.2.1
Policy: 1.3.6.1.4.1.38064.1.3.1.1
X509v3 Extended Key Usage:TLS Web Client Authentication, TLS Web Server Authentication
X509v3 CRL Distribution Points:Full Name:
URI:http://c.cf-b.ssl.com/Cloudflare-TLS-I-E1.crl
X509v3 Key Usage:Digital Signature
1.3.6.1.4.1.44363.44:..
CT Precertificate SCTs:Signed Certificate Timestamp:
Version : v1 (0x0)
Log ID : 12:F1:4E:34:BD:53:72:4C:84:06:19:C3:8F:3F:7A:13:
F8:E7:B5:62:87:88:9C:6D:30:05:84:EB:E5:86:26:3A
Timestamp : Aug 4 01:31:58.900 2025 GMT
Extensions: none
Signature : ecdsa-with-SHA256
30:46:02:21:00:EA:26:7D:7A:DB:23:C8:6B:46:84:53:
3D:7B:6B:3B:62:B5:EE:FE:B4:E4:84:C4:25:C5:CD:A8:
2C:D3:71:98:F0:02:21:00:FF:C3:93:29:98:83:4A:93:
6C:AA:A6:0E:6F:4A:A5:9F:3F:A1:54:CB:2F:E7:DC:97:
D4:3E:A8:39:46:77:34:6A
Signed Certificate Timestamp:
Version : v1 (0x0)
Log ID : CC:FB:0F:6A:85:71:09:65:FE:95:9B:53:CE:E9:B2:7C:
22:E9:85:5C:0D:97:8D:B6:A9:7E:54:C0:FE:4C:0D:B0
Timestamp : Aug 4 01:31:58.957 2025 GMT
Extensions: none
Signature : ecdsa-with-SHA256
30:45:02:20:30:32:E9:B4:36:27:C1:23:DD:E8:48:1C:
68:62:EA:E2:41:8A:42:7F:54:80:87:0B:D1:A1:23:6F:
0E:BD:08:B6:02:21:00:87:FF:FE:63:AE:1F:EF:A2:7C:
87:94:D2:EC:50:99:82:80:97:F5:97:2E:42:CC:03:AF:
4A:D5:E2:71:69:AA:78
Start date:Aug 4 01:21:57 2025 GMT
Expire date:Nov 2 01:19:59 2025 GMT
Signature:30:45:02:21:00:95:03:dc:ed:60:03:84:a4:f0:7f:43:ce:7f:21:bf:3c:9a:41:63:99:0f:1f:58:34:43:ac:14:f9:54:bb:99:9d:02:20:3e:00:5e:b5:fb:84:59:9b:43:5d:93:74:3e:fe:ac:57:f5:11:cc:5c:36:38:9f:74:2d:67:7c:6c:04:22:f5:03:
-----BEGIN CERTIFICATE-----
MIID1zCCA32gAwIBAgIQE+tvXDq8kIz3kHAR34Qb1TAKBggqhkjOPQQDAjBSMQsw
CQYDVQQGEwJVUzEZMBcGA1UECgwQQ0xPVURGTEFSRSwgSU5DLjEoMCYGA1UEAwwf
Q2xvdWRmbGFyZSBUTFMgSXNzdWluZyBFQ0MgQ0EgMTAeFw0yNTA4MDQwMTIxNTda
Fw0yNTExMDIwMTE5NTlaMBoxGDAWBgNVBAMMD2F1dGguYmVhbW1wLmNvbTBZMBMG
ByqGSM49AgEGCCqGSM49AwEHA0IABB1QJOo3fjL89VfzriD9QJ9oQEFNl7rh9i0X
K8PTOf5dRnwId1VVFB4QGo1OnzgEFxNpbaYafJN1zEGusQAe/eWjggJrMIICZzAM
BgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFJzECXJHGBd7pxqJs5I11eEDjP6SMGwG
CCsGAQUFBwEBBGAwXjA5BggrBgEFBQcwAoYtaHR0cDovL2kuY2YtYi5zc2wuY29t
L0Nsb3VkZmxhcmUtVExTLUktRTEuY2VyMCEGCCsGAQUFBzABhhVodHRwOi8vby5j
Zi1iLnNzbC5jb20wGgYDVR0RBBMwEYIPYXV0aC5iZWFtbXAuY29tMCMGA1UdIAQc
MBowCAYGZ4EMAQIBMA4GDCsGAQQBgqkwAQMBATAdBgNVHSUEFjAUBggrBgEFBQcD
AgYIKwYBBQUHAwEwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL2MuY2YtYi5zc2wu
Y29tL0Nsb3VkZmxhcmUtVExTLUktRTEuY3JsMA4GA1UdDwEB/wQEAwIHgDAPBgkr
BgEEAYLaSywEAgUAMIIBBQYKKwYBBAHWeQIEAgSB9gSB8wDxAHcAEvFONL1TckyE
BhnDjz96E/jntWKHiJxtMAWE6+WGJjoAAAGYcrT2NAAABAMASDBGAiEA6iZ9etsj
yGtGhFM9e2s7YrXu/rTkhMQlxc2oLNNxmPACIQD/w5MpmINKk2yqpg5vSqWfP6FU
yy/n3JfUPqg5Rnc0agB2AMz7D2qFcQll/pWbU87psnwi6YVcDZeNtql+VMD+TA2w
AAABmHK09m0AAAQDAEcwRQIgMDLptDYnwSPd6EgcaGLq4kGKQn9UgIcL0aEjbw69
CLYCIQCH//5jrh/vonyHlNLsUJmCgJf1ly5CzAOvStXicWmqeDAKBggqhkjOPQQD
AgNIADBFAiEAlQPc7WADhKTwf0POfyG/PJpBY5kPH1g0Q6wU+VS7mZ0CID4AXrX7
hFmbQ12TdD7+rFf1EcxcNjifdC1nfGwEIvUD
-----END CERTIFICATE-----
Subject:C = US, O = "CLOUDFLARE, INC.", CN = Cloudflare TLS Issuing ECC CA 1
Issuer:C = US, O = SSL Corporation, CN = SSL.com TLS Transit ECC CA R2
Version:2
Serial Number:2c3fa2692f4113bd3b7fe5b604b49d4d
Signature Algorithm:ecdsa-with-SHA384
Public Key Algorithm:id-ecPublicKey
X509v3 Basic Constraints:CA:TRUE, pathlen:0
X509v3 Authority Key Identifier:32:A2:C7:D8:58:8B:FF:7F:C0:3C:F2:55:69:33:EC:CE:CC:1F:BC:97
Authority Information Access:CA Issuers - URI:http://cert.ssl.com/SSL.com-TLS-T-ECC-R2.cer
X509v3 Certificate Policies:Policy: X509v3 Any Policy
X509v3 Extended Key Usage:TLS Web Client Authentication, TLS Web Server Authentication
X509v3 CRL Distribution Points:Full Name:
URI:http://crls.ssl.com/SSL.com-TLS-T-ECC-R2.crl
X509v3 Subject Key Identifier:9C:C4:09:72:47:18:17:7B:A7:1A:89:B3:92:35:D5:E1:03:8C:FE:92
X509v3 Key Usage:Digital Signature, Certificate Sign, CRL Sign
Start date:Oct 31 17:17:49 2023 GMT
Expire date:Oct 28 17:17:48 2033 GMT
Signature:30:65:02:31:00:bd:12:93:74:70:79:1e:ae:1b:56:92:1c:5d:c9:80:74:29:b6:e6:cf:f7:1a:19:c9:49:b3:1d:26:be:49:27:58:e7:04:c6:4b:1e:6a:02:8c:2b:2c:f0:a9:2e:2a:36:3c:02:30:5d:01:a0:63:37:f9:43:30:ff:d4:1b:2e:f3:b5:ab:51:c2:15:b4:b8:b1:af:92:90:c0:a0:5a:14:0c:88:27:b3:8e:89:68:16:d0:75:7f:34:0d:54:7a:e4:9e:d3:39:8d:
-----BEGIN CERTIFICATE-----
MIIC5DCCAmqgAwIBAgIQLD+iaS9BE707f+W2BLSdTTAKBggqhkjOPQQDAzBPMQsw
CQYDVQQGEwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSYwJAYDVQQDDB1T
U0wuY29tIFRMUyBUcmFuc2l0IEVDQyBDQSBSMjAeFw0yMzEwMzExNzE3NDlaFw0z
MzEwMjgxNzE3NDhaMFIxCzAJBgNVBAYTAlVTMRkwFwYDVQQKDBBDTE9VREZMQVJF
LCBJTkMuMSgwJgYDVQQDDB9DbG91ZGZsYXJlIFRMUyBJc3N1aW5nIEVDQyBDQSAx
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEByHHIHytNSzTS+F3JA7hHMDGd2cp
cY9i3MLTKmE6DJTKc6JwvW50pwKodvd2Qj4RAAy2jSejsVgw5jeh6syt3KOCASMw
ggEfMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAUMqLH2FiL/3/APPJV
aTPszswfvJcwSAYIKwYBBQUHAQEEPDA6MDgGCCsGAQUFBzAChixodHRwOi8vY2Vy
dC5zc2wuY29tL1NTTC5jb20tVExTLVQtRUNDLVIyLmNlcjARBgNVHSAECjAIMAYG
BFUdIAAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMD0GA1UdHwQ2MDQw
MqAwoC6GLGh0dHA6Ly9jcmxzLnNzbC5jb20vU1NMLmNvbS1UTFMtVC1FQ0MtUjIu
Y3JsMB0GA1UdDgQWBBScxAlyRxgXe6caibOSNdXhA4z+kjAOBgNVHQ8BAf8EBAMC
AYYwCgYIKoZIzj0EAwMDaAAwZQIxAL0Sk3RweR6uG1aSHF3JgHQptubP9xoZyUmz
HSa+SSdY5wTGSx5qAowrLPCpLio2PAIwXQGgYzf5QzD/1Bsu87WrUcIVtLixr5KQ
wKBaFAyIJ7OOiWgW0HV/NA1UeuSe0zmN
-----END CERTIFICATE-----
Subject:C = US, O = SSL Corporation, CN = SSL.com TLS Transit ECC CA R2
Issuer:C = GB, ST = Greater Manchester, L = Salford, O = Comodo CA Limited, CN = AAA Certificate Services
Version:2
Serial Number:ad8d2df64681a0d36447eaa94fa273c1
Signature Algorithm:sha256WithRSAEncryption
Public Key Algorithm:id-ecPublicKey
X509v3 Authority Key Identifier:A0:11:0A:23:3E:96:F1:07:EC:E2:AF:29:EF:82:A5:7F:D0:30:A4:B4
X509v3 Subject Key Identifier:32:A2:C7:D8:58:8B:FF:7F:C0:3C:F2:55:69:33:EC:CE:CC:1F:BC:97
X509v3 Key Usage:Digital Signature, Certificate Sign, CRL Sign
X509v3 Basic Constraints:CA:TRUE, pathlen:1
X509v3 Extended Key Usage:TLS Web Server Authentication, TLS Web Client Authentication
X509v3 Certificate Policies:Policy: 2.23.140.1.2.1
Policy: 1.3.6.1.4.1.38064.1.3.1.1
X509v3 CRL Distribution Points:Full Name:
URI:http://crl.comodoca.com/AAACertificateServices.crl
Authority Information Access:OCSP - URI:http://ocsp.comodoca.com
Start date:Jun 21 00:00:00 2024 GMT
Expire date:Dec 31 23:59:59 2028 GMT
Signature:1e:28:2f:80:a1:29:a2:86:65:56:4a:f2:e0:17:8e:3f:30:bc:57:66:e3:9b:af:85:4f:ed:d7:84:1e:1f:96:f0:11:37:8a:89:04:17:06:06:b8:fc:dc:b3:ce:fa:5f:ba:81:32:71:a9:ed:5f:eb:47:97:f9:ae:c2:99:ae:1d:3d:19:e8:82:98:a0:80:9a:33:13:88:92:d7:13:17:8a:87:bf:14:16:d9:62:2d:1e:33:a0:96:b4:e3:aa:55:c9:5d:52:fe:dc:70:8e:eb:44:c4:96:84:97:f1:e5:06:b2:a7:cb:42:47:3f:ff:3d:cb:6f:88:33:d7:5e:fe:7e:40:db:9c:fb:7c:fb:64:44:ab:74:82:bd:a0:06:86:58:7f:95:65:9f:1e:a4:c0:88:77:9d:fe:aa:b3:05:26:2a:aa:f7:e3:36:58:48:7d:79:cf:9e:17:c0:bf:f3:e9:39:43:b5:3e:6c:42:10:01:18:ae:0f:95:a1:2f:8e:f8:40:5d:d7:39:13:d1:5e:c2:7e:b3:e9:8f:7d:1c:00:cb:36:87:e9:38:a4:f3:30:70:bb:81:dc:ab:b8:4e:77:01:4d:1c:ad:e4:ad:20:6c:9d:e9:43:44:64:f4:79:ae:c0:ec:f9:40:06:7e:da:7d:6a:e1:39:40:a4:9c:c1:7f:01:6b:08:38:
-----BEGIN CERTIFICATE-----
MIID0DCCArigAwIBAgIRAK2NLfZGgaDTZEfqqU+ic8EwDQYJKoZIhvcNAQELBQAw
ezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0yNDA2MjEwMDAwMDBaFw0y
ODEyMzEyMzU5NTlaME8xCzAJBgNVBAYTAlVTMRgwFgYDVQQKDA9TU0wgQ29ycG9y
YXRpb24xJjAkBgNVBAMMHVNTTC5jb20gVExTIFRyYW5zaXQgRUNDIENBIFIyMHYw
EAYHKoZIzj0CAQYFK4EEACIDYgAEZOd9mQNTXJEe6vjYI62hvyziY4nvKGj27dfw
7Ktorncr5HaXG1Dr21koLW+4NrmrjZfKTCKe7onZAj/9enM6kI0rzC86N4PaDbQt
RRtzcgllX3ghPeeLZj9H/Qkp1hQPo4IBJzCCASMwHwYDVR0jBBgwFoAUoBEKIz6W
8Qfs4q8p74Klf9AwpLQwHQYDVR0OBBYEFDKix9hYi/9/wDzyVWkz7M7MH7yXMA4G
A1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEBMB0GA1UdJQQWMBQGCCsG
AQUFBwMBBggrBgEFBQcDAjAjBgNVHSAEHDAaMAgGBmeBDAECATAOBgwrBgEEAYKp
MAEDAQEwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v
QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNAYIKwYBBQUHAQEEKDAmMCQGCCsG
AQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wDQYJKoZIhvcNAQELBQAD
ggEBAB4oL4ChKaKGZVZK8uAXjj8wvFdm45uvhU/t14QeH5bwETeKiQQXBga4/Nyz
zvpfuoEycantX+tHl/muwpmuHT0Z6IKYoICaMxOIktcTF4qHvxQW2WItHjOglrTj
qlXJXVL+3HCO60TEloSX8eUGsqfLQkc//z3Lb4gz117+fkDbnPt8+2REq3SCvaAG
hlh/lWWfHqTAiHed/qqzBSYqqvfjNlhIfXnPnhfAv/PpOUO1PmxCEAEYrg+VoS+O
+EBd1zkT0V7CfrPpj30cAMs2h+k4pPMwcLuB3Ku4TncBTRyt5K0gbJ3pQ0Rk9Hmu
wOz5QAZ+2n1q4TlApJzBfwFrCDg=
-----END CERTIFICATE-----

View File

@@ -2,7 +2,7 @@
# your system. Help is available in the configuration.nix(5) man page # your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help). # and in the NixOS manual (accessible by running nixos-help).
{ config, pkgs, master, lib, inputs, ... }: { config, pkgs, master, lib, pkgs-master, ... }:
{ {
imports = imports =
@@ -17,13 +17,14 @@
boot.loader.grub.efiSupport = true; boot.loader.grub.efiSupport = true;
boot.initrd.systemd.enable = true; boot.initrd.systemd.enable = true;
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
boot.loader.grub.timeoutStyle = "hidden";
services.avahi = { services.avahi = {
enable = true; enable = true;
nssmdns4 = true; nssmdns4 = true;
openFirewall = true; openFirewall = true;
}; };
hardware.graphics.enable = true;
boot = { boot = {
@@ -41,6 +42,22 @@ boot = {
# Enable "Silent Boot" # Enable "Silent Boot"
consoleLogLevel = 0; consoleLogLevel = 0;
initrd.verbose = false; initrd.verbose = false;
kernelPackages = pkgs.linuxPackages_zen;
kernelModules = [ "amdgpu" ];
kernelPatches = [
/*{
name = "dsc";
patch = ../../patches/bigscreen_1.patch;
}
{
name = "dsc2";
patch = ../../patches/bigscreen_2.patch;
}*/
/*{
name = "dsc15";
patch = ../../patches/bigscreen_15.patch;
}*/
];
kernelParams = [ kernelParams = [
"quiet" "quiet"
"splash" "splash"
@@ -50,14 +67,22 @@ boot = {
"rd.udev.log_level=3" "rd.udev.log_level=3"
"udev.log_priority=3" "udev.log_priority=3"
]; ];
extraModprobeConfig = ''
options bluetooth disable_ertm=Y
'';
# Hide the OS choice for bootloaders. # Hide the OS choice for bootloaders.
# It's still possible to open the bootloader list by pressing any key # It's still possible to open the bootloader list by pressing any key
# It will just not appear on screen unless a key is pressed # It will just not appear on screen unless a key is pressed
loader.timeout = 0; loader.timeout = 5;
}; };
boot.extraModulePackages = with config.boot.kernelPackages; [ hid-tmff2 ];
services.udev.extraRules = ''
ACTION=="add", KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="35bd", ATTRS{idProduct}=="0101", TAG+="uaccess", MODE="0660"
'';
boot.extraModulePackages = with config.boot.kernelPackages; [ hid-tmff2 xpadneo ];
networking.hostName = "nixos"; # Define your hostname. networking.hostName = "nixos"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
@@ -67,13 +92,16 @@ boot = {
# Enable networking # Enable networking
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
security.pki.certificateFiles = [ ./certs/beammp.pem ];
hardware.bluetooth.enable = true; hardware.bluetooth.enable = true;
hardware.bluetooth.package = pkgs.bluez;
hardware.xpadneo.enable = true;
nixpkgs.config.permittedInsecurePackages = [ nixpkgs.config.permittedInsecurePackages = [
"electron-31.7.7" "electron-31.7.7"
"mbedtls-2.28.10"
]; ];
environment.variables.AMD_VULKAN_ICD = "RADV"; environment.variables.AMD_VULKAN_ICD = "RADV";
@@ -81,6 +109,7 @@ boot = {
# Set your time zone. # Set your time zone.
time.timeZone = "America/Chicago"; time.timeZone = "America/Chicago";
environment.sessionVariables.NIXOS_OZONE_WL = "1"; environment.sessionVariables.NIXOS_OZONE_WL = "1";
environment.sessionVariables.SDL_GAMECONTROLLERCONFIG = "03002f67c4100000c082000011010000,Shifter,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,platform:Linux";
# Select internationalisation properties. # Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8"; i18n.defaultLocale = "en_US.UTF-8";
@@ -104,18 +133,25 @@ boot = {
services.desktopManager.plasma6.enable = false; services.desktopManager.plasma6.enable = false;
services.displayManager.sddm.enable = false; services.displayManager.sddm.enable = false;
services.displayManager.cosmic-greeter.enable = false; services.displayManager.cosmic-greeter.enable = false;
services.desktopManager.cosmic.enable = false; services.desktopManager.cosmic.enable = true;
services.desktopManager.gnome.enable = false;
services.displayManager.gdm.enable = false;
programs.hyprland = {
withUWSM = true;
enable = true;
};
/*services.displayManager = { /*services.displayManager = {
autoLogin.enable = true; autoLogin.enable = true;
autoLogin.user = "joshuaelm"; autoLogin.user = "joshuaelm";
};*/ };*/
security.pam.services.hyprlock = {}; security.pam.services.hyprlock = {};
programs.noisetorch.enable = true;
services.greetd = { services.greetd = {
enable = true; enable = true;
settings = rec { settings = rec {
initial_session = { initial_session = {
command = "${pkgs.hyprland}/bin/Hyprland"; command = "dbus-launch ${pkgs.hyprland}/bin/Hyprland";
user = "joshuaelm"; user = "joshuaelm";
}; };
default_session = initial_session; default_session = initial_session;
@@ -126,6 +162,7 @@ boot = {
programs.steam.gamescopeSession.enable = true; programs.steam.gamescopeSession.enable = true;
# Polkit # Polkit
security.polkit.enable = true; security.polkit.enable = true;
@@ -139,6 +176,8 @@ boot = {
excludePackages = [ pkgs.xterm ]; excludePackages = [ pkgs.xterm ];
}; };
# Enable Swap # Enable Swap
/*swapDevices = [ { /*swapDevices = [ {
@@ -164,8 +203,44 @@ boot = {
# use the example session manager (no others are packaged yet so this is enabled by default, # 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) # no need to redefine it in your config for now)
#media-session.enable = true; #media-session.enable = true;
wireplumber.configPackages = [
(pkgs.writeTextDir "share/wireplumber/wireplumber.conf.d/alsa.conf" ''
monitor.alsa.rules = [
{
matches = [
{
device.name = "~alsa_card.*"
}
]
actions = {
update-props = {
# Device settings
api.alsa.use-acp = true
}
}
}
{
matches = [
{
node.name = "~alsa_input.*"
}
{
node.name = "~alsa_output.*"
}
]
actions = {
# Node settings
update-props = {
session.suspend-timeout-seconds = 0
}
}
}
]
'')
];
}; };
hardware.pulseaudio.configFile = pkgs.runCommand "default.pa" {} '' services.pulseaudio.configFile = pkgs.runCommand "default.pa" {} ''
sed 's/module-udev-detect$/module-udev-detect tsched=0/' \ sed 's/module-udev-detect$/module-udev-detect tsched=0/' \
${pkgs.pulseaudio}/etc/pulse/default.pa > $out ${pkgs.pulseaudio}/etc/pulse/default.pa > $out
''; '';
@@ -180,20 +255,20 @@ boot = {
{ {
name = "libpipewire-module-protocol-pulse"; name = "libpipewire-module-protocol-pulse";
args = { args = {
pulse.min.req = "32/48000"; pulse.min.req = "128/48000";
pulse.default.req = "32/48000"; pulse.default.req = "128/48000";
pulse.max.req = "32/48000"; pulse.max.req = "128/48000";
pulse.min.quantum = "32/48000"; pulse.min.quantum = "128/48000";
pulse.max.quantum = "32/48000"; pulse.max.quantum = "128/48000";
}; };
} }
]; ];
stream.properties = { stream.properties = {
node.latency = "32/48000"; node.latency = "128/48000";
resample.quality = 1; resample.quality = 1;
}; };
}; };
hardware.pulseaudio.extraConfig = '' services.pulseaudio.extraConfig = ''
.nofail .nofail
unload-module module-suspend-on-idle unload-module module-suspend-on-idle
.fail .fail
@@ -208,11 +283,19 @@ hardware.pulseaudio.extraConfig = ''
users.users.joshuaelm = { users.users.joshuaelm = {
isNormalUser = true; isNormalUser = true;
description = "Joshua Elmasri"; description = "Joshua Elmasri";
extraGroups = [ "networkmanager" "wheel" "adbusers" ]; extraGroups = [ "networkmanager" "input" "wheel" "adbusers" ];
packages = with pkgs; [ packages = with pkgs; [
# thunderbird # thunderbird
]; ];
shell = pkgs.bash;
}; };
/*programs.bash.interactiveShellInit = ''
if ! [ "$TERM" = "dumb" ] && [ -z "$BASH_EXECUTION_STRING" ]; then
exec nu
fi
'';*/
programs.fish.enable = false;
nix.optimise.automatic = true; nix.optimise.automatic = true;
@@ -233,8 +316,8 @@ hardware.pulseaudio.extraConfig = ''
}; };
fileSystems."/mnt/More-Games" = { /*fileSystems."/mnt/More-Games" = {
device = "/dev/disk/by-uuid/eb1d5913-63fb-4fd8-8299-b428fd2d5ea0"; device = "/dev/sdb1";
fsType = "btrfs"; fsType = "btrfs";
options = [ options = [
"users" "users"
@@ -242,7 +325,7 @@ hardware.pulseaudio.extraConfig = ''
"x-gvfs-show" "x-gvfs-show"
"exec" "exec"
]; ];
}; };*/
@@ -259,6 +342,8 @@ hardware.pulseaudio.extraConfig = ''
]; ];
services.input-remapper.enable = true;
# List packages installed in system profile. To search, run: # List packages installed in system profile. To search, run:
# $ nix search wget # $ nix search wget
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
@@ -279,77 +364,56 @@ hardware.pulseaudio.extraConfig = ''
git git
bibata-cursors bibata-cursors
killall killall
usbutils
mangohud mangohud
aonsoku ffmpeg
teamspeak3 oversteer
cemu # cemu broken with latest update
teamspeak6-client oterm
unetbootin wget
labymod-launcher wlx-overlay-s
unzip unzip
winetricks winetricks
cowsay cowsay
pfetch pfetch
ryujinx ryubing
hyprpolkitagent
gomatrix gomatrix
python3 python3
pavucontrol pavucontrol
gnomeExtensions.tray-icons-reloaded bluebubbles
cider
xfce.thunar xfce.thunar
gnomeExtensions.open-bar parallel-launcher
wallust corectrl
wiremix
termsonic
steamtinkerlaunch steamtinkerlaunch
grub2
cargo
inputs.zen-browser.packages."${system}".default
qalculate-qt
kdePackages.kdenlive kdePackages.kdenlive
wineWowPackages.wayland
blueman blueman
fuse
linux-wallpaperengine
ntfs3g
lapce lapce
prismlauncher prismlauncher
librewolf
protonup-qt protonup-qt
mlt
nspr
nss_latest
nssTools
qt5.full
dconf
openjdk23
heroic heroic
protontricks protontricks
gamescope gamescope
playerctl playerctl
libsForQt5.qt5.qtwebsockets
wine wine
alvr
bottles
cava
pop-icon-theme
gnome-tweaks
libnotify
libreoffice libreoffice
hunspell
hunspellDicts.en_US
neovide neovide
flatpak flatpak
gradience
]; ];
# VirtualBox # VirtualBox
virtualisation.virtualbox.host.enable = true; virtualisation.virtualbox.host.enable = false;
users.extraGroups.vboxusers.members = [ "user-with-access-to-virtualbox" ]; users.extraGroups.vboxusers.members = [ "user-with-access-to-virtualbox" ];
services.flatpak.enable = true;
services.xserver.enableTCP = true;
services.sunshine = { services.sunshine = {
enable = true; enable = true;
autoStart = true; autoStart = false;
capSysAdmin = true; capSysAdmin = true;
openFirewall = true; openFirewall = true;
@@ -360,6 +424,23 @@ hardware.pulseaudio.extraConfig = ''
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
}; };
hardware.steam-hardware.enable=true;
services.monado = {
enable = false;
defaultRuntime = true; # Register as default OpenXR runtime
};
services.wivrn.enable = true;
services.wivrn.package = pkgs-master.wivrn;
services.wivrn.defaultRuntime = true;
systemd.user.services.monado.environment = {
STEAMVR_LH_ENABLE = "1";
XRT_COMPOSITOR_COMPUTE = "1";
WMR_HANDTRACKING = "0";
};
programs.alvr.enable = true;
programs.alvr.openFirewall = true;
nixpkgs.config.packageOverrides = pkgs: { nixpkgs.config.packageOverrides = pkgs: {
steam = pkgs.steam.override { steam = pkgs.steam.override {
@@ -399,10 +480,11 @@ hardware.pulseaudio.extraConfig = ''
# Enable the OpenSSH daemon. # Enable the OpenSSH daemon.
services.openssh.enable = true; services.openssh.enable = true;
services.openssh.allowSFTP = true; services.openssh.allowSFTP = true;
services.openssh.settings.PasswordAuthentication = true;
# Open ports in the firewall. # Open ports in the firewall.
networking.firewall.allowedTCPPorts = [ 7860 3042 47990 48010 5001 ]; networking.firewall.allowedTCPPorts = [ 7860 3042 3246 9943 9944 7801 11434 47990 48010 5001 8188 ];
networking.firewall.allowedUDPPorts = [ 7860 3042 47990 4800 48010 ]; networking.firewall.allowedUDPPorts = [ 7860 8188 9943 9944 3042 47990 3246 11434 7801 4800 48010 ];
# Or disable the firewall altogether. # Or disable the firewall altogether.
# networking.firewall.enable = false; # networking.firewall.enable = false;

View File

@@ -14,13 +14,12 @@
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
fileSystems."/" = fileSystems."/" =
{ device = "/dev/disk/by-uuid/b6501e43-45c0-46bc-b77f-2f42c3a15572"; { device = "/dev/disk/by-uuid/6452f60b-602c-42ae-bff6-7b0a35e59bfb";
fsType = "btrfs"; fsType = "ext4";
options = [ "subvol=@" ];
}; };
fileSystems."/boot" = fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/FE68-923D"; { device = "/dev/disk/by-uuid/9947-B99A";
fsType = "vfat"; fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ]; options = [ "fmask=0077" "dmask=0077" ];
}; };

View File

@@ -6,12 +6,11 @@
home.username = "joshuaelm"; home.username = "joshuaelm";
home.homeDirectory = "/home/joshuaelm"; home.homeDirectory = "/home/joshuaelm";
imports = [ ../../modules/nvim ../../modules/stylix.nix ../../modules/hypr/hyprland_desktop.nix ../../modules/ashell/default.nix ]; imports = [ ../../modules/nvim ../../modules/stylix.nix ../../modules/hypr ../../modules/ashell ../../modules/waybar/waybar.nix ../../modules/zen ../../modules/rofi ../../modules/kitty ../../modules/cava ../../modules/starship ../../modules/fuzzel ../../modules/nushell ];
home.packages = [ home.packages = [
pkgs.element-desktop pkgs.element-desktop
pkgs.waybar
pkgs.signal-desktop-bin pkgs.signal-desktop-bin
pkgs.swaybg pkgs.swaybg
pkgs.gpu-screen-recorder pkgs.gpu-screen-recorder
@@ -21,63 +20,17 @@
]; ];
programs.hyprlock.enable = true; programs.hyprlock.enable = true;
programs.kitty.enable = true; programs.starship.enable = true;
programs.starship.enableFishIntegration = true;
programs.cava.enable = true; programs.cava.enable = true;
programs.btop.enable = true; programs.btop.enable = true;
programs.rofi.enable = true;
programs.rofi.package = pkgs.rofi-wayland;
services.hyprpaper.enable = true; services.hyprpaper.enable = true;
wayland.windowManager.hyprland.enable = true; home.shell.enableFishIntegration = true;
home.file.".icons/default".source = "${pkgs.bibata-cursors}/share/icons/Bibata-Modern-Classic"; home.file.".icons/default".source = "${pkgs.bibata-cursors}/share/icons/Bibata-Modern-Classic";
services.mpd-mpris.enable = true; services.mpd-mpris.enable = true;
programs.rofi.extraConfig = {
show-icons = true;
drun-display-format = "{icon} {name}";
hide-scrollbar = true;
sidebar-mode = true;
dpi = 110;
font = "FreeSans Regular 12";
icon-theme = "Gruvbox-Plus-Dark";
};
programs.rofi.theme = {
window.height = 600;
window.width = 600;
window.border-radius = 10;
element = {
padding = 5;
border-radius = 10;
};
inputbar.padding = 14;
listview = {
padding = 8;
border-radius = "0 0 10 10";
border = "2 2 2 2";
dynamic = false;
};
"element-text element-icon" = {
size = 40;
margin = "0 10 0 0";
};
mainbox.children = "inputbar, message, listview";
mainbox.spacing = 0;
};
programs.kitty.extraConfig = ''
font_family Fira Code Nerd Font
bold_font auto
italic_font auto
bold_italic_font auto
confirm_os_window_close 0
cursor_shape beam
cursor_trail 3
'';
# This value determines the Home Manager release that your # This value determines the Home Manager release that your
# configuration is compatible with. This helps avoid breakage # configuration is compatible with. This helps avoid breakage
# when a new Home Manager release introduces backwards # when a new Home Manager release introduces backwards

View File

@@ -114,8 +114,6 @@
enable = true; enable = true;
}; };
hardware.asahi.useExperimentalGPUDriver = true;
hardware.asahi.experimentalGPUInstallMode = "replace";
# Configure keymap in X11 # Configure keymap in X11
services.xserver.xkb = { services.xserver.xkb = {
@@ -136,8 +134,11 @@
description = "Joshua Elmasri"; description = "Joshua Elmasri";
extraGroups = [ "networkmanager" "wheel" "adbusers" "dialout" ]; extraGroups = [ "networkmanager" "wheel" "adbusers" "dialout" ];
packages = with pkgs; []; packages = with pkgs; [];
shell = pkgs.fish;
}; };
programs.fish.enable = true;
programs.adb.enable = true; programs.adb.enable = true;
# Allow unfree packages # Allow unfree packages
@@ -176,8 +177,8 @@
git git
bibata-cursors bibata-cursors
element-desktop element-desktop
rofi-wayland #inputs.zen-browser.packages."${system}".default
inputs.zen-browser.packages.${pkgs.system}.default rofi
playerctl playerctl
cava cava
moonlight-qt moonlight-qt
@@ -205,8 +206,9 @@
# Open ports in the firewall. # Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ]; # networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ]; # networking.firewall.allowedUDPPorts = [ ... ];
# networking.firewall.allowedTCPPortRanges = [ { from = 42000; to = 420001; } ];
# Or disable the firewall altogether. # Or disable the firewall altogether.
# networking.firewall.enable = false; networking.firewall.enable = false;
# This value determines the NixOS release from which the default # This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions # settings for stateful data, like file locations and database versions

View File

@@ -8,18 +8,18 @@
[ (modulesPath + "/installer/scan/not-detected.nix") [ (modulesPath + "/installer/scan/not-detected.nix")
]; ];
boot.initrd.availableKernelModules = [ "usb_storage" ]; boot.initrd.availableKernelModules = [ "usbhid" "usb_storage" ];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ]; boot.kernelModules = [ ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
fileSystems."/" = fileSystems."/" =
{ device = "/dev/disk/by-uuid/089c3a91-0f69-4a24-8ca0-e7a4a817be07"; { device = "/dev/disk/by-uuid/b80e3211-820e-48b1-9c64-97c275b26de2";
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/boot" = fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/4267-12F5"; { device = "/dev/disk/by-uuid/60EA-1224";
fsType = "vfat"; fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ]; options = [ "fmask=0022" "dmask=0022" ];
}; };
@@ -31,6 +31,7 @@
# still possible to use this option, but it's recommended to use it in conjunction # still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true; networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enu1u4c2.useDHCP = lib.mkDefault true;
# networking.interfaces.wlan0.useDHCP = lib.mkDefault true; # networking.interfaces.wlan0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";

View File

@@ -6,24 +6,22 @@
home.username = "joshuaelm"; home.username = "joshuaelm";
home.homeDirectory = "/home/joshuaelm"; home.homeDirectory = "/home/joshuaelm";
imports = [ ../../modules/nvim ../../modules/stylix.nix ../../modules/hypr/hyprland_laptop.nix ../../modules/ashell/default.nix ]; imports = [ ../../modules/nvim ../../modules/stylix.nix ../../modules/hypr/hyprland_laptop.nix ../../modules/waybar/waybar.nix ../../modules/ashell ../../modules/zen ../../modules/rofi ../../modules/kitty ../../modules/starship ];
home.packages = [ home.packages = [
pkgs.element-desktop pkgs.element-desktop
pkgs.waybar
pkgs.signal-desktop-bin pkgs.signal-desktop-bin
pkgs.supersonic pkgs.supersonic
pkgs.libreoffice
pkgs.adw-gtk3 pkgs.adw-gtk3
pkgs.thunderbird
pkgs.xfce.thunar pkgs.xfce.thunar
]; ];
programs.hyprlock.enable = true; programs.hyprlock.enable = true;
programs.kitty.enable = true;
programs.cava.enable = true; programs.cava.enable = true;
programs.btop.enable = true; programs.btop.enable = true;
programs.rofi.enable = true;
programs.rofi.package = pkgs.rofi-wayland;
services.hyprpaper.enable = true; services.hyprpaper.enable = true;
wayland.windowManager.hyprland.enable = true; wayland.windowManager.hyprland.enable = true;
@@ -41,50 +39,6 @@
services.mpd-mpris.enable = true; services.mpd-mpris.enable = true;
programs.rofi.extraConfig = {
show-icons = true;
drun-display-format = "{icon} {name}";
hide-scrollbar = true;
sidebar-mode = true;
dpi = 110;
font = "FreeSans Regular 12";
icon-theme = "Gruvbox-Plus-Dark";
};
programs.rofi.theme = {
window.height = 600;
window.width = 600;
window.border-radius = 10;
element = {
padding = 5;
border-radius = 10;
};
inputbar.padding = 14;
listview = {
padding = 8;
border-radius = "0 0 10 10";
border = "2 2 2 2";
dynamic = false;
};
"element-text element-icon" = {
size = 40;
margin = "0 10 0 0";
};
mainbox.children = "inputbar, message, listview";
mainbox.spacing = 0;
};
programs.kitty.extraConfig = ''
font_family Fira Code Nerd Font
bold_font auto
italic_font auto
bold_italic_font auto
confirm_os_window_close 0
cursor_shape beam
cursor_trail 3
'';
# This value determines the Home Manager release that your # This value determines the Home Manager release that your
# configuration is compatible with. This helps avoid breakage # configuration is compatible with. This helps avoid breakage
# when a new Home Manager release introduces backwards # when a new Home Manager release introduces backwards

View File

@@ -26,11 +26,9 @@
workspaces = { workspaces = {
visibility_mode = "MonitorSpecific"; visibility_mode = "MonitorSpecific";
}; };
};
settings = {
remove_airplane_btn = true; remove_airplane_btn = true;
appearance = { appearance = {
style = "Islands"; style = "Solid";
}; };
}; };
}; };

5
modules/cava/default.nix Normal file
View File

@@ -0,0 +1,5 @@
{pkgs, ...}:
{
programs.cava.enable = true;
}

9
modules/fish/default.nix Normal file
View File

@@ -0,0 +1,9 @@
{ pkgs, ... }:
{
programs.fish.enable = true;
home.shell.enableFishIntegration = true;
programs.fish.functions = {
fish_greeting = "";
};
}

View File

@@ -0,0 +1,39 @@
{pkgs, lib, config,...}:
{
programs.fuzzel.enable = true;
programs.fuzzel.settings = lib.mkAfter {
main = {
dpi-aware = false;
font = lib.mkForce "JetBrainsMono NF SemiBold:size=14";
placeholder = " Search...";
icons-enabled = true;
use-bold = true;
fields = lib.mkForce "name,generic,comment,categories,filename,keywords,exec";
terminal = "kitty";
prompt = "";
show-actions = false;
anchor = "center";
x-margin = 15;
y-margin = 0;
lines = 10;
width = 50;
horizontal-pad = 20;
vertical-pad = 20;
inner-pad = 5;
line-height = 30;
letter-spacing = 0;
image-size-ratio = 0.2;
exit-on-keyboard-focus-loss = true;
};
border = {
radius = 5;
width = 2;
};
dmenu = {
mode = "text";
};
colors = {
prompt = lib.mkForce "${config.lib.stylix.colors.base00-hex}ff";
};
};
}

View File

@@ -1,21 +1,26 @@
{pkgs, ...}: {pkgs, ...}:
{ {
services.hyprpolkitagent.enable = true;
wayland.windowManager.hyprland.enable = true;
wayland.windowManager.hyprland.package = null;
wayland.windowManager.hyprland.portalPackage = null;
wayland.windowManager.hyprland.extraConfig = '' wayland.windowManager.hyprland.extraConfig = ''
autogenerated = 0 # remove this line to remove the warning autogenerated = 0 # remove this line to remove the warning
# See https://wiki.hyprland.org/Configuring/Monitors/ # See https://wiki.hyprland.org/Configuring/Monitors/
#monitor = HDMI-A-1, 3840x2160@60, 0x0, 1.5 monitor = HDMI-A-1, 3840x2160@120, 0x0, auto, bitdepth, 10, sdrsaturation, 1, sdrbrightness, 1
monitor = HDMI-A-1, disable #monitor = HDMI-A-1, disable
#monitor = sunshine, highres@highrr, 0x0, 1 #monitor = sunshine, highres@highrr, 0x0, 1
monitor = DP-1, highres@highrr, 0x0, 1 monitor = DP-1, highres@highrr, 0x0, 1
#monitor = DP-1, highres@highrr, 0x0, 1, bitdepth, 10, cm, hdr, sdrsaturation, 1, sdrbrightness, 1 #monitor = DP-1, highres@highrr, 0x0, 1, bitdepth, 10, cm, hdr, sdrsaturation, 1, sdrbrightness, 1
exec-once = hyprctl dispatch workspace 1 exec-once = hyprctl dispatch workspace 1
#exec-once = linux-wallpaperengine --screen-root HDMI-A-1 --silent --fps 60 3000562427 #exec-once = linux-wallpaperengine --screen-root HDMI-A-1 --silent --fps 60 3000562427
exec-once = hyprlock exec-once = hyprlock
# exec-once = waybar exec-once = waybar
exec-once = ashell exec-once = pw-metadata -n settings 0 clock.force-quantum 2048
# exec-once = ashell
exec-once = systemctl --user start hyprpolkitagent exec-once = systemctl --user start hyprpolkitagent
exec-once = sunshine exec-once = sunshine
# See https://wiki.hyprland.org/Configuring/Keywords/ for more # See https://wiki.hyprland.org/Configuring/Keywords/ for more
@@ -23,11 +28,13 @@ exec-once = sunshine
# Execute your favorite apps at launch # Execute your favorite apps at launch
# exec-once = waybar & hyprpaper & firefox # exec-once = waybar & hyprpaper & firefox
debug:full_cm_proto=true
# Set programs that you use # Set programs that you use
$terminal = kitty $terminal = kitty nu
$fileManager = thunar $fileManager = thunar
$menu = rofi -show drun $menu = fuzzel
$bar = waybar
# Some default env vars. # Some default env vars.
env = XCURSOR_SIZE,24 env = XCURSOR_SIZE,24
@@ -51,6 +58,10 @@ input {
sensitivity = 0 # -1.0 - 1.0, 0 means no modification. sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
} }
render {
cm_fs_passthrough = false
}
general { general {
# See https://wiki.hyprland.org/Configuring/Variables/ for more # See https://wiki.hyprland.org/Configuring/Variables/ for more
@@ -63,10 +74,13 @@ general {
allow_tearing = false allow_tearing = false
} }
windowrulev2 = immediate, class:^(cs2)$
decoration { decoration {
# See https://wiki.hyprland.org/Configuring/Variables/ for more # See https://wiki.hyprland.org/Configuring/Variables/ for more
rounding = 10 rounding = 5
blur { blur {
enabled = yes enabled = yes
@@ -109,12 +123,12 @@ layerrule = unset, overlay
gestures { gestures {
# See https://wiki.hyprland.org/Configuring/Variables/ for more # See https://wiki.hyprland.org/Configuring/Variables/ for more
workspace_swipe = off
} }
misc { misc {
# See https://wiki.hyprland.org/Configuring/Variables/ for more # See https://wiki.hyprland.org/Configuring/Variables/ for more
force_default_wallpaper = 0 # Set to 0 to disable the anime mascot wallpapers force_default_wallpaper = 0 # Set to 0 to disable the anime mascot wallpapers
enable_anr_dialog = 0
} }
@@ -130,7 +144,7 @@ misc {
# Window Rules # Window Rules
windowrule = float, class:^(Wiremix)$
# See https://wiki.hyprland.org/Configuring/Keywords/ for more # See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = SUPER $mainMod = SUPER

View File

@@ -1,6 +1,7 @@
{pkgs, ...}: {pkgs, ...}:
{ {
services.hyprpolkitagent.enable
wayland.windowManager.hyprland.extraConfig = '' wayland.windowManager.hyprland.extraConfig = ''
autogenerated = 0 # remove this line to remove the warning autogenerated = 0 # remove this line to remove the warning
@@ -15,8 +16,8 @@ monitor = eDP-1, highres@highrr, 0x0, 1.6
exec-once = hyprctl dispatch workspace 1 exec-once = hyprctl dispatch workspace 1
#exec-once = linux-wallpaperengine --screen-root HDMI-A-1 --silent --fps 60 3000562427 #exec-once = linux-wallpaperengine --screen-root HDMI-A-1 --silent --fps 60 3000562427
exec-once = hyprlock exec-once = hyprlock
# exec-once = waybar exec-once = ashell
exec-once = WGPU_BACKEND=gl ashell # exec-once = WGPU_BACKEND=gl ashell
exec-once = systemctl --user start hyprpolkitagent exec-once = systemctl --user start hyprpolkitagent
# See https://wiki.hyprland.org/Configuring/Keywords/ for more # See https://wiki.hyprland.org/Configuring/Keywords/ for more
@@ -27,7 +28,7 @@ exec-once = systemctl --user start hyprpolkitagent
# Set programs that you use # Set programs that you use
$terminal = kitty $terminal = kitty
$fileManager = thunar $fileManager = thunar
$menu = rofi -show drun $menu = fuzzel
# Some default env vars. # Some default env vars.
env = XCURSOR_SIZE,24 env = XCURSOR_SIZE,24
@@ -69,7 +70,7 @@ general {
decoration { decoration {
# See https://wiki.hyprland.org/Configuring/Variables/ for more # See https://wiki.hyprland.org/Configuring/Variables/ for more
rounding = 10 rounding = 0
blur { blur {
enabled = yes enabled = yes
@@ -110,10 +111,6 @@ dwindle {
layerrule = unset, overlay layerrule = unset, overlay
gestures {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
workspace_swipe = off
}
misc { misc {
# See https://wiki.hyprland.org/Configuring/Variables/ for more # See https://wiki.hyprland.org/Configuring/Variables/ for more

14
modules/kitty/default.nix Normal file
View File

@@ -0,0 +1,14 @@
{ pkgs, ... }:
{
programs.kitty.enable = true;
programs.kitty.extraConfig = ''
font_family Fira Code Nerd Font
bold_font auto
italic_font auto
bold_italic_font auto
confirm_os_window_close 0
cursor_shape beam
cursor_trail 3
'';
}

View File

@@ -0,0 +1,16 @@
{pkgs, config, ...}:
{
programs.nushell = {
enable = true;
extraConfig = ''
$env.config.show_banner = false
'';
};
# Fish like Autocomplete
programs.carapace = {
enable = true;
enableNushellIntegration = true;
};
}

6
modules/nvim/config.nix Normal file
View File

@@ -0,0 +1,6 @@
{
programs.nixvim.opts = {
shiftwidth = 2;
tabstop = 2;
};
}

View File

@@ -1,6 +1,7 @@
{config, pkgs, lib, inputs, ...}: {config, pkgs, lib, inputs, ...}:
{ {
imports = [ ./config.nix ];
programs.nixvim = { programs.nixvim = {
enable = true; enable = true;
plugins.nvim-tree.enable = true; plugins.nvim-tree.enable = true;
@@ -14,7 +15,15 @@
plugins.web-devicons.enable = true; plugins.web-devicons.enable = true;
plugins.which-key.enable = true; plugins.which-key.enable = true;
plugins.cmp-nvim-lsp.enable = true; plugins.cmp-nvim-lsp.enable = true;
plugins.bufferline.enable = true;
plugins.noice.enable = true;
plugins.mini-pairs.enable = true;
plugins.ts-comments.enable = true;
plugins.snacks.enable = true;
plugins.mini-icons.enable = true;
plugins.nui.enable = true;
plugins.telescope.enable = true; plugins.telescope.enable = true;
plugins.indent-blankline.enable = true; plugins.indent-blankline.enable = true;
}; };
} }

View File

@@ -0,0 +1,7 @@
{pkgs, ...}:
{
services.openvpn.servers = {
homeVPN = { config = '' config ./modules/openvpn/homeVPN.ovpn ''; };
};
}

View File

@@ -0,0 +1,134 @@
client
dev tun
proto tcp
remote 150.220.96.4 1194
resolv-retry infinite
nobind
# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup
persist-key
persist-tun
auth-user-pass
remote-cert-tls server
cipher AES-256-CBC
comp-lzo
verb 3
auth SHA1
key-direction 1
reneg-sec 0
redirect-gateway def1
<ca>
-----BEGIN CERTIFICATE-----
MIIEfDCCA2SgAwIBAgIIX7Vfn1rIEkQwDQYJKoZIhvcNAQELBQAwgYExCzAJBgNV
BAYTAlVTMREwDwYDVQQIDAhOZXcgWW9yazERMA8GA1UEBwwITmV3IFlvcmsxFjAU
BgNVBAoMDVViaXF1aXRpIEluYy4xGTAXBgNVBAsMEFVuaUZpX09wZW5WUE5fQ0Ex
GTAXBgNVBAMMEFVuaUZpX09wZW5WUE5fQ0EwHhcNMjUwNzAxMDAzNzE5WhcNNDAw
NjI3MDAzNzE5WjCBgTELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMREw
DwYDVQQHDAhOZXcgWW9yazEWMBQGA1UECgwNVWJpcXVpdGkgSW5jLjEZMBcGA1UE
CwwQVW5pRmlfT3BlblZQTl9DQTEZMBcGA1UEAwwQVW5pRmlfT3BlblZQTl9DQTCC
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALj/Bc0DVwzWk5riE6vWcVqq
iTz5GtoHFlrnm0fce2/UZpXkgVg4oMY3IrDOFBwsoKBOflJhdzfBL37tZ0uTCvvs
9/ICF6EpuKH4Y7dqyV6lZOMJZ90rCZ0e+oX/VN8Z5hIN4fbatBsKeqA73oru+OMm
vipWBfYxFlf5nZN0ky1hrckADf1dN+EEJ7v+Ggu9JK0Vq4tv3qsiAdEzOqq5ptGB
uFOZaZZtOKyjnjoSlYdFku191SeVKUVlYqmaH3azokG9OUsfdLJGEGQ02fRInooi
kbBHZq6hwMqVWpwDN6u37oOALVgAZLK/UGJP7tmEyypHN3nIBERpCCyg/vDaqR0C
AwEAAaOB9TCB8jALBgNVHQ8EBAMCAQYwDAYDVR0TBAUwAwEB/zCBtQYDVR0jBIGt
MIGqgBTPwX8miNgDvzHq8hfCfZw6ElH1AKGBh6SBhDCBgTELMAkGA1UEBhMCVVMx
ETAPBgNVBAgMCE5ldyBZb3JrMREwDwYDVQQHDAhOZXcgWW9yazEWMBQGA1UECgwN
VWJpcXVpdGkgSW5jLjEZMBcGA1UECwwQVW5pRmlfT3BlblZQTl9DQTEZMBcGA1UE
AwwQVW5pRmlfT3BlblZQTl9DQYIIX7Vfn1rIEkQwHQYDVR0OBBYEFM/BfyaI2AO/
MeryF8J9nDoSUfUAMA0GCSqGSIb3DQEBCwUAA4IBAQCMjde9YE2dh46lkzZEf+jF
dm3oRi571XYM4vvlsN4IBGf6e9/mCsZZJO1x/P+f5+p1pkFao5bOCW4Mcyjh441T
JrrWFneY4Rso0fa76K6ufBr/tg0BH/uZxCyn6XfqhNlZOvpjCfNPuEEKl3JcT7mB
F8kCoBr4VBECo3QVOFpO+GUlbx90ah/eHg7Itjv4LRAR6nDwLcIdAw4xqD92n3hN
HbaMGGQuPdPpQ1yBtiVBtBazWj/GJRoqwayuwhmpHqOezwF5wZWV2NGDUpJk6B8O
N9kaWR7fuLhiWdDGO60vewasJzrJJ0FBs8p/nfA9YpEdJM6hyAAGtLHmFaRfI18c
-----END CERTIFICATE-----
</ca>
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
3f2a7bf46921701f5fd0d519811da303
a400d24d06e0d715f30798f9761097e3
c28ef206c9dc6a140b668db9f8d73381
94b0518c10d32f899cf292709bd60385
fb020cef3a31270b1f6c6b9169ab56f7
12c2d2a1a3fb9d262fab2f3567d91372
d03e98a71b123105923e043f5001af09
88ae0e2a64e5ffba348c96eb29c7d4ff
dabfa1b08441d9bdf3498708c798ef01
71a8cb169f3b589ab1f6fb9b5478abb6
4f86a6310f4b36363dba42352e5c1d1d
b3f8c084a5c0ee98374ba3f62f3fe0bb
8c74df88091676c7a942e97dac90edab
b37356bf3e7de3d16e8d0e457de31430
37cd2deaf503cee38032a1e94b4f6d57
de4f5b7026693a1570439930f5662103
-----END OpenVPN Static key V1-----
</tls-auth>
<cert>
-----BEGIN CERTIFICATE-----
MIIEmDCCA4CgAwIBAgIIYFQWWbVqsLUwDQYJKoZIhvcNAQELBQAwgYExCzAJBgNV
BAYTAlVTMREwDwYDVQQIDAhOZXcgWW9yazERMA8GA1UEBwwITmV3IFlvcmsxFjAU
BgNVBAoMDVViaXF1aXRpIEluYy4xGTAXBgNVBAsMEFVuaUZpX09wZW5WUE5fQ0Ex
GTAXBgNVBAMMEFVuaUZpX09wZW5WUE5fQ0EwHhcNMjUwNzAxMDAzNzE5WhcNMzAw
NjMwMDAzNzE5WjCBiTELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMREw
DwYDVQQHDAhOZXcgWW9yazEWMBQGA1UECgwNVWJpcXVpdGkgSW5jLjEdMBsGA1UE
CwwUVW5pRmlfT3BlblZQTl9DbGllbnQxHTAbBgNVBAMMFFVuaUZpX09wZW5WUE5f
Q2xpZW50MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjcFu13VZPUC5
HTLwGa/04hDeMIxLzb8r05LcgY4+6tvBl84ROtZByGW6Oe5ieL43AxolBhLPuqM0
v3rg3DVXLCA59ICUS16HkjiQobZp35ruxKP4YxIHBVxs5BTgC93Q21bVbCHox9bz
yTcGl4z+t3B6d3hrBqG46KAvPLQgxjaS3vSslSznfl92kA8drJskHELy6F4lFuV0
Wkyj8BQ9E6guPaCAopbji91OW21XymtPu6tJLwQhLICosttL1W6lFfA3sT5WC2vc
IuEhgPqa5UOTtoHvsBmbtFP7xc6L3+60cnmDjpKz7hEoK6iQg7V1aHZr0UmadGF2
5S2glTrb4QIDAQABo4IBCDCCAQQwgbUGA1UdIwSBrTCBqoAUz8F/JojYA78x6vIX
wn2cOhJR9QChgYekgYQwgYExCzAJBgNVBAYTAlVTMREwDwYDVQQIDAhOZXcgWW9y
azERMA8GA1UEBwwITmV3IFlvcmsxFjAUBgNVBAoMDVViaXF1aXRpIEluYy4xGTAX
BgNVBAsMEFVuaUZpX09wZW5WUE5fQ0ExGTAXBgNVBAMMEFVuaUZpX09wZW5WUE5f
Q0GCCF+1X59ayBJEMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgeAMBMGA1UdJQQMMAoG
CCsGAQUFBwMCMB0GA1UdDgQWBBStg+rBUt0PoaLZZwSUwyGlOGP2fTANBgkqhkiG
9w0BAQsFAAOCAQEAamBemx+5wVyU82TreQ3dXIUAs+DndmHgL821Pmfo/G4n/rAO
Uaj3Ba14XZXm1sei6bWgv383J+Skvi325HghMqtEdK1rrHy9UTFt2UwEndxUNXJd
+3x83QEykjyiHwTiQ0nOo5Q4OYG0Eg+Bpvh6sLpEtXNrZVNyo+8Zj5hz5DAhc1i4
j6zv9Eg+lvaVQlH9Mld7fiVCIBB2173ThGSn9y5zH0BPHZZbCrKjc+Qj08An4HtX
1QDMhBX4S+4iZFcBE7ZAJ0OtLcKjou16wPP1ECKd9FpIV6FxL/pjK5E1zCXsKmMe
J4Z8W/RTTXqsZlHpri8LLCICBRkLjVF3g88MEw==
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCNwW7XdVk9QLkd
MvAZr/TiEN4wjEvNvyvTktyBjj7q28GXzhE61kHIZbo57mJ4vjcDGiUGEs+6ozS/
euDcNVcsIDn0gJRLXoeSOJChtmnfmu7Eo/hjEgcFXGzkFOAL3dDbVtVsIejH1vPJ
NwaXjP63cHp3eGsGobjooC88tCDGNpLe9KyVLOd+X3aQDx2smyQcQvLoXiUW5XRa
TKPwFD0TqC49oICiluOL3U5bbVfKa0+7q0kvBCEsgKiy20vVbqUV8DexPlYLa9wi
4SGA+prlQ5O2ge+wGZu0U/vFzovf7rRyeYOOkrPuESgrqJCDtXVodmvRSZp0YXbl
LaCVOtvhAgMBAAECggEAA6X3hKHd1s08VmuLfjKNbDOmvEiIFOoEJnEjreceztJl
rgYDYuiSKQzkZf3kJYGW9REufcFsyW8BrW64rDVobz3/FkAohBreBPd7hXK/6jc/
FbfqOlNQjSTe6pNwKe4FPffpc0IZW+qE1YHOI7otvhCt6wNu4bm2aOPig1hX2/7d
Krrrpt8yrtXoBzCvX8qsl2wadanDpbBqzzMlY4N/pbbkNkyNgeQUwpImgHtfL0VT
K+bGzEFrOaAVE/1z598OfPL1yrvIEGwlAX+0jWCySQA4LkepN+IoNYn6wZmMtc0u
355i7xjfxjpzldnaludz0D0l9om7kS6Yin8t92uvDwKBgQC/f8HG4TWwhPxGdwFM
l+p3HxUJLY6Hks2hupuCMGqAuE+Q/sg2MoSz434ZMUSJzSoYc14vPx8JNkgTHCAV
M5+oatLQ5CTPtsXlGc1DVZLuIhMWOYewEzYyz8HuJlTiGFbT5xUZj+rnvtiMBDGD
/GTfvbavEsheeVchPnfJxaEFFwKBgQC9gHwxRfN86ETO00u/IRkZlcKcQNsK3LxF
m0Bsyu08f8BRio5QeMjizkisUaADqnWtqdcQw9T2eS/m+Z+mzkjWsXtrnQlQwNUp
tO52axUo+d+cmjAhDby9CbJSShXaoOQ5XQQDaX02s0MUlnfBkq0qRZinnnsWK8vc
N3SkUK2xxwKBgBbeGLO5HQIxPzbi6yLMWVFUQtzPtd92pluTvxIy2eT5HXdBFYNz
UOlyVxKHEZorB8XXsP2PWhNtifnON/6QJZak+vu64rJzLvqGtD5AL8WECCd1Q0DB
ao1yxcO8jBJbubKgO6LLzs9RuOYvcgJC14DoVLJfWdH+R2tO3FsZ4HqNAoGBAKSv
Fj7T5ah1Sebb5YXyQ5fieD/GdRVZgxySsUhaihT7iKzUVp1Een/weWOXhBHrf10u
rkJZjaes5Z467S3PM6mwj+uTi1bsXdNi86Fhqf/0NwonTRBMmetGk/vDen6HOA9J
8ITuleyFmRQ5N1W4HFkSJnn01k8MPJvibbGmk2xdAoGAEgs01GX+sApfcMgFIgZO
XGJoSHDnuoMxnvgqFxdV+ELrOtLlslc3/SoA2RfVfsg+aUX6gO2XndsS0a4u1wJj
plp5pU0Yp7c2TdpCVsER3G9MLVkeA9cJj0XRPwNfR0sb5Qk/k1yQmvwwxveLWg0q
D/XWJgkDwapdkhWyrnZ1fPU=
-----END PRIVATE KEY-----
</key>

41
modules/rofi/default.nix Normal file
View File

@@ -0,0 +1,41 @@
{pkgs, lib, config, ... }:
{
programs.rofi.enable = true;
programs.rofi.extraConfig = {
show-icons = true;
drun-display-format = "{icon} {name}";
hide-scrollbar = true;
sidebar-mode = true;
dpi = 110;
font = "FreeSans Regular 12";
};
programs.rofi.theme = lib.mkAfter {
window.height = 600;
window.width = 600;
window.border-radius = 0;
element = {
padding = 5;
border-radius = 0;
};
inputbar.padding = 14;
listview = {
padding = 8;
border-radius = "0 0 0 0";
border = "2 2 2 2";
dynamic = false;
};
"element-text element-icon" = {
size = 40;
margin = "0 10 0 0";
};
"element selected.normal" = {
background-color = lib.mkForce "@normal-background";
};
"element alternate.normal" = {
background-color = lib.mkForce "@normal-background";
};
mainbox.children = "inputbar, message, listview";
mainbox.spacing = 0;
};
}

View File

@@ -0,0 +1,8 @@
{pkgs,...}:
{
programs.starship = {
enable = true;
enableFishIntegration = true;
};
}

View File

@@ -5,9 +5,30 @@
#stylix.targets.plymouth.enable = false; #stylix.targets.plymouth.enable = false;
stylix.targets.kitty.enable = true; stylix.targets.kitty.enable = true;
stylix.targets.hyprpaper.enable = true; stylix.targets.hyprpaper.enable = true;
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/tokyo-night-dark.yaml"; stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/everforest.yaml";
stylix.image = pkgs.fetchurl { stylix.targets.zen-browser.profileNames = [ "default" ];
stylix.targets.zen-browser.enable = true;
# blue aura house
/* stylix.image = pkgs.fetchurl {
url = "https://w.wallhaven.cc/full/1p/wallhaven-1py8lw.jpg"; url = "https://w.wallhaven.cc/full/1p/wallhaven-1py8lw.jpg";
hash = "sha256-smJTuprm8PVKWv56hfv9UMzDXkHm3R7O1ALaNpNYy3E="; hash = "sha256-smJTuprm8PVKWv56hfv9UMzDXkHm3R7O1ALaNpNYy3E=";
};*/
# coastal town
/*stylix.image = pkgs.fetchurl {
url = "https://w.wallhaven.cc/full/ex/wallhaven-ex8vml.jpg";
hash = "sha256-SNsauGNVU7p+FfZPJ97GQDz5roRfy82WbAuLmLl7iVs=";
};*/
# Docks
/*stylix.image = pkgs.fetchurl {
url = "https://gitea.base.jeditemple.com/joshuaelm/Wallpapers/raw/branch/main/generic/a_deck_with_trees_and_a_railing.jpg";
hash = "sha256-axG9MALOe5cNfySA29DP15YXLp1V1mcHbezPvq4J3sA=";
};*/
# Mountain Range with tree vignette
stylix.image = pkgs.fetchurl {
url = "https://gitea.base.jeditemple.com/joshuaelm/Wallpapers/raw/branch/main/generic/wallhaven-21yp59.jpg";
hash = "sha256-INsc8Zx+Slmcyd/tNekuZ0LhNSlvNLy7TNFLdnJD78Q=";
}; };
} }

222
modules/waybar/waybar.nix Normal file
View File

@@ -0,0 +1,222 @@
{ pkgs, lib, ... }:
{
programs.waybar.enable = true;
programs.waybar.settings = [
{
layer = "top";
position = "top";
spacing = 0;
height = 26;
"modules-left" = [ "hyprland/workspaces" ];
"modules-center" = [ "mpris" ];
"modules-right" = [
"group/tray-expander"
"cava"
"clock"
"bluetooth"
"network"
"pulseaudio"
"cpu"
"battery"
];
"hyprland/workspaces" = {
"on-click" = "activate";
format = "{icon}";
"format-icons" = {
default = "";
active = "󱓻";
};
};
cpu = {
interval = 5;
format = "󰍛";
"on-click" = "kitty -e btop";
};
clock = {
format = "{:L%A %H:%M}";
"format-alt" = "{:L%d %B W%V %Y}";
tooltip = false;
"on-click-right" = "omarchy-launch-floating-terminal-with-presentation omarchy-tz-select";
};
network = {
"format-icons" = [ "󰤯" "󰤟" "󰤢" "󰤥" "󰤨" ];
format = "{icon}";
"format-wifi" = "{icon}";
"format-ethernet" = "󰀂";
"format-disconnected" = "󰤮";
"tooltip-format-wifi" = "{essid} ({frequency} GHz)\n{bandwidthDownBytes} {bandwidthUpBytes}";
"tooltip-format-ethernet" = "{bandwidthDownBytes} {bandwidthUpBytes}";
"tooltip-format-disconnected" = "Disconnected";
interval = 3;
spacing = 1;
"on-click" = "omarchy-launch-wifi";
};
battery = {
format = "{capacity}% {icon}";
"format-discharging" = "{icon}";
"format-charging" = "{icon}";
"format-plugged" = "";
"format-icons" = {
charging = [ "󰢜" "󰂆" "󰂇" "󰂈" "󰢝" "󰂉" "󰢞" "󰂊" "󰂋" "󰂅" ];
default = [ "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹" ];
};
"format-full" = "󰂅";
"tooltip-format-discharging" = "{power:>1.0f}W {capacity}%";
"tooltip-format-charging" = "{power:>1.0f}W {capacity}%";
interval = 5;
"on-click" = "omarchy-menu power";
states = {
warning = 20;
critical = 10;
};
};
bluetooth = {
format = "";
"format-disabled"= "󰂲";
"format-connected"= "";
"tooltip-format" = "Devices connected: {num_connections}";
"on-click" = "blueberry";
};
pulseaudio = {
format = "{icon}";
"on-click" = "kitty --class=Wiremix -e wiremix";
"on-click-right" = "pamixer -t";
"tooltip-format" = "Playing at {volume}%";
"scroll-step" = 5;
"format-muted" = "";
"format-icons" = {
default = [ "" "" "" ];
};
};
mpris = {
format = "{dynamic}";
dynamic-order = ["title" "album" "artist" "position" "length"];
};
cava = {
bars = 14;
bar_delimiter = 0;
format-icons = ["" "" "" "" "" "" "" ""];
};
"group/tray-expander" = {
orientation = "inherit";
drawer = {
"transition-duration" = 600;
"children-class" = "tray-group-item";
};
modules = [ "custom/expand-icon" "tray" ];
};
"custom/expand-icon" = {
format = "";
tooltip = false;
};
tray = {
"icon-size" = 12;
spacing = 17;
};
}
];
programs.waybar.style = lib.mkAfter ''
* {
border: none;
border-radius: 0;
min-height: 0;
font-family: 'CaskaydiaMono Nerd Font';
font-size: 12px;
}
.modules-left {
margin-left: 8px;
}
.modules-right {
margin-right: 8px;
}
#workspaces button {
all: initial;
padding: 0 6px;
margin: 0 1.5px;
min-width: 9px;
}
#workspaces button.empty {
opacity: 0.5;
}
.modules-left #workspaces button.active {
border-bottom: 0px solid @base05;
}
.modules-left #workspaces button {
border-bottom: 0px solid @base05;
}
#cpu,
#battery,
#pulseaudio,
#custom-omarchy,
#custom-screenrecording-indicator,
#custom-update {
min-width: 12px;
margin: 0 7.5px;
}
#tray {
margin-right: 16px;
}
#bluetooth {
margin-right: 17px;
}
#network {
margin-right: 13px;
}
#custom-expand-icon {
margin-right: 20px;
}
tooltip {
padding: 2px;
}
#custom-update {
font-size: 10px;
}
#clock {
margin-left: 8.75px;
}
.hidden {
opacity: 0;
}
#custom-screenrecording-indicator {
min-width: 12px;
margin-left: 8.75px;
font-size: 10px;
}
#custom-screenrecording-indicator.active {
color: #a55555;
}
'';
}

45
modules/zen/default.nix Normal file
View File

@@ -0,0 +1,45 @@
{ pkgs, inputs,... }:
{
imports = [
inputs.zen-browser.homeModules.beta
];
programs.zen-browser = {
enable = true;
profiles = {
default = {
# bookmarks, extensions, search engines...
id = 0;
isDefault = true;
name = "default";
search = {
force = true;
default = "Kagi";
engines = {
"Kagi" = {
urls = [{ template = "https://kagi.com/search?q={searchTerms}"; }];
icon = "https://kagi.com/favicon.ico";
updateInterval = 24 * 60 * 60 * 1000; # every day
definedAliases = [ "@kagi" ];
};
};
};
};
};
policies = let
mkExtensionSettings = builtins.mapAttrs (_: pluginId: {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/${pluginId}/latest.xpi";
installation_mode = "force_installed";
});
in {
ExtensionSettings = mkExtensionSettings {
"uBlock0@raymondhill.net" = "ublock-origin";
"search@kagi.com" = "kagi-search-for-firefox";
#"adnauseam@rednoise.org" = "adnauseam";
"{446900e4-71c2-419f-a6a7-df9c091e268b}" = "bitwarden-password-manager";
"{7be2ba16-0f1e-4d93-9ebc-5164397477a9}" = "videospeed";
};
DisableTelemetry = true;
};
};
}

234
patches/bigscreen_1.patch Normal file
View File

@@ -0,0 +1,234 @@
From f8b7d3bad1225150c8909df309f8d10c365fdf3b Mon Sep 17 00:00:00 2001
From: Yaroslav Bolyukin <iam@lach.pw>
Date: Sun, 30 Oct 2022 18:59:15 +0100
Subject: [PATCH 1/2] drm/edid: parse DRM VESA dsc bpp target
As per DisplayID v2.0 Errata E9 spec "DSC pass-through timing support"
VESA vendor-specific data block may contain target DSC bits per pixel
fields
Signed-off-by: Yaroslav Bolyukin <iam@lach.pw>
Signed-off-by: Lach <iam@lach.pw>
---
drivers/gpu/drm/drm_displayid_internal.h | 8 ++++
drivers/gpu/drm/drm_edid.c | 61 ++++++++++++++++--------
include/drm/drm_connector.h | 6 +++
include/drm/drm_modes.h | 10 ++++
4 files changed, 64 insertions(+), 21 deletions(-)
diff --git a/drivers/gpu/drm/drm_displayid_internal.h b/drivers/gpu/drm/drm_displayid_internal.h
index 957dd0619f5c..d008a98994bb 100644
--- a/drivers/gpu/drm/drm_displayid_internal.h
+++ b/drivers/gpu/drm/drm_displayid_internal.h
@@ -97,6 +97,10 @@ struct displayid_header {
u8 ext_count;
} __packed;
+#define DISPLAYID_BLOCK_REV GENMASK(2, 0)
+#define DISPLAYID_BLOCK_PASSTHROUGH_TIMINGS_SUPPORT BIT(3)
+#define DISPLAYID_BLOCK_DESCRIPTOR_PAYLOAD_BYTES GENMASK(6, 4)
+
struct displayid_block {
u8 tag;
u8 rev;
@@ -144,12 +148,16 @@ struct displayid_formula_timing_block {
#define DISPLAYID_VESA_MSO_OVERLAP GENMASK(3, 0)
#define DISPLAYID_VESA_MSO_MODE GENMASK(6, 5)
+#define DISPLAYID_VESA_DSC_BPP_INT GENMASK(5, 0)
+#define DISPLAYID_VESA_DSC_BPP_FRACT GENMASK(3, 0)
struct displayid_vesa_vendor_specific_block {
struct displayid_block base;
u8 oui[3];
u8 data_structure_type;
u8 mso;
+ u8 dsc_bpp_int;
+ u8 dsc_bpp_fract;
} __packed;
/*
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index e2e85345aa9a..6e42e55b41f9 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -6524,8 +6524,8 @@ static void drm_get_monitor_range(struct drm_connector *connector,
info->monitor_range.min_vfreq, info->monitor_range.max_vfreq);
}
-static void drm_parse_vesa_mso_data(struct drm_connector *connector,
- const struct displayid_block *block)
+static void drm_parse_vesa_specific_block(struct drm_connector *connector,
+ const struct displayid_block *block)
{
struct displayid_vesa_vendor_specific_block *vesa =
(struct displayid_vesa_vendor_specific_block *)block;
@@ -6541,7 +6541,7 @@ static void drm_parse_vesa_mso_data(struct drm_connector *connector,
if (oui(vesa->oui[0], vesa->oui[1], vesa->oui[2]) != VESA_IEEE_OUI)
return;
- if (sizeof(*vesa) != sizeof(*block) + block->num_bytes) {
+ if (block->num_bytes < 5) {
drm_dbg_kms(connector->dev,
"[CONNECTOR:%d:%s] Unexpected VESA vendor block size\n",
connector->base.id, connector->name);
@@ -6564,28 +6564,40 @@ static void drm_parse_vesa_mso_data(struct drm_connector *connector,
break;
}
- if (!info->mso_stream_count) {
- info->mso_pixel_overlap = 0;
- return;
- }
+ info->mso_pixel_overlap = 0;
- info->mso_pixel_overlap = FIELD_GET(DISPLAYID_VESA_MSO_OVERLAP, vesa->mso);
- if (info->mso_pixel_overlap > 8) {
- drm_dbg_kms(connector->dev,
- "[CONNECTOR:%d:%s] Reserved MSO pixel overlap value %u\n",
- connector->base.id, connector->name,
- info->mso_pixel_overlap);
- info->mso_pixel_overlap = 8;
+ if (info->mso_stream_count) {
+ info->mso_pixel_overlap = FIELD_GET(DISPLAYID_VESA_MSO_OVERLAP, vesa->mso);
+ if (info->mso_pixel_overlap > 8) {
+ drm_dbg_kms(connector->dev,
+ "[CONNECTOR:%d:%s] Reserved MSO pixel overlap value %u\n",
+ connector->base.id, connector->name,
+ info->mso_pixel_overlap);
+ info->mso_pixel_overlap = 8;
+ }
}
drm_dbg_kms(connector->dev,
"[CONNECTOR:%d:%s] MSO stream count %u, pixel overlap %u\n",
connector->base.id, connector->name,
info->mso_stream_count, info->mso_pixel_overlap);
+
+ if (block->num_bytes < 7) {
+ /* DSC bpp is optional */
+ return;
+ }
+
+ info->dp_dsc_bpp = FIELD_GET(DISPLAYID_VESA_DSC_BPP_INT, vesa->dsc_bpp_int) << 4 |
+ FIELD_GET(DISPLAYID_VESA_DSC_BPP_FRACT, vesa->dsc_bpp_fract);
+
+ drm_dbg_kms(connector->dev,
+ "[CONNECTOR:%d:%s] DSC bits per pixel %u\n",
+ connector->base.id, connector->name,
+ info->dp_dsc_bpp);
}
-static void drm_update_mso(struct drm_connector *connector,
- const struct drm_edid *drm_edid)
+static void drm_update_vesa_specific_block(struct drm_connector *connector,
+ const struct drm_edid *drm_edid)
{
const struct displayid_block *block;
struct displayid_iter iter;
@@ -6593,7 +6605,7 @@ static void drm_update_mso(struct drm_connector *connector,
displayid_iter_edid_begin(drm_edid, &iter);
displayid_iter_for_each(block, &iter) {
if (block->tag == DATA_BLOCK_2_VENDOR_SPECIFIC)
- drm_parse_vesa_mso_data(connector, block);
+ drm_parse_vesa_specific_block(connector, block);
}
displayid_iter_end(&iter);
}
@@ -6630,6 +6642,7 @@ static void drm_reset_display_info(struct drm_connector *connector)
info->mso_stream_count = 0;
info->mso_pixel_overlap = 0;
info->max_dsc_bpp = 0;
+ info->dp_dsc_bpp = 0;
kfree(info->vics);
info->vics = NULL;
@@ -6753,7 +6766,7 @@ static void update_display_info(struct drm_connector *connector,
if (edid->features & DRM_EDID_FEATURE_RGB_YCRCB422)
info->color_formats |= DRM_COLOR_FORMAT_YCBCR422;
- drm_update_mso(connector, drm_edid);
+ drm_update_vesa_specific_block(connector, drm_edid);
out:
if (drm_edid_has_internal_quirk(connector, EDID_QUIRK_NON_DESKTOP)) {
@@ -6784,7 +6797,8 @@ static void update_display_info(struct drm_connector *connector,
static struct drm_display_mode *drm_mode_displayid_detailed(struct drm_device *dev,
const struct displayid_detailed_timings_1 *timings,
- bool type_7)
+ bool type_7,
+ int rev)
{
struct drm_display_mode *mode;
unsigned int pixel_clock = (timings->pixel_clock[0] |
@@ -6805,6 +6819,10 @@ static struct drm_display_mode *drm_mode_displayid_detailed(struct drm_device *d
if (!mode)
return NULL;
+ if (type_7 && FIELD_GET(DISPLAYID_BLOCK_REV, rev) >= 1)
+ mode->dsc_passthrough_timings_support =
+ !!(rev & DISPLAYID_BLOCK_PASSTHROUGH_TIMINGS_SUPPORT);
+
/* resolution is kHz for type VII, and 10 kHz for type I */
mode->clock = type_7 ? pixel_clock : pixel_clock * 10;
mode->hdisplay = hactive;
@@ -6846,7 +6864,7 @@ static int add_displayid_detailed_1_modes(struct drm_connector *connector,
for (i = 0; i < num_timings; i++) {
struct displayid_detailed_timings_1 *timings = &det->timings[i];
- newmode = drm_mode_displayid_detailed(connector->dev, timings, type_7);
+ newmode = drm_mode_displayid_detailed(connector->dev, timings, type_7, block->rev);
if (!newmode)
continue;
@@ -6893,7 +6911,8 @@ static int add_displayid_formula_modes(struct drm_connector *connector,
struct drm_display_mode *newmode;
int num_modes = 0;
bool type_10 = block->tag == DATA_BLOCK_2_TYPE_10_FORMULA_TIMING;
- int timing_size = 6 + ((formula_block->base.rev & 0x70) >> 4);
+ int timing_size = 6 +
+ FIELD_GET(DISPLAYID_BLOCK_DESCRIPTOR_PAYLOAD_BYTES, formula_block->base.rev);
/* extended blocks are not supported yet */
if (timing_size != 6)
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index 8f34f4b8183d..01640fcf7464 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -837,6 +837,12 @@ struct drm_display_info {
*/
u32 max_dsc_bpp;
+ /**
+ * @dp_dsc_bpp: DP Display-Stream-Compression (DSC) timing's target
+ * DSC bits per pixel in 6.4 fixed point format. 0 means undefined.
+ */
+ u16 dp_dsc_bpp;
+
/**
* @vics: Array of vics_len VICs. Internal to EDID parsing.
*/
diff --git a/include/drm/drm_modes.h b/include/drm/drm_modes.h
index b9bb92e4b029..312e5c03af9a 100644
--- a/include/drm/drm_modes.h
+++ b/include/drm/drm_modes.h
@@ -417,6 +417,16 @@ struct drm_display_mode {
*/
enum hdmi_picture_aspect picture_aspect_ratio;
+ /**
+ * @dsc_passthrough_timing_support:
+ *
+ * Indicates whether this mode timing descriptor is supported
+ * with specific target DSC bits per pixel only.
+ *
+ * VESA vendor-specific data block shall exist with the relevant
+ * DSC bits per pixel declaration when this flag is set to true.
+ */
+ bool dsc_passthrough_timings_support;
};
/**
--
2.51.0

243
patches/bigscreen_15.patch Normal file
View File

@@ -0,0 +1,243 @@
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 3b4065099..639699e3b 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -189,6 +189,9 @@ static const struct edid_quirk {
/* Rotel RSX-1058 forwards sink's EDID but only does HDMI 1.1*/
EDID_QUIRK('E', 'T', 'R', 13896, EDID_QUIRK_FORCE_8BPC),
+ /* Bigscreen Beyond Headset */
+ EDID_QUIRK('B', 'I', 'G', 0x1234, EDID_QUIRK_NON_DESKTOP),
+
/* Valve Index Headset */
EDID_QUIRK('V', 'L', 'V', 0x91a8, EDID_QUIRK_NON_DESKTOP),
EDID_QUIRK('V', 'L', 'V', 0x91b0, EDID_QUIRK_NON_DESKTOP),
From c33583995576e9ac532c4ad9e260324b1c4fa3a3 Mon Sep 17 00:00:00 2001
From: Yaroslav Bolyukin <iam@lach.pw>
Date: Sun, 30 Oct 2022 19:04:26 +0100
Subject: [PATCH 3/3] drm/amd: use fixed dsc bits-per-pixel from edid
VESA vendor header from DisplayID spec may contain fixed bit per pixel
rate, it should be respected by drm driver
Signed-off-by: Yaroslav Bolyukin <iam@lach.pw>
Reviewed-by: Wayne Lin <Wayne.Lin@amd.com>
---
drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 2 ++
drivers/gpu/drm/amd/display/dc/dc_types.h | 3 +++
2 files changed, 5 insertions(+)
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
index 38d71b5c1f2d..f2467b64268b 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
@@ -103,6 +103,8 @@ static bool dc_stream_construct(struct dc_stream_state *stream,
/* EDID CAP translation for HDMI 2.0 */
stream->timing.flags.LTE_340MCSC_SCRAMBLE = dc_sink_data->edid_caps.lte_340mcsc_scramble;
+ stream->timing.dsc_fixed_bits_per_pixel_x16 =
+ dc_sink_data->edid_caps.dsc_fixed_bits_per_pixel_x16;
memset(&stream->timing.dsc_cfg, 0, sizeof(stream->timing.dsc_cfg));
stream->timing.dsc_cfg.num_slices_h = 0;
diff --git a/drivers/gpu/drm/amd/display/dc/dc_types.h b/drivers/gpu/drm/amd/display/dc/dc_types.h
index dc78e2404b48..65915a10ab48 100644
--- a/drivers/gpu/drm/amd/display/dc/dc_types.h
+++ b/drivers/gpu/drm/amd/display/dc/dc_types.h
@@ -231,6 +231,9 @@ struct dc_edid_caps {
bool edid_hdmi;
bool hdr_supported;
+ /* DisplayPort caps */
+ uint32_t dsc_fixed_bits_per_pixel_x16;
+
struct dc_panel_patch panel_patch;
};
--
2.38.1
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 3b4065099..15268afa3 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -6391,7 +6391,7 @@ static void drm_parse_vesa_mso_data(struct drm_connector *connector,
if (oui(vesa->oui[0], vesa->oui[1], vesa->oui[2]) != VESA_IEEE_OUI)
return;
- if (sizeof(*vesa) != sizeof(*block) + block->num_bytes) {
+ if (block->num_bytes < 5) {
drm_dbg_kms(connector->dev,
"[CONNECTOR:%d:%s] Unexpected VESA vendor block size\n",
connector->base.id, connector->name);
@@ -6414,24 +6414,37 @@ static void drm_parse_vesa_mso_data(struct drm_connector *connector,
break;
}
- if (!info->mso_stream_count) {
- info->mso_pixel_overlap = 0;
- return;
- }
+ info->mso_pixel_overlap = 0;
+
+ if (info->mso_stream_count) {
+ info->mso_pixel_overlap = FIELD_GET(DISPLAYID_VESA_MSO_OVERLAP, vesa->mso);
+
+ if (info->mso_pixel_overlap > 8) {
+ drm_dbg_kms(connector->dev,
+ "[CONNECTOR:%d:%s] Reserved MSO pixel overlap value %u\n",
+ connector->base.id, connector->name,
+ info->mso_pixel_overlap);
+ info->mso_pixel_overlap = 8;
+ }
- info->mso_pixel_overlap = FIELD_GET(DISPLAYID_VESA_MSO_OVERLAP, vesa->mso);
- if (info->mso_pixel_overlap > 8) {
drm_dbg_kms(connector->dev,
- "[CONNECTOR:%d:%s] Reserved MSO pixel overlap value %u\n",
- connector->base.id, connector->name,
- info->mso_pixel_overlap);
- info->mso_pixel_overlap = 8;
+ "[CONNECTOR:%d:%s] MSO stream count %u, pixel overlap %u\n",
+ connector->base.id, connector->name,
+ info->mso_stream_count, info->mso_pixel_overlap);
+ }
+
+ if (block->num_bytes < 7) {
+ /* DSC bpp is optional */
+ return;
}
+ info->dp_dsc_bpp = FIELD_GET(DISPLAYID_VESA_DSC_BPP_INT, vesa->dsc_bpp_int) * 16 +
+ FIELD_GET(DISPLAYID_VESA_DSC_BPP_FRACT, vesa->dsc_bpp_fract);
+
drm_dbg_kms(connector->dev,
- "[CONNECTOR:%d:%s] MSO stream count %u, pixel overlap %u\n",
- connector->base.id, connector->name,
- info->mso_stream_count, info->mso_pixel_overlap);
+ "[CONNECTOR:%d:%s] DSC bits per pixel %u\n",
+ connector->base.id, connector->name,
+ info->dp_dsc_bpp);
}
static void drm_update_mso(struct drm_connector *connector,
@@ -6479,6 +6492,7 @@ static void drm_reset_display_info(struct drm_connector *connector)
info->mso_stream_count = 0;
info->mso_pixel_overlap = 0;
info->max_dsc_bpp = 0;
+ info->dp_dsc_bpp = 0;
kfree(info->vics);
info->vics = NULL;
diff --git a/drivers/gpu/drm/drm_edid.c.rej b/drivers/gpu/drm/drm_edid.c.rej
new file mode 100644
index 000000000..de3b3bf4e
--- /dev/null
+++ b/drivers/gpu/drm/drm_edid.c.rej
@@ -0,0 +1,9 @@
+diff a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c (rejected hunks)
+@@ -6376,6 +6389,7 @@ static void drm_reset_display_info(struct drm_connector *connector)
+ info->mso_stream_count = 0;
+ info->mso_pixel_overlap = 0;
+ info->max_dsc_bpp = 0;
++ info->dp_dsc_bpp = 0;
+ }
+
+ static u32 update_display_info(struct drm_connector *connector,
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index fe88d7fc6..1de1d1726 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -803,6 +803,12 @@ struct drm_display_info {
*/
u32 max_dsc_bpp;
+ /**
+ * @dp_dsc_bpp: DP Display-Stream-Compression (DSC) timing's target
+ * DST bits per pixel in 6.4 fixed point format. 0 means undefined
+ */
+ u16 dp_dsc_bpp;
+
/**
* @vics: Array of vics_len VICs. Internal to EDID parsing.
*/
diff --git a/include/drm/drm_connector.h.rej b/include/drm/drm_connector.h.rej
new file mode 100644
index 000000000..d54d40443
--- /dev/null
+++ b/include/drm/drm_connector.h.rej
@@ -0,0 +1,13 @@
+diff a/include/drm/drm_connector.h b/include/drm/drm_connector.h (rejected hunks)
+@@ -721,6 +721,11 @@ struct drm_display_info {
+ * monitor's default value is used instead.
+ */
+ u32 max_dsc_bpp;
++ /**
++ * @dp_dsc_bpp: DP Display-Stream-Compression (DSC) timing's target
++ * DST bits per pixel in 6.4 fixed point format. 0 means undefined
++ */
++ u16 dp_dsc_bpp;
+ };
+
+ int drm_display_info_set_bus_formats(struct drm_display_info *info,
diff --git a/include/drm/drm_displayid.h b/include/drm/drm_displayid.h
index 566497eeb..3a4bd0816 100644
--- a/drivers/gpu/drm/drm_displayid_internal.h
+++ b/drivers/gpu/drm/drm_displayid_internal.h
@@ -131,12 +131,16 @@ struct displayid_detailed_timing_block {
#define DISPLAYID_VESA_MSO_OVERLAP GENMASK(3, 0)
#define DISPLAYID_VESA_MSO_MODE GENMASK(6, 5)
+#define DISPLAYID_VESA_DSC_BPP_INT GENMASK(5, 0)
+#define DISPLAYID_VESA_DSC_BPP_FRACT GENMASK(3, 0)
struct displayid_vesa_vendor_specific_block {
struct displayid_block base;
u8 oui[3];
u8 data_structure_type;
u8 mso;
+ u8 dsc_bpp_int;
+ u8 dsc_bpp_fract;
} __packed;
/*
diff --git a/include/drm/drm_displayid.h.rej b/include/drm/drm_displayid.h.rej
new file mode 100644
index 000000000..61fbd38e0
--- /dev/null
+++ b/include/drm/drm_displayid.h.rej
@@ -0,0 +1,18 @@
+diff a/include/drm/drm_displayid.h b/include/drm/drm_displayid.h (rejected hunks)
+@@ -131,12 +131,16 @@ struct displayid_detailed_timing_block {
+
+ #define DISPLAYID_VESA_MSO_OVERLAP GENMASK(3, 0)
+ #define DISPLAYID_VESA_MSO_MODE GENMASK(6, 5)
++#define DISPLAYID_VESA_DSC_BPP_INT GENMASK(5, 0)
++#define DISPLAYID_VESA_DSC_BPP_FRACT GENMASK(3, 0)
+
+ struct displayid_vesa_vendor_specific_block {
+ struct displayid_block base;
+ u8 oui[3];
+ u8 data_structure_type;
+ u8 mso;
++ u8 dsc_bpp_int;
++ u8 dsc_bpp_fract;
+ } __packed;
+
+ /* DisplayID iteration */
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
index d4395b92fb85..6c7f589e19ac 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
@@ -136,6 +136,8 @@ enum dc_edid_status dm_helpers_parse_edid_caps(
edid_caps->edid_hdmi = connector->display_info.is_hdmi;
+ edid_caps->dsc_fixed_bits_per_pixel_x16 = connector->display_info.dp_dsc_bpp;
+
apply_edid_quirks(dev, edid_buf, edid_caps);
sad_count = drm_edid_to_sad((struct edid *) edid->raw_edid, &sads);

46
patches/bigscreen_2.patch Normal file
View File

@@ -0,0 +1,46 @@
From 4374e685d46122ac59ccdd201c3be785e7f3558d Mon Sep 17 00:00:00 2001
From: Yaroslav Bolyukin <iam@lach.pw>
Date: Sun, 30 Oct 2022 19:04:26 +0100
Subject: [PATCH 2/2] drm/amd: use fixed dsc bits-per-pixel from edid
VESA vendor header from DisplayID spec may contain fixed bit per pixel
rate, it should be respected by drm driver
Signed-off-by: Yaroslav Bolyukin <iam@lach.pw>
Signed-off-by: Lach <iam@lach.pw>
---
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index ef026143dc1c..d068c6db91ce 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -6430,6 +6430,11 @@ static void fill_stream_properties_from_drm_display_mode(
stream->output_color_space = get_output_color_space(timing_out, connector_state);
stream->content_type = get_output_content_type(connector_state);
+
+ /* DisplayID Type VII pass-through timings. */
+ if (mode_in->dsc_passthrough_timings_support && info->dp_dsc_bpp != 0) {
+ stream->timing.dsc_fixed_bits_per_pixel_x16 = info->dp_dsc_bpp;
+ }
}
static void fill_audio_info(struct audio_info *audio_info,
@@ -6976,6 +6981,13 @@ create_stream_for_sink(struct drm_connector *connector,
&mode, preferred_mode, scale);
preferred_refresh = drm_mode_vrefresh(preferred_mode);
+
+ /*
+ * HACK: In case of multiple supported modes, we should look at the matching mode to decide this flag.
+ * But what is matching mode, how should it be decided?
+ * Assuming that only preferred mode would have this flag.
+ */
+ mode.dsc_passthrough_timings_support = preferred_mode->dsc_passthrough_timings_support;
}
}
--
2.51.0

View File

@@ -3,7 +3,7 @@
# Your main monitor (change this) # Your main monitor (change this)
MONITOR="DP-1" MONITOR="DP-1"
hyprctl keyword monitor HDMI-A-1,1280x800@90,auto,1,bitdepth,10,cm,hdr hyprctl keyword monitor HDMI-A-1,1280x800@90,auto,1,bitdepth,10
# Disable the monitor # Disable the monitor
hyprctl keyword monitor $MONITOR,disable hyprctl keyword monitor $MONITOR,disable