Compare commits
32 Commits
51e7f52bb0
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 8bf191eefc | |||
| 0ace7b6ad1 | |||
| c04feaaba0 | |||
|
|
e8b8791267 | ||
|
|
ceff2a381f | ||
|
|
d64a0e59b3 | ||
| 28b44e1f14 | |||
| 5a9bd5a305 | |||
| 6026656165 | |||
| 222f869bbb | |||
| 4ff0e72d8e | |||
|
|
1b2dbec838 | ||
|
|
6063b1cb97 | ||
| 78202b0b74 | |||
| d4f72e5b80 | |||
| 9922083fcd | |||
| 7a65a428b3 | |||
| 4f7fcad7ad | |||
| 528a02ec4b | |||
| c4f24c33be | |||
| 0a7e22d22f | |||
| 09a1c47335 | |||
| 6ef4ac360f | |||
| ddd9a53ab0 | |||
| 89be2cd52c | |||
| 5964c6fc49 | |||
| b27c751d62 | |||
| 8eec81c7f4 | |||
| 33fd7ddf72 | |||
| d1f8eba241 | |||
| b490df7c32 | |||
| d05bf45a13 |
123
2
Normal file
123
2
Normal 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
474
]
Normal 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. It‘s 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
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
BIN
assets/pfp.jpg
Normal file
BIN
assets/pfp.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 71 KiB |
@@ -1,212 +0,0 @@
|
|||||||
# 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, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports =
|
|
||||||
[ # Include the results of the hardware scan.
|
|
||||||
./hardware-configuration.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
# Bootloader.
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
|
||||||
boot.initrd.systemd.enable = true;
|
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
|
||||||
boot.kernelParams = ["quiet"];
|
|
||||||
|
|
||||||
services.avahi = {
|
|
||||||
enable = true;
|
|
||||||
nssmdns = true;
|
|
||||||
openFirewall = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
boot.initrd.luks.devices."luks-db49c136-7de8-4ab6-8e05-754bab13925d".device = "/dev/disk/by-uuid/db49c136-7de8-4ab6-8e05-754bab13925d";
|
|
||||||
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/";
|
|
||||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
|
||||||
|
|
||||||
# Enable networking
|
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
|
|
||||||
hardware.opengl.extraPackages = with pkgs; [
|
|
||||||
amdvlk
|
|
||||||
];
|
|
||||||
|
|
||||||
# Set your time zone.
|
|
||||||
time.timeZone = "America/Chicago";
|
|
||||||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
|
||||||
# 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 Plymouth
|
|
||||||
boot.plymouth = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable the GNOME Desktop Environment.
|
|
||||||
services.xserver.desktopManager.plasma6.enable = true;
|
|
||||||
services.displayManager.cosmic-greeter.enable = true;
|
|
||||||
services.desktopManager.cosmic.enable = true;
|
|
||||||
# services.xserver.displayManager.cosmic-greeter.enable = true;
|
|
||||||
# Configure keymap in X11
|
|
||||||
services.xserver = {
|
|
||||||
layout = "us";
|
|
||||||
xkbVariant = "";
|
|
||||||
excludePackages = [ pkgs.xterm ];
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
# Enable CUPS to print documents.
|
|
||||||
services.printing.enable = true;
|
|
||||||
|
|
||||||
# Enable sound with pipewire.
|
|
||||||
sound.enable = true;
|
|
||||||
hardware.pulseaudio.enable = false;
|
|
||||||
security.rtkit.enable = true;
|
|
||||||
services.pipewire = {
|
|
||||||
enable = true;
|
|
||||||
alsa.enable = true;
|
|
||||||
alsa.support32Bit = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
# If you want to use JACK applications, uncomment this
|
|
||||||
#jack.enable = true;
|
|
||||||
|
|
||||||
# use the example session manager (no others are packaged yet so this is enabled by default,
|
|
||||||
# no need to redefine it in your config for now)
|
|
||||||
#media-session.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable touchpad support (enabled default in most desktopManager).
|
|
||||||
# services.xserver.libinput.enable = true;
|
|
||||||
|
|
||||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
|
||||||
users.users.joshuaelm = {
|
|
||||||
isNormalUser = true;
|
|
||||||
description = "Joshua Elmasri";
|
|
||||||
extraGroups = [ "networkmanager" "wheel" ];
|
|
||||||
packages = with pkgs; [
|
|
||||||
vivaldi
|
|
||||||
# thunderbird
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Allow unfree packages
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
|
|
||||||
# Fonts
|
|
||||||
fonts.packages = with pkgs; [
|
|
||||||
fira-code
|
|
||||||
fira-code-symbols
|
|
||||||
roboto
|
|
||||||
(nerdfonts.override { fonts = [ "FiraCode" ]; })
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
# List packages installed in system profile. To search, run:
|
|
||||||
# $ nix search wget
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
git
|
|
||||||
rustc
|
|
||||||
gnomeExtensions.tray-icons-reloaded
|
|
||||||
gnomeExtensions.open-bar
|
|
||||||
dunst
|
|
||||||
just
|
|
||||||
steamtinkerlaunch
|
|
||||||
cargo
|
|
||||||
kdePackages.kalk
|
|
||||||
kdePackages.kdenlive
|
|
||||||
fuse
|
|
||||||
ntfs3g
|
|
||||||
(callPackage ./pkgs/warp {})
|
|
||||||
lapce
|
|
||||||
kdePackages.elisa
|
|
||||||
glaxnimate
|
|
||||||
mlt
|
|
||||||
qt5.full
|
|
||||||
dconf
|
|
||||||
libsForQt5.polonium
|
|
||||||
sublime-music
|
|
||||||
spacedrive
|
|
||||||
openjdk
|
|
||||||
gamescope
|
|
||||||
playerctl
|
|
||||||
wine
|
|
||||||
bottles
|
|
||||||
cava
|
|
||||||
pop-icon-theme
|
|
||||||
pop-launcher
|
|
||||||
gnome.gnome-tweaks
|
|
||||||
libreoffice
|
|
||||||
hunspell
|
|
||||||
hunspellDicts.en_US
|
|
||||||
neovide
|
|
||||||
flatpak
|
|
||||||
rofi-wayland
|
|
||||||
gradience
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
# 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
|
|
||||||
};
|
|
||||||
|
|
||||||
# Some programs need SUID wrappers, can be configured further or are
|
|
||||||
# started in user sessions.
|
|
||||||
# programs.mtr.enable = true;
|
|
||||||
# programs.gnupg.agent = {
|
|
||||||
# enable = true;
|
|
||||||
# enableSSHSupport = true;
|
|
||||||
# };
|
|
||||||
|
|
||||||
# List services that you want to enable:
|
|
||||||
|
|
||||||
# Enable the OpenSSH daemon.
|
|
||||||
# services.openssh.enable = true;
|
|
||||||
|
|
||||||
# Open ports in the firewall.
|
|
||||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
|
||||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
|
||||||
# Or disable the firewall altogether.
|
|
||||||
# networking.firewall.enable = false;
|
|
||||||
|
|
||||||
# This value determines the NixOS release from which the default
|
|
||||||
# settings for stateful data, like file locations and database versions
|
|
||||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
|
||||||
# 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 = {
|
|
||||||
package = pkgs.nixUnstable;
|
|
||||||
extraOptions = ''
|
|
||||||
experimental-features = nix-command flakes
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
532
flake.lock
generated
532
flake.lock
generated
@@ -1,35 +1,116 @@
|
|||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"devshell": {
|
"astal": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils",
|
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixvim",
|
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710156081,
|
"lastModified": 1764173295,
|
||||||
"narHash": "sha256-4PMY6aumJi5dLFjBzF5O4flKXmadMNq3AGUHKYfchh0=",
|
"narHash": "sha256-Jh4VtPcK2Ov+RTcV9FtyQRsxiJmXFQGfqX6jjM7/mgc=",
|
||||||
"owner": "numtide",
|
"owner": "aylur",
|
||||||
"repo": "devshell",
|
"repo": "astal",
|
||||||
"rev": "bc68b058dc7e6d4d6befc4ec6c60082b6e844b7d",
|
"rev": "7d1fac8a4b2a14954843a978d2ddde86168c75ef",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "numtide",
|
"owner": "aylur",
|
||||||
"repo": "devshell",
|
"repo": "astal",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16": {
|
||||||
|
"inputs": {
|
||||||
|
"fromYaml": "fromYaml"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1755819240,
|
||||||
|
"narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=",
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "base16.nix",
|
||||||
|
"rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "base16.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-fish": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1765809053,
|
||||||
|
"narHash": "sha256-XCUQLoLfBJ8saWms2HCIj4NEN+xNsWBlU1NrEPcQG4s=",
|
||||||
|
"owner": "tomyun",
|
||||||
|
"repo": "base16-fish",
|
||||||
|
"rev": "86cbea4dca62e08fb7fd83a70e96472f92574782",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tomyun",
|
||||||
|
"repo": "base16-fish",
|
||||||
|
"rev": "86cbea4dca62e08fb7fd83a70e96472f92574782",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-helix": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1760703920,
|
||||||
|
"narHash": "sha256-m82fGUYns4uHd+ZTdoLX2vlHikzwzdu2s2rYM2bNwzw=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-helix",
|
||||||
|
"rev": "d646af9b7d14bff08824538164af99d0c521b185",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-helix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-vim": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1732806396,
|
||||||
|
"narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-vim",
|
||||||
|
"rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-vim",
|
||||||
|
"rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"firefox-gnome-theme": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1764724327,
|
||||||
|
"narHash": "sha256-OkFLrD3pFR952TrjQi1+Vdj604KLcMnkpa7lkW7XskI=",
|
||||||
|
"owner": "rafaelmardojai",
|
||||||
|
"repo": "firefox-gnome-theme",
|
||||||
|
"rev": "66b7c635763d8e6eb86bd766de5a1e1fbfcc1047",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "rafaelmardojai",
|
||||||
|
"repo": "firefox-gnome-theme",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1688025799,
|
"lastModified": 1746162366,
|
||||||
"narHash": "sha256-ktpB4dRtnksm9F5WawoIkEneh1nrEvuxb5lJFt1iOyw=",
|
"narHash": "sha256-5SSSZ/oQkwfcAz/o/6TlejlVGqeK08wyREBQ5qFFPhM=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "8bf105319d44f6b9f0d764efa4fdef9f1cc9ba1c",
|
"rev": "0f158086a2ecdbb138cd0429410e44994f1b7e4b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -38,50 +119,19 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-compat_2": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1696426674,
|
|
||||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
|
||||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
|
||||||
"revCount": 57,
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-compat_3": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1696426674,
|
|
||||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-parts": {
|
"flake-parts": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
"nixos-cosmic",
|
"nixvim",
|
||||||
"nix-update",
|
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1698882062,
|
"lastModified": 1765495779,
|
||||||
"narHash": "sha256-HkhafUayIqxXyHH1X8d9RDl1M2CkFgZLjKD3MzabiEo=",
|
"narHash": "sha256-MhA7wmo/7uogLxiewwRRmIax70g6q1U/YemqTGoFHlM=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "8c9fa2545007b49a5db5f650ae91f227672c3877",
|
"rev": "5635c32d666a59ec9a55cab87e898889869f7b71",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -93,16 +143,16 @@
|
|||||||
"flake-parts_2": {
|
"flake-parts_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
"nixvim",
|
"stylix",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1709336216,
|
"lastModified": 1763759067,
|
||||||
"narHash": "sha256-Dt/wOWeW6Sqm11Yh+2+t0dfEWxoMxGBvv3JpIocFl9E=",
|
"narHash": "sha256-LlLt2Jo/gMNYAwOgdRQBrsRoOz7BPRkzvNaI/fzXi2Q=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2",
|
"rev": "2cccadc7357c0ba201788ae99c4dfa90728ef5e0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -111,62 +161,39 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils": {
|
"fromYaml": {
|
||||||
"inputs": {
|
"flake": false,
|
||||||
"systems": "systems"
|
|
||||||
},
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1701680307,
|
"lastModified": 1731966426,
|
||||||
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
|
"narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=",
|
||||||
"owner": "numtide",
|
"owner": "SenchoPens",
|
||||||
"repo": "flake-utils",
|
"repo": "fromYaml",
|
||||||
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
|
"rev": "106af9e2f715e2d828df706c386a685698f3223b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "numtide",
|
"owner": "SenchoPens",
|
||||||
"repo": "flake-utils",
|
"repo": "fromYaml",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils_2": {
|
"gnome-shell": {
|
||||||
"inputs": {
|
"flake": false,
|
||||||
"systems": "systems_2"
|
|
||||||
},
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710146030,
|
"host": "gitlab.gnome.org",
|
||||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
"lastModified": 1764524476,
|
||||||
"owner": "numtide",
|
"narHash": "sha256-bTmNn3Q4tMQ0J/P0O5BfTQwqEnCiQIzOGef9/aqAZvk=",
|
||||||
"repo": "flake-utils",
|
"owner": "GNOME",
|
||||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
"repo": "gnome-shell",
|
||||||
"type": "github"
|
"rev": "c0e1ad9f0f703fd0519033b8f46c3267aab51a22",
|
||||||
|
"type": "gitlab"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "numtide",
|
"host": "gitlab.gnome.org",
|
||||||
"repo": "flake-utils",
|
"owner": "GNOME",
|
||||||
"type": "github"
|
"ref": "gnome-49",
|
||||||
}
|
"repo": "gnome-shell",
|
||||||
},
|
"type": "gitlab"
|
||||||
"gitignore": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixvim",
|
|
||||||
"pre-commit-hooks",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1709087332,
|
|
||||||
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "gitignore.nix",
|
|
||||||
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "gitignore.nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
@@ -176,32 +203,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710974515,
|
"lastModified": 1765823531,
|
||||||
"narHash": "sha256-jZpdsypecYTOO9l12Vy77otGmh9uz8tGzcguifA30Vs=",
|
"narHash": "sha256-tyNJjd48hfgsyEfsq1Ueufg4oJv6b8xBA6NYRJrLPyg=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "1c2acec99933f9835cc7ad47e35303de92d923a4",
|
"rev": "8315c1544f383b791a3115c9959d1f27920e8320",
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager_2": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixvim",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1710820906,
|
|
||||||
"narHash": "sha256-2bNMraoRB4pdw/HtxgYTFeMhEekBZeQ53/a8xkqpbZc=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"rev": "022464438a85450abb23d93b91aa82e0addd71fb",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -212,11 +218,11 @@
|
|||||||
},
|
},
|
||||||
"master": {
|
"master": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1711042203,
|
"lastModified": 1765823699,
|
||||||
"narHash": "sha256-b5QKC84by59cvBKS92iBNcvHmsXD7+T6bkKxUOVg6no=",
|
"narHash": "sha256-BdYVSKAvhBxGA4xO8UWKHg4IlqD88HeGIKLGof60OXk=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "c2684b4d2d650dce7923a7e5d44ad7b8fa44aefd",
|
"rev": "ef3ade20ba7bfbcbf6bcd83eccf75e0fd5082c7a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -226,80 +232,34 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nix-darwin": {
|
"nixos-apple-silicon": {
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixvim",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1710717205,
|
|
||||||
"narHash": "sha256-Wf3gHh5uV6W1TV/A8X8QJf99a5ypDSugY4sNtdJDe0A=",
|
|
||||||
"owner": "lnl7",
|
|
||||||
"repo": "nix-darwin",
|
|
||||||
"rev": "bcc8afd06e237df060c85bad6af7128e05fd61a3",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "lnl7",
|
|
||||||
"repo": "nix-darwin",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nix-update": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-parts": "flake-parts",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixos-cosmic",
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"treefmt-nix": "treefmt-nix"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1709726721,
|
|
||||||
"narHash": "sha256-N0KdNvaWZF2Wn/sQgIpXzXYaYiSQcVxi7P3H/uoSkcg=",
|
|
||||||
"owner": "lilyinstarlight",
|
|
||||||
"repo": "nix-update",
|
|
||||||
"rev": "816d30da62f6a04fcbde8312246204920f73e7ae",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "lilyinstarlight",
|
|
||||||
"ref": "tmp/fixed",
|
|
||||||
"repo": "nix-update",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixos-cosmic": {
|
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat",
|
||||||
"nix-update": "nix-update",
|
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710982899,
|
"lastModified": 1765528634,
|
||||||
"narHash": "sha256-W/uU62m9oVSizVwQJrQoHeXEv12xs4gk0CbXaizXVoA=",
|
"narHash": "sha256-uIavvJkDwTZD1QY/oSkDtPN9xwkLwQayoZ5xOni4SBY=",
|
||||||
"owner": "lilyinstarlight",
|
"owner": "tpwrules",
|
||||||
"repo": "nixos-cosmic",
|
"repo": "nixos-apple-silicon",
|
||||||
"rev": "00423f29206fcaded8296d87320b454166601da9",
|
"rev": "fc1440d6e6adb24d9b2650670744bae35654c867",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "lilyinstarlight",
|
"owner": "tpwrules",
|
||||||
"repo": "nixos-cosmic",
|
"repo": "nixos-apple-silicon",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710806803,
|
"lastModified": 1765472234,
|
||||||
"narHash": "sha256-qrxvLS888pNJFwJdK+hf1wpRCSQcqA6W5+Ox202NDa0=",
|
"narHash": "sha256-9VvC20PJPsleGMewwcWYKGzDIyjckEz8uWmT0vCDYK0=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "b06025f1533a1e07b6db3e75151caa155d1c7eb3",
|
"rev": "2fbfb1d73d239d2402a8fe03963e37aab15abe8b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -308,24 +268,34 @@
|
|||||||
"type": "indirect"
|
"type": "indirect"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1765644376,
|
||||||
|
"narHash": "sha256-yqHBL2wYGwjGL2GUF2w3tofWl8qO9tZEuI4wSqbCrtE=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "23735a82a828372c4ef92c660864e82fbe2f5fbe",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixvim": {
|
"nixvim": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"devshell": "devshell",
|
"flake-parts": "flake-parts",
|
||||||
"flake-compat": "flake-compat_2",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"flake-parts": "flake-parts_2",
|
"systems": "systems"
|
||||||
"home-manager": "home-manager_2",
|
|
||||||
"nix-darwin": "nix-darwin",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"pre-commit-hooks": "pre-commit-hooks"
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710936779,
|
"lastModified": 1765796308,
|
||||||
"narHash": "sha256-ecYnUzSWqRae10pp7J6ZE2BznTPJ9f8sLiIoDBQtRBw=",
|
"narHash": "sha256-szKgoF0JbDUvWkqjB2AyyFagmsF5ZFEjajZRUiUV9mU=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixvim",
|
"repo": "nixvim",
|
||||||
"rev": "4f6e90212c7ec56d7c03611fb86befa313e7f61f",
|
"rev": "12a76dd12beccd8d18249b05d10d6acda4e722e0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -334,41 +304,75 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"pre-commit-hooks": {
|
"nur": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat_3",
|
"flake-parts": [
|
||||||
"flake-utils": "flake-utils_2",
|
"stylix",
|
||||||
"gitignore": "gitignore",
|
"flake-parts"
|
||||||
"nixpkgs": [
|
|
||||||
"nixvim",
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
],
|
||||||
"nixpkgs-stable": [
|
"nixpkgs": [
|
||||||
"nixvim",
|
"stylix",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710843117,
|
"lastModified": 1764773531,
|
||||||
"narHash": "sha256-b6iKQeHegzpc697rxTPA3bpwGN3m50eLCgdQOmceFuE=",
|
"narHash": "sha256-mCBl7MD1WZ7yCG6bR9MmpPO2VydpNkWFgnslJRIT1YU=",
|
||||||
"owner": "cachix",
|
"owner": "nix-community",
|
||||||
"repo": "pre-commit-hooks.nix",
|
"repo": "NUR",
|
||||||
"rev": "e8dc1b4fe80c6fcededde7700e6a23bcdf7f3347",
|
"rev": "1d9616689e98beded059ad0384b9951e967a17fa",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "cachix",
|
"owner": "nix-community",
|
||||||
"repo": "pre-commit-hooks.nix",
|
"repo": "NUR",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"astal": "astal",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"master": "master",
|
"master": "master",
|
||||||
"nixos-cosmic": "nixos-cosmic",
|
"nixos-apple-silicon": "nixos-apple-silicon",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
"nixvim": "nixvim"
|
"nixvim": "nixvim",
|
||||||
|
"stylix": "stylix",
|
||||||
|
"zen-browser": "zen-browser"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"stylix": {
|
||||||
|
"inputs": {
|
||||||
|
"base16": "base16",
|
||||||
|
"base16-fish": "base16-fish",
|
||||||
|
"base16-helix": "base16-helix",
|
||||||
|
"base16-vim": "base16-vim",
|
||||||
|
"firefox-gnome-theme": "firefox-gnome-theme",
|
||||||
|
"flake-parts": "flake-parts_2",
|
||||||
|
"gnome-shell": "gnome-shell",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nur": "nur",
|
||||||
|
"systems": "systems_2",
|
||||||
|
"tinted-foot": "tinted-foot",
|
||||||
|
"tinted-kitty": "tinted-kitty",
|
||||||
|
"tinted-schemes": "tinted-schemes",
|
||||||
|
"tinted-tmux": "tinted-tmux",
|
||||||
|
"tinted-zed": "tinted-zed"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1765812876,
|
||||||
|
"narHash": "sha256-mML2DlWmvwPOzn8K9QEsiKGdt67iHW/LaK6Xw+ZENMk=",
|
||||||
|
"owner": "danth",
|
||||||
|
"repo": "stylix",
|
||||||
|
"rev": "9ba353558a288eb9d6fc3057bb418509dd8b4c01",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "danth",
|
||||||
|
"repo": "stylix",
|
||||||
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems": {
|
"systems": {
|
||||||
@@ -401,25 +405,107 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"treefmt-nix": {
|
"tinted-foot": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726913040,
|
||||||
|
"narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-foot",
|
||||||
|
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-foot",
|
||||||
|
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tinted-kitty": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1735730497,
|
||||||
|
"narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-kitty",
|
||||||
|
"rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-kitty",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tinted-schemes": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1763914658,
|
||||||
|
"narHash": "sha256-Hju0WtMf3iForxtOwXqGp3Ynipo0EYx1AqMKLPp9BJw=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "schemes",
|
||||||
|
"rev": "0f6be815d258e435c9b137befe5ef4ff24bea32c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "schemes",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tinted-tmux": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1764465359,
|
||||||
|
"narHash": "sha256-lbSVPqLEk2SqMrnpvWuKYGCaAlfWFMA6MVmcOFJjdjE=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-tmux",
|
||||||
|
"rev": "edf89a780e239263cc691a987721f786ddc4f6aa",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-tmux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tinted-zed": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1764464512,
|
||||||
|
"narHash": "sha256-rCD/pAhkMdCx6blsFwxIyvBJbPZZ1oL2sVFrH07lmqg=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-zed",
|
||||||
|
"rev": "907dbba5fb8cf69ebfd90b00813418a412d0a29a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-zed",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zen-browser": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"home-manager": [
|
||||||
|
"home-manager"
|
||||||
|
],
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixos-cosmic",
|
|
||||||
"nix-update",
|
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1698438538,
|
"lastModified": 1765764138,
|
||||||
"narHash": "sha256-AWxaKTDL3MtxaVTVU5lYBvSnlspOS0Fjt8GxBgnU0Do=",
|
"narHash": "sha256-Nb5y5xSDQLMeUYiA1bQkbmHffGm0d/XXWoJjFu8ovw0=",
|
||||||
"owner": "numtide",
|
"owner": "0xc000022070",
|
||||||
"repo": "treefmt-nix",
|
"repo": "zen-browser-flake",
|
||||||
"rev": "5deb8dc125a9f83b65ca86cf0c8167c46593e0b1",
|
"rev": "bd8815d0a686267386268e7cc70315124e21362b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "numtide",
|
"owner": "0xc000022070",
|
||||||
"repo": "treefmt-nix",
|
"repo": "zen-browser-flake",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
65
flake.nix
65
flake.nix
@@ -3,39 +3,75 @@
|
|||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "nixpkgs/nixos-unstable";
|
nixpkgs.url = "nixpkgs/nixos-unstable";
|
||||||
nixos-cosmic = {
|
stylix = {
|
||||||
url = "github:lilyinstarlight/nixos-cosmic";
|
url = "github:danth/stylix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
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";
|
||||||
|
};
|
||||||
|
nixos-apple-silicon = {
|
||||||
|
url = "github:tpwrules/nixos-apple-silicon";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
astal = {
|
||||||
|
url = "github:aylur/astal";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, nixos-cosmic, home-manager, master, 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;
|
||||||
modules = [
|
modules = [
|
||||||
{
|
#stylix.nixosModules.stylix
|
||||||
nix.settings = {
|
./hosts/desktop/configuration.nix
|
||||||
substituters = [ "https://cosmic.cachix.org/" ];
|
|
||||||
trusted-public-keys = [ "cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE=" ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
nixos-cosmic.nixosModules.default
|
|
||||||
./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.users.joshuaelm = {
|
home-manager.users.joshuaelm = {
|
||||||
imports = [ ./home.nix nixvim.homeManagerModules.nixvim];
|
imports = [ ./hosts/desktop/home.nix nixvim.homeModules.nixvim stylix.homeModules.stylix ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
nixos-laptop = nixpkgs.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
specialArgs = {inherit nixvim;};
|
||||||
|
specialArgs.inputs = inputs;
|
||||||
|
modules = [
|
||||||
|
{
|
||||||
|
}
|
||||||
|
nixos-apple-silicon.nixosModules.apple-silicon-support
|
||||||
|
#stylix.nixosModules.stylix
|
||||||
|
./hosts/mac-laptop/configuration.nix
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.extraSpecialArgs = {inherit inputs;};
|
||||||
|
home-manager.users.joshuaelm = {
|
||||||
|
imports = [ ./hosts/mac-laptop/home.nix nixvim.homeModules.nixvim stylix.homeModules.stylix ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
@@ -43,3 +79,4 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
44
home.nix
44
home.nix
@@ -1,44 +0,0 @@
|
|||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# 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 ];
|
|
||||||
|
|
||||||
|
|
||||||
home.packages = [
|
|
||||||
pkgs.element-desktop
|
|
||||||
pkgs.waybar
|
|
||||||
pkgs.signal-desktop
|
|
||||||
pkgs.swaybg
|
|
||||||
pkgs.kitty
|
|
||||||
pkgs.supersonic-wayland
|
|
||||||
pkgs.adw-gtk3
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
xdg.configFile.hypr.source = ./modules/hypr;
|
|
||||||
xdg.configFile.waybar.source = ./modules/waybar;
|
|
||||||
xdg.configFile.cava.source = ./modules/cava;
|
|
||||||
xdg.configFile.kitty.source = ./modules/kitty;
|
|
||||||
xdg.configFile.rofi.source = ./modules/rofi;
|
|
||||||
|
|
||||||
services.mpd-mpris.enable = true;
|
|
||||||
|
|
||||||
|
|
||||||
# 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";
|
|
||||||
|
|
||||||
# Let Home Manager install and manage itself.
|
|
||||||
programs.home-manager.enable = true;
|
|
||||||
}
|
|
||||||
146
hosts/desktop/certs/beammp.pem
Normal file
146
hosts/desktop/certs/beammp.pem
Normal 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-----
|
||||||
505
hosts/desktop/configuration.nix
Normal file
505
hosts/desktop/configuration.nix
Normal file
@@ -0,0 +1,505 @@
|
|||||||
|
#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, pkgs-master, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
services.avahi = {
|
||||||
|
enable = true;
|
||||||
|
nssmdns4 = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.graphics.enable = 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;
|
||||||
|
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 = [
|
||||||
|
"quiet"
|
||||||
|
"splash"
|
||||||
|
"boot.shell_on_fail"
|
||||||
|
"loglevel=3"
|
||||||
|
"rd.systemd.show_status=false"
|
||||||
|
"rd.udev.log_level=3"
|
||||||
|
"udev.log_priority=3"
|
||||||
|
];
|
||||||
|
extraModprobeConfig = ''
|
||||||
|
options bluetooth disable_ertm=Y
|
||||||
|
'';
|
||||||
|
# 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 = 5;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
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.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.xpadneo.enable = true;
|
||||||
|
|
||||||
|
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;
|
||||||
|
programs.hyprland = {
|
||||||
|
withUWSM = true;
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
/*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 = "128/48000";
|
||||||
|
pulse.default.req = "128/48000";
|
||||||
|
pulse.max.req = "128/48000";
|
||||||
|
pulse.min.quantum = "128/48000";
|
||||||
|
pulse.max.quantum = "128/48000";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
stream.properties = {
|
||||||
|
node.latency = "128/48000";
|
||||||
|
resample.quality = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services.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.bash;
|
||||||
|
};
|
||||||
|
/*programs.bash.interactiveShellInit = ''
|
||||||
|
if ! [ "$TERM" = "dumb" ] && [ -z "$BASH_EXECUTION_STRING" ]; then
|
||||||
|
exec nu
|
||||||
|
fi
|
||||||
|
'';*/
|
||||||
|
|
||||||
|
programs.fish.enable = false;
|
||||||
|
|
||||||
|
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.input-remapper.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
|
||||||
|
ffmpeg
|
||||||
|
oversteer
|
||||||
|
# cemu broken with latest update
|
||||||
|
oterm
|
||||||
|
wget
|
||||||
|
wlx-overlay-s
|
||||||
|
unzip
|
||||||
|
winetricks
|
||||||
|
cowsay
|
||||||
|
pfetch
|
||||||
|
ryubing
|
||||||
|
gomatrix
|
||||||
|
python3
|
||||||
|
pavucontrol
|
||||||
|
bluebubbles
|
||||||
|
xfce.thunar
|
||||||
|
parallel-launcher
|
||||||
|
corectrl
|
||||||
|
wiremix
|
||||||
|
termsonic
|
||||||
|
steamtinkerlaunch
|
||||||
|
kdePackages.kdenlive
|
||||||
|
wineWowPackages.wayland
|
||||||
|
blueman
|
||||||
|
lapce
|
||||||
|
prismlauncher
|
||||||
|
protonup-qt
|
||||||
|
heroic
|
||||||
|
protontricks
|
||||||
|
gamescope
|
||||||
|
playerctl
|
||||||
|
wine
|
||||||
|
libreoffice
|
||||||
|
neovide
|
||||||
|
flatpak
|
||||||
|
];
|
||||||
|
|
||||||
|
# VirtualBox
|
||||||
|
|
||||||
|
virtualisation.virtualbox.host.enable = false;
|
||||||
|
users.extraGroups.vboxusers.members = [ "user-with-access-to-virtualbox" ];
|
||||||
|
|
||||||
|
services.flatpak.enable = true;
|
||||||
|
|
||||||
|
services.xserver.enableTCP = 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 = 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: {
|
||||||
|
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 8188 ];
|
||||||
|
networking.firewall.allowedUDPPorts = [ 7860 8188 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. It‘s 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
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
@@ -14,20 +14,17 @@
|
|||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
fileSystems."/" =
|
fileSystems."/" =
|
||||||
{ device = "/dev/disk/by-uuid/02f01d24-1b9e-461d-a04d-ed96956965b8";
|
{ device = "/dev/disk/by-uuid/6452f60b-602c-42ae-bff6-7b0a35e59bfb";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
boot.initrd.luks.devices."luks-3ec9ede1-2243-4b13-b844-65e4d52bb8ad".device = "/dev/disk/by-uuid/3ec9ede1-2243-4b13-b844-65e4d52bb8ad";
|
|
||||||
|
|
||||||
fileSystems."/boot" =
|
fileSystems."/boot" =
|
||||||
{ device = "/dev/disk/by-uuid/635E-26F4";
|
{ device = "/dev/disk/by-uuid/9947-B99A";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0077" "dmask=0077" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices =
|
swapDevices = [ ];
|
||||||
[ { device = "/dev/disk/by-uuid/d6ee62ed-d698-417c-98d1-65f5c18b22c0"; }
|
|
||||||
];
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
73
hosts/desktop/home.nix
Normal file
73
hosts/desktop/home.nix
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
{ 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 ../../modules/ashell ../../modules/waybar/waybar.nix ../../modules/zen ../../modules/rofi ../../modules/kitty ../../modules/cava ../../modules/starship ../../modules/fuzzel ../../modules/nushell ];
|
||||||
|
|
||||||
|
|
||||||
|
home.packages = [
|
||||||
|
pkgs.element-desktop
|
||||||
|
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.cava.enable = true;
|
||||||
|
programs.btop.enable = true;
|
||||||
|
services.hyprpaper.enable = true;
|
||||||
|
home.shell.enableFishIntegration = true;
|
||||||
|
|
||||||
|
home.file.".icons/default".source = "${pkgs.bibata-cursors}/share/icons/Bibata-Modern-Classic";
|
||||||
|
|
||||||
|
services.mpd-mpris.enable = true;
|
||||||
|
|
||||||
|
# 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;
|
||||||
|
}
|
||||||
221
hosts/mac-laptop/configuration.nix
Normal file
221
hosts/mac-laptop/configuration.nix
Normal file
@@ -0,0 +1,221 @@
|
|||||||
|
# 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, inputs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ # Include the results of the hardware scan.
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
powerManagement.enable = true;
|
||||||
|
hardware.asahi.extractPeripheralFirmware = true;
|
||||||
|
hardware.asahi.peripheralFirmwareDirectory = ./firmware;
|
||||||
|
hardware.asahi.enable = true;
|
||||||
|
services.upower.enable = true;
|
||||||
|
|
||||||
|
hardware.apple.touchBar.enable = true;
|
||||||
|
hardware.apple.touchBar.package = pkgs.tiny-dfr;
|
||||||
|
|
||||||
|
# Bootloader.
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = false;
|
||||||
|
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;
|
||||||
|
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;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.hostName = "nixos-laptop"; # Define your hostname.
|
||||||
|
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||||
|
|
||||||
|
# Configure network proxy if necessary
|
||||||
|
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||||
|
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||||
|
|
||||||
|
# Enable networking
|
||||||
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
|
# Set your time zone.
|
||||||
|
time.timeZone = "America/Chicago";
|
||||||
|
|
||||||
|
# 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 Cosmic
|
||||||
|
services.desktopManager.cosmic.enable = false;
|
||||||
|
services.displayManager.cosmic-greeter.enable = false;
|
||||||
|
services.xserver.desktopManager.gnome.enable = false;
|
||||||
|
services.desktopManager.plasma6.enable = false;
|
||||||
|
services.displayManager.sddm.enable = false;
|
||||||
|
services.libinput.enable = true;
|
||||||
|
programs.hyprland.enable = true;
|
||||||
|
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||||
|
|
||||||
|
services.greetd = {
|
||||||
|
enable = true;
|
||||||
|
settings = rec {
|
||||||
|
initial_session = {
|
||||||
|
command = "${pkgs.hyprland}/bin/Hyprland";
|
||||||
|
user = "joshuaelm";
|
||||||
|
};
|
||||||
|
default_session = initial_session;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
# Swap
|
||||||
|
swapDevices = [ {
|
||||||
|
device = "/var/lib/swapfile";
|
||||||
|
size = 16*1024;
|
||||||
|
} ];
|
||||||
|
|
||||||
|
|
||||||
|
hardware.graphics = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
# Configure keymap in X11
|
||||||
|
services.xserver.xkb = {
|
||||||
|
layout = "us";
|
||||||
|
variant = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
# fingerprint
|
||||||
|
systemd.services.fprintd = {
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
serviceConfig.Type = "simple";
|
||||||
|
};
|
||||||
|
services.fprintd.enable = true;
|
||||||
|
|
||||||
|
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||||
|
users.users.joshuaelm = {
|
||||||
|
isNormalUser = true;
|
||||||
|
description = "Joshua Elmasri";
|
||||||
|
extraGroups = [ "networkmanager" "wheel" "adbusers" "dialout" ];
|
||||||
|
packages = with pkgs; [];
|
||||||
|
shell = pkgs.fish;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.fish.enable = true;
|
||||||
|
|
||||||
|
programs.adb.enable = true;
|
||||||
|
|
||||||
|
# Allow unfree packages
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
# List packages installed in system profile. To search, run:
|
||||||
|
# $ nix search wget
|
||||||
|
# Flatpak
|
||||||
|
#services.flatpak.enable = true;
|
||||||
|
#services.flatpak.update.onActivation = true;
|
||||||
|
#services.flatpak.packages = [
|
||||||
|
# "app.bluebubbles.BlueBubbles"
|
||||||
|
# "com.github.johnfactotum.Foliate"
|
||||||
|
# "org.jdownloader.JDownloader"
|
||||||
|
#];
|
||||||
|
|
||||||
|
# Fonts
|
||||||
|
|
||||||
|
fonts.packages = with pkgs; [
|
||||||
|
fira-code
|
||||||
|
fira-code-symbols
|
||||||
|
roboto
|
||||||
|
nerd-fonts.fira-code
|
||||||
|
nerd-fonts.jetbrains-mono
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
programs.kdeconnect.enable = true;
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||||
|
# wget
|
||||||
|
neovim
|
||||||
|
killall
|
||||||
|
hypridle
|
||||||
|
git
|
||||||
|
bibata-cursors
|
||||||
|
element-desktop
|
||||||
|
#inputs.zen-browser.packages."${system}".default
|
||||||
|
rofi
|
||||||
|
playerctl
|
||||||
|
cava
|
||||||
|
moonlight-qt
|
||||||
|
];
|
||||||
|
|
||||||
|
# Bluetooth
|
||||||
|
hardware.bluetooth.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;
|
||||||
|
|
||||||
|
# Enable Flakes
|
||||||
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
|
||||||
|
# Open ports in the firewall.
|
||||||
|
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||||
|
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||||
|
# networking.firewall.allowedTCPPortRanges = [ { from = 42000; to = 420001; } ];
|
||||||
|
# Or disable the firewall altogether.
|
||||||
|
networking.firewall.enable = false;
|
||||||
|
|
||||||
|
# This value determines the NixOS release from which the default
|
||||||
|
# settings for stateful data, like file locations and database versions
|
||||||
|
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||||
|
# 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 = "25.05"; # Did you read the comment?
|
||||||
|
|
||||||
|
}
|
||||||
BIN
hosts/mac-laptop/firmware/all_firmware.tar.gz
Executable file
BIN
hosts/mac-laptop/firmware/all_firmware.tar.gz
Executable file
Binary file not shown.
BIN
hosts/mac-laptop/firmware/kernelcache.release.mac13g
Executable file
BIN
hosts/mac-laptop/firmware/kernelcache.release.mac13g
Executable file
Binary file not shown.
38
hosts/mac-laptop/hardware-configuration.nix
Normal file
38
hosts/mac-laptop/hardware-configuration.nix
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "usbhid" "usb_storage" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/b80e3211-820e-48b1-9c64-97c275b26de2";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/60EA-1224";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0022" "dmask=0022" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enu1u4c2.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlan0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
|
||||||
|
}
|
||||||
81
hosts/mac-laptop/home.nix
Normal file
81
hosts/mac-laptop/home.nix
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
{ 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_laptop.nix ../../modules/waybar/waybar.nix ../../modules/ashell ../../modules/zen ../../modules/rofi ../../modules/kitty ../../modules/starship ];
|
||||||
|
|
||||||
|
|
||||||
|
home.packages = [
|
||||||
|
pkgs.element-desktop
|
||||||
|
pkgs.signal-desktop-bin
|
||||||
|
pkgs.supersonic
|
||||||
|
pkgs.libreoffice
|
||||||
|
pkgs.adw-gtk3
|
||||||
|
pkgs.thunderbird
|
||||||
|
pkgs.xfce.thunar
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.hyprlock.enable = true;
|
||||||
|
programs.cava.enable = true;
|
||||||
|
programs.btop.enable = true;
|
||||||
|
services.hyprpaper.enable = true;
|
||||||
|
wayland.windowManager.hyprland.enable = true;
|
||||||
|
|
||||||
|
#xdg.configFile.hypr.source = ./modules/hypr;
|
||||||
|
#xdg.configFile.waybar.source = ./modules/waybar;
|
||||||
|
#xdg.configFile.cava.source = ./modules/cava;
|
||||||
|
#xdg.configFile.kitty.source = ./modules/kitty;
|
||||||
|
#xdg.configFile.rofi.source = ./modules/rofi;
|
||||||
|
#xdg.configFile.dunst.source = ./modules/dunst;
|
||||||
|
#home.file.".cache/ags/hyprpanel/options.json".source = ./modules/hyprpanel/options.json;
|
||||||
|
|
||||||
|
|
||||||
|
home.file.".icons/default".source = "${pkgs.bibata-cursors}/share/icons/Bibata-Modern-Classic";
|
||||||
|
|
||||||
|
services.mpd-mpris.enable = true;
|
||||||
|
|
||||||
|
|
||||||
|
# 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;
|
||||||
|
}
|
||||||
35
modules/ashell/default.nix
Normal file
35
modules/ashell/default.nix
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{pkgs, ...}:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.ashell = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
app_launcher_cmd = "rofi -show drun";
|
||||||
|
modules = {
|
||||||
|
left = [
|
||||||
|
"Workspaces"
|
||||||
|
];
|
||||||
|
center = [
|
||||||
|
"MediaPlayer"
|
||||||
|
];
|
||||||
|
right = [
|
||||||
|
"SystemInfo"
|
||||||
|
[
|
||||||
|
"Settings"
|
||||||
|
"Clock"
|
||||||
|
"Privacy"
|
||||||
|
"Tray"
|
||||||
|
]
|
||||||
|
];
|
||||||
|
};
|
||||||
|
workspaces = {
|
||||||
|
visibility_mode = "MonitorSpecific";
|
||||||
|
};
|
||||||
|
remove_airplane_btn = true;
|
||||||
|
appearance = {
|
||||||
|
style = "Solid";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,216 +0,0 @@
|
|||||||
## Configuration file for CAVA.
|
|
||||||
# Remove the ; to change parameters.
|
|
||||||
|
|
||||||
|
|
||||||
[general]
|
|
||||||
|
|
||||||
# Smoothing mode. Can be 'normal', 'scientific' or 'waves'. DEPRECATED as of 0.6.0
|
|
||||||
; mode = normal
|
|
||||||
|
|
||||||
# Accepts only non-negative values.
|
|
||||||
; framerate = 60
|
|
||||||
|
|
||||||
# 'autosens' will attempt to decrease sensitivity if the bars peak. 1 = on, 0 = off
|
|
||||||
# new as of 0.6.0 autosens of low values (dynamic range)
|
|
||||||
# 'overshoot' allows bars to overshoot (in % of terminal height) without initiating autosens. DEPRECATED as of 0.6.0
|
|
||||||
; autosens = 1
|
|
||||||
; overshoot = 20
|
|
||||||
|
|
||||||
# Manual sensitivity in %. If autosens is enabled, this will only be the initial value.
|
|
||||||
# 200 means double height. Accepts only non-negative values.
|
|
||||||
; sensitivity = 100
|
|
||||||
|
|
||||||
# The number of bars (0-512). 0 sets it to auto (fill up console).
|
|
||||||
# Bars' width and space between bars in number of characters.
|
|
||||||
; bars = 0
|
|
||||||
; bar_width = 2
|
|
||||||
; bar_spacing = 1
|
|
||||||
# bar_height is only used for output in "noritake" format
|
|
||||||
; bar_height = 32
|
|
||||||
|
|
||||||
# For SDL width and space between bars is in pixels, defaults are:
|
|
||||||
; bar_width = 20
|
|
||||||
; bar_spacing = 5
|
|
||||||
|
|
||||||
# sdl_glsl have these default values, they are only used to calulate max number of bars.
|
|
||||||
; bar_width = 1
|
|
||||||
; bar_spacing = 0
|
|
||||||
|
|
||||||
|
|
||||||
# Lower and higher cutoff frequencies for lowest and highest bars
|
|
||||||
# the bandwidth of the visualizer.
|
|
||||||
# Note: there is a minimum total bandwidth of 43Mhz x number of bars.
|
|
||||||
# Cava will automatically increase the higher cutoff if a too low band is specified.
|
|
||||||
; lower_cutoff_freq = 50
|
|
||||||
; higher_cutoff_freq = 10000
|
|
||||||
|
|
||||||
|
|
||||||
# Seconds with no input before cava goes to sleep mode. Cava will not perform FFT or drawing and
|
|
||||||
# only check for input once per second. Cava will wake up once input is detected. 0 = disable.
|
|
||||||
; sleep_timer = 0
|
|
||||||
|
|
||||||
|
|
||||||
[input]
|
|
||||||
|
|
||||||
# Audio capturing method. Possible methods are: 'pulse', 'alsa', 'fifo', 'sndio' or 'shmem'
|
|
||||||
# Defaults to 'pulse', 'pipewire', 'alsa' or 'fifo', in that order, dependent on what support cava was built with.
|
|
||||||
# On Mac it defaults to 'portaudio' or 'fifo'
|
|
||||||
# On windows this is automatic and no input settings are needed.
|
|
||||||
#
|
|
||||||
# All input methods uses the same config variable 'source'
|
|
||||||
# to define where it should get the audio.
|
|
||||||
#
|
|
||||||
# For pulseaudio and pipewire 'source' will be the source. Default: 'auto', which uses the monitor source of the default sink
|
|
||||||
# (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them).
|
|
||||||
#
|
|
||||||
# For pipewire 'source' will be the object name or object.serial of the device to capture from.
|
|
||||||
# Both input and output devices are supported.
|
|
||||||
#
|
|
||||||
# For alsa 'source' will be the capture device.
|
|
||||||
# For fifo 'source' will be the path to fifo-file.
|
|
||||||
# For shmem 'source' will be /squeezelite-AA:BB:CC:DD:EE:FF where 'AA:BB:CC:DD:EE:FF' will be squeezelite's MAC address
|
|
||||||
; method = pulse
|
|
||||||
; source = auto
|
|
||||||
|
|
||||||
; method = pipewire
|
|
||||||
; source = auto
|
|
||||||
|
|
||||||
; method = alsa
|
|
||||||
; source = hw:Loopback,1
|
|
||||||
|
|
||||||
; method = fifo
|
|
||||||
; source = /tmp/mpd.fifo
|
|
||||||
; sample_rate = 44100
|
|
||||||
; sample_bits = 16
|
|
||||||
|
|
||||||
; method = shmem
|
|
||||||
; source = /squeezelite-AA:BB:CC:DD:EE:FF
|
|
||||||
|
|
||||||
; method = portaudio
|
|
||||||
; source = auto
|
|
||||||
|
|
||||||
|
|
||||||
[output]
|
|
||||||
|
|
||||||
# Output method. Can be 'ncurses', 'noncurses', 'raw', 'noritake', 'sdl'
|
|
||||||
# or 'sdl_glsl'.
|
|
||||||
# 'noncurses' uses a custom framebuffer technique and prints only changes
|
|
||||||
# from frame to frame in the terminal. 'ncurses' is default if supported.
|
|
||||||
#
|
|
||||||
# 'raw' is an 8 or 16 bit (configurable via the 'bit_format' option) data
|
|
||||||
# stream of the bar heights that can be used to send to other applications.
|
|
||||||
# 'raw' defaults to 200 bars, which can be adjusted in the 'bars' option above.
|
|
||||||
#
|
|
||||||
# 'noritake' outputs a bitmap in the format expected by a Noritake VFD display
|
|
||||||
# in graphic mode. It only support the 3000 series graphical VFDs for now.
|
|
||||||
#
|
|
||||||
# 'sdl' uses the Simple DirectMedia Layer to render in a graphical context.
|
|
||||||
# 'sdl_glsl' uses SDL to create an OpenGL context. Write your own shaders or
|
|
||||||
# use one of the predefined ones.
|
|
||||||
; method = ncurses
|
|
||||||
|
|
||||||
# Orientation of the visualization. Can be 'bottom', 'top', 'left' or 'right'.
|
|
||||||
# Default is 'bottom'. Other orientations are only supported on sdl and ncruses
|
|
||||||
# output. Note: many fonts have weird glyphs for 'top' and 'right' characters,
|
|
||||||
# which can make ncurses not look right.
|
|
||||||
; orientation = bottom
|
|
||||||
|
|
||||||
# Visual channels. Can be 'stereo' or 'mono'.
|
|
||||||
# 'stereo' mirrors both channels with low frequencies in center.
|
|
||||||
# 'mono' outputs left to right lowest to highest frequencies.
|
|
||||||
# 'mono_option' set mono to either take input from 'left', 'right' or 'average'.
|
|
||||||
# set 'reverse' to 1 to display frequencies the other way around.
|
|
||||||
; channels = stereo
|
|
||||||
; mono_option = average
|
|
||||||
; reverse = 0
|
|
||||||
|
|
||||||
# Raw output target. A fifo will be created if target does not exist.
|
|
||||||
; raw_target = /dev/stdout
|
|
||||||
|
|
||||||
# Raw data format. Can be 'binary' or 'ascii'.
|
|
||||||
; data_format = binary
|
|
||||||
|
|
||||||
# Binary bit format, can be '8bit' (0-255) or '16bit' (0-65530).
|
|
||||||
; bit_format = 16bit
|
|
||||||
|
|
||||||
# Ascii max value. In 'ascii' mode range will run from 0 to value specified here
|
|
||||||
; ascii_max_range = 1000
|
|
||||||
|
|
||||||
# Ascii delimiters. In ascii format each bar and frame is separated by a delimiters.
|
|
||||||
# Use decimal value in ascii table (i.e. 59 = ';' and 10 = '\n' (line feed)).
|
|
||||||
; bar_delimiter = 59
|
|
||||||
; frame_delimiter = 10
|
|
||||||
|
|
||||||
# sdl window size and position. -1,-1 is centered.
|
|
||||||
; sdl_width = 1000
|
|
||||||
; sdl_height = 500
|
|
||||||
; sdl_x = -1
|
|
||||||
; sdl_y= -1
|
|
||||||
|
|
||||||
# set label on bars on the x-axis. Can be 'frequency' or 'none'. Default: 'none'
|
|
||||||
# 'frequency' displays the lower cut off frequency of the bar above.
|
|
||||||
# Only supported on ncurses and noncurses output.
|
|
||||||
; xaxis = none
|
|
||||||
|
|
||||||
# enable alacritty synchronized updates. 1 = on, 0 = off
|
|
||||||
# removes flickering in alacritty terminal emulator.
|
|
||||||
# defaults to off since the behaviour in other terminal emulators is unknown
|
|
||||||
; alacritty_sync = 0
|
|
||||||
|
|
||||||
# Shaders for sdl_glsl, located in $HOME/.config/cava/shaders
|
|
||||||
; vertex_shader = pass_through.vert
|
|
||||||
; fragment_shader = bar_spectrum.frag
|
|
||||||
|
|
||||||
; for glsl output mode, keep rendering even if no audio
|
|
||||||
; continuous_rendering = 0
|
|
||||||
|
|
||||||
[color]
|
|
||||||
|
|
||||||
background = '#191724'
|
|
||||||
gradient = 1
|
|
||||||
gradient_count = 6
|
|
||||||
gradient_color_1 = '#31748f'
|
|
||||||
gradient_color_2 = '#9ccfd8'
|
|
||||||
gradient_color_3 = '#c4a7e7'
|
|
||||||
gradient_color_4 = '#ebbcba'
|
|
||||||
gradient_color_5 = '#f6c177'
|
|
||||||
gradient_color_6 = '#eb6f92'
|
|
||||||
|
|
||||||
|
|
||||||
[smoothing]
|
|
||||||
|
|
||||||
# Percentage value for integral smoothing. Takes values from 0 - 100.
|
|
||||||
# Higher values means smoother, but less precise. 0 to disable.
|
|
||||||
# DEPRECATED as of 0.8.0, use noise_reduction instead
|
|
||||||
; integral = 77
|
|
||||||
|
|
||||||
# Disables or enables the so-called "Monstercat smoothing" with or without "waves". Set to 0 to disable.
|
|
||||||
; monstercat = 0
|
|
||||||
; waves = 0
|
|
||||||
|
|
||||||
# Set gravity percentage for "drop off". Higher values means bars will drop faster.
|
|
||||||
# Accepts only non-negative values. 50 means half gravity, 200 means double. Set to 0 to disable "drop off".
|
|
||||||
# DEPRECATED as of 0.8.0, use noise_reduction instead
|
|
||||||
; gravity = 100
|
|
||||||
|
|
||||||
|
|
||||||
# In bar height, bars that would have been lower that this will not be drawn.
|
|
||||||
# DEPRECATED as of 0.8.0
|
|
||||||
; ignore = 0
|
|
||||||
|
|
||||||
# Noise reduction, int 0 - 100. default 77
|
|
||||||
# the raw visualization is very noisy, this factor adjusts the integral and gravity filters to keep the signal smooth
|
|
||||||
# 100 will be very slow and smooth, 0 will be fast but noisy.
|
|
||||||
; noise_reduction = 77
|
|
||||||
|
|
||||||
|
|
||||||
[eq]
|
|
||||||
|
|
||||||
# This one is tricky. You can have as much keys as you want.
|
|
||||||
# Remember to uncomment more than one key! More keys = more precision.
|
|
||||||
# Look at readme.md on github for further explanations and examples.
|
|
||||||
; 1 = 1 # bass
|
|
||||||
; 2 = 1
|
|
||||||
; 3 = 1 # midtone
|
|
||||||
; 4 = 1
|
|
||||||
; 5 = 1 # treble
|
|
||||||
5
modules/cava/default.nix
Normal file
5
modules/cava/default.nix
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{pkgs, ...}:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.cava.enable = true;
|
||||||
|
}
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
#version 330
|
|
||||||
|
|
||||||
in vec2 fragCoord;
|
|
||||||
out vec4 fragColor;
|
|
||||||
|
|
||||||
// bar values. defaults to left channels first (low to high), then right (high to low).
|
|
||||||
uniform float bars[512];
|
|
||||||
|
|
||||||
uniform int bars_count; // number of bars (left + right) (configurable)
|
|
||||||
uniform int bar_width; // bar width (configurable), not used here
|
|
||||||
uniform int bar_spacing; // space bewteen bars (configurable)
|
|
||||||
|
|
||||||
uniform vec3 u_resolution; // window resolution
|
|
||||||
|
|
||||||
//colors, configurable in cava config file (r,g,b) (0.0 - 1.0)
|
|
||||||
uniform vec3 bg_color; // background color
|
|
||||||
uniform vec3 fg_color; // foreground color
|
|
||||||
|
|
||||||
uniform int gradient_count;
|
|
||||||
uniform vec3 gradient_colors[8]; // gradient colors
|
|
||||||
|
|
||||||
vec3 normalize_C(float y,vec3 col_1, vec3 col_2, float y_min, float y_max)
|
|
||||||
{
|
|
||||||
//create color based on fraction of this color and next color
|
|
||||||
float yr = (y - y_min) / (y_max - y_min);
|
|
||||||
return col_1 * (1.0 - yr) + col_2 * yr;
|
|
||||||
}
|
|
||||||
|
|
||||||
void main()
|
|
||||||
{
|
|
||||||
// find which bar to use based on where we are on the x axis
|
|
||||||
float x = u_resolution.x * fragCoord.x;
|
|
||||||
int bar = int(bars_count * fragCoord.x);
|
|
||||||
|
|
||||||
//calculate a bar size
|
|
||||||
float bar_size = u_resolution.x / bars_count;
|
|
||||||
|
|
||||||
//the y coordinate and bar values are the same
|
|
||||||
float y = bars[bar];
|
|
||||||
|
|
||||||
// make sure there is a thin line at bottom
|
|
||||||
if (y * u_resolution.y < 1.0)
|
|
||||||
{
|
|
||||||
y = 1.0 / u_resolution.y;
|
|
||||||
}
|
|
||||||
|
|
||||||
//draw the bar up to current height
|
|
||||||
if (y > fragCoord.y)
|
|
||||||
{
|
|
||||||
//make some space between bars basen on settings
|
|
||||||
if (x > (bar + 1) * (bar_size) - bar_spacing)
|
|
||||||
{
|
|
||||||
fragColor = vec4(bg_color,1.0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (gradient_count == 0)
|
|
||||||
{
|
|
||||||
fragColor = vec4(fg_color,1.0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//find which color in the configured gradient we are at
|
|
||||||
int color = int((gradient_count - 1) * fragCoord.y);
|
|
||||||
|
|
||||||
//find where on y this and next color is supposed to be
|
|
||||||
float y_min = color / (gradient_count - 1.0);
|
|
||||||
float y_max = (color + 1.0) / (gradient_count - 1.0);
|
|
||||||
|
|
||||||
//make color
|
|
||||||
fragColor = vec4(normalize_C(fragCoord.y, gradient_colors[color], gradient_colors[color + 1], y_min, y_max), 1.0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fragColor = vec4(bg_color,1.0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
#version 330
|
|
||||||
|
|
||||||
in vec2 fragCoord;
|
|
||||||
out vec4 fragColor;
|
|
||||||
|
|
||||||
// bar values. defaults to left channels first (low to high), then right (high to low).
|
|
||||||
uniform float bars[512];
|
|
||||||
|
|
||||||
uniform int bars_count; // number of bars (left + right) (configurable)
|
|
||||||
|
|
||||||
uniform vec3 u_resolution; // window resolution, not used here
|
|
||||||
|
|
||||||
//colors, configurable in cava config file
|
|
||||||
uniform vec3 bg_color; // background color(r,g,b) (0.0 - 1.0), not used here
|
|
||||||
uniform vec3 fg_color; // foreground color, not used here
|
|
||||||
|
|
||||||
void main()
|
|
||||||
{
|
|
||||||
// find which bar to use based on where we are on the x axis
|
|
||||||
int bar = int(bars_count * fragCoord.x);
|
|
||||||
|
|
||||||
float bar_y = 1.0 - abs((fragCoord.y - 0.5)) * 2.0;
|
|
||||||
float y = (bars[bar]) * bar_y;
|
|
||||||
|
|
||||||
float bar_x = (fragCoord.x - float(bar) / float(bars_count)) * bars_count;
|
|
||||||
float bar_r = 1.0 - abs((bar_x - 0.5)) * 2;
|
|
||||||
|
|
||||||
bar_r = bar_r * bar_r * 2;
|
|
||||||
|
|
||||||
// set color
|
|
||||||
fragColor.r = fg_color.x * y * bar_r;
|
|
||||||
fragColor.g = fg_color.y * y * bar_r;
|
|
||||||
fragColor.b = fg_color.z * y * bar_r;
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
#version 330
|
|
||||||
|
|
||||||
|
|
||||||
// Input vertex data, different for all executions of this shader.
|
|
||||||
layout(location = 0) in vec3 vertexPosition_modelspace;
|
|
||||||
|
|
||||||
// Output data ; will be interpolated for each fragment.
|
|
||||||
out vec2 fragCoord;
|
|
||||||
|
|
||||||
void main()
|
|
||||||
{
|
|
||||||
gl_Position = vec4(vertexPosition_modelspace,1);
|
|
||||||
fragCoord = (vertexPosition_modelspace.xy+vec2(1,1))/2.0;
|
|
||||||
}
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.services.xserver.displayManager.cosmic-greeter;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
meta.maintainers = with lib.maintainers; [ nyanbinary ];
|
|
||||||
|
|
||||||
options.services.xserver.displayManager.cosmic-greeter = {
|
|
||||||
enable = lib.mkEnableOption (lib.mdDoc "COSMIC greeter");
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
services.greetd = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
default_session = {
|
|
||||||
user = "cosmic-greeter";
|
|
||||||
command = "${pkgs.coreutils}/bin/env XCURSOR_THEME=Pop systemd-cat -t cosmic-greeter ${pkgs.cosmic-comp}/bin/cosmic-comp ${pkgs.cosmic-greeter}/bin/cosmic-greeter";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.cosmic-greeter-daemon = {
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
before = [ "greetd.service" ];
|
|
||||||
serviceConfig = {
|
|
||||||
ExecStart = "${pkgs.cosmic-greeter}/bin/cosmic-greeter-daemon";
|
|
||||||
Restart = "on-failure";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
|
||||||
"d '/var/lib/cosmic-greeter' - cosmic-greeter cosmic-greeter - -"
|
|
||||||
];
|
|
||||||
|
|
||||||
users.users.cosmic-greeter = {
|
|
||||||
isSystemUser = true;
|
|
||||||
home = "/var/lib/cosmic-greeter";
|
|
||||||
group = "cosmic-greeter";
|
|
||||||
};
|
|
||||||
|
|
||||||
users.groups.cosmic-greeter = { };
|
|
||||||
|
|
||||||
hardware.opengl.enable = true;
|
|
||||||
services.xserver.libinput.enable = true;
|
|
||||||
|
|
||||||
security.pam.services.cosmic-greeter = {};
|
|
||||||
|
|
||||||
services.dbus.packages = with pkgs; [ cosmic-greeter ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.services.xserver.desktopManager.cosmic;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
meta.maintainers = with lib.maintainers; [ nyanbinary ];
|
|
||||||
|
|
||||||
options.services.xserver.desktopManager.cosmic = {
|
|
||||||
enable = lib.mkEnableOption (lib.mdDoc "COSMIC desktop environment");
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
# seed configuration in nixos-generate-config
|
|
||||||
system.nixos-generate-config.desktopConfiguration = [''
|
|
||||||
# Enable the COSMIC Desktop Environment.
|
|
||||||
services.xserver.displayManager.cosmic-greeter.enable = true;
|
|
||||||
services.xserver.desktopManager.cosmic.enable = true;
|
|
||||||
''];
|
|
||||||
|
|
||||||
# environment packages
|
|
||||||
environment.pathsToLink = [ "/share/cosmic" ];
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
gnome.adwaita-icon-theme
|
|
||||||
cosmic-applibrary
|
|
||||||
cosmic-applets
|
|
||||||
cosmic-bg
|
|
||||||
cosmic-comp
|
|
||||||
cosmic-edit
|
|
||||||
cosmic-files
|
|
||||||
cosmic-greeter
|
|
||||||
cosmic-icons
|
|
||||||
cosmic-launcher
|
|
||||||
cosmic-notifications
|
|
||||||
cosmic-osd
|
|
||||||
cosmic-panel
|
|
||||||
cosmic-randr
|
|
||||||
cosmic-screenshot
|
|
||||||
cosmic-session
|
|
||||||
cosmic-settings
|
|
||||||
cosmic-settings-daemon
|
|
||||||
cosmic-term
|
|
||||||
cosmic-workspaces-epoch
|
|
||||||
hicolor-icon-theme
|
|
||||||
pop-icon-theme
|
|
||||||
pop-launcher
|
|
||||||
];
|
|
||||||
|
|
||||||
# xdg portal packages and config
|
|
||||||
xdg.portal = {
|
|
||||||
enable = true;
|
|
||||||
extraPortals = with pkgs; [
|
|
||||||
xdg-desktop-portal-cosmic
|
|
||||||
xdg-desktop-portal-gtk
|
|
||||||
];
|
|
||||||
configPackages = with pkgs; [
|
|
||||||
xdg-desktop-portal-cosmic
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# fonts
|
|
||||||
fonts.packages = with pkgs; [
|
|
||||||
fira-mono
|
|
||||||
];
|
|
||||||
|
|
||||||
# required features
|
|
||||||
hardware.opengl.enable = true;
|
|
||||||
services.xserver.libinput.enable = true;
|
|
||||||
|
|
||||||
# optional features
|
|
||||||
hardware.pulseaudio.enable = lib.mkDefault true;
|
|
||||||
|
|
||||||
# required dbus services
|
|
||||||
services.upower.enable = true;
|
|
||||||
security.polkit.enable = true;
|
|
||||||
|
|
||||||
# session packages
|
|
||||||
services.xserver.displayManager.sessionPackages = with pkgs; [ cosmic-session ];
|
|
||||||
systemd.packages = with pkgs; [ cosmic-session ];
|
|
||||||
|
|
||||||
# required for screen locker
|
|
||||||
security.pam.services.cosmic-greeter = {};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
9
modules/fish/default.nix
Normal file
9
modules/fish/default.nix
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.fish.enable = true;
|
||||||
|
home.shell.enableFishIntegration = true;
|
||||||
|
programs.fish.functions = {
|
||||||
|
fish_greeting = "";
|
||||||
|
};
|
||||||
|
}
|
||||||
39
modules/fuzzel/default.nix
Normal file
39
modules/fuzzel/default.nix
Normal 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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
212
modules/hypr/default.nix
Normal file
212
modules/hypr/default.nix
Normal file
@@ -0,0 +1,212 @@
|
|||||||
|
{pkgs, ...}:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.hyprpolkitagent.enable = true;
|
||||||
|
wayland.windowManager.hyprland.enable = true;
|
||||||
|
wayland.windowManager.hyprland.package = null;
|
||||||
|
wayland.windowManager.hyprland.portalPackage = null;
|
||||||
|
wayland.windowManager.hyprland.extraConfig = ''
|
||||||
|
autogenerated = 0 # remove this line to remove the warning
|
||||||
|
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||||
|
monitor = HDMI-A-1, 3840x2160@120, 0x0, auto, bitdepth, 10, sdrsaturation, 1, sdrbrightness, 1
|
||||||
|
#monitor = HDMI-A-1, disable
|
||||||
|
#monitor = sunshine, 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
|
||||||
|
exec-once = hyprctl dispatch workspace 1
|
||||||
|
#exec-once = linux-wallpaperengine --screen-root HDMI-A-1 --silent --fps 60 3000562427
|
||||||
|
exec-once = hyprlock
|
||||||
|
exec-once = waybar
|
||||||
|
exec-once = pw-metadata -n settings 0 clock.force-quantum 2048
|
||||||
|
# exec-once = ashell
|
||||||
|
exec-once = systemctl --user start hyprpolkitagent
|
||||||
|
exec-once = sunshine
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||||
|
|
||||||
|
# Execute your favorite apps at launch
|
||||||
|
# exec-once = waybar & hyprpaper & firefox
|
||||||
|
|
||||||
|
debug:full_cm_proto=true
|
||||||
|
|
||||||
|
# Set programs that you use
|
||||||
|
$terminal = kitty nu
|
||||||
|
$fileManager = thunar
|
||||||
|
$menu = fuzzel
|
||||||
|
$bar = waybar
|
||||||
|
|
||||||
|
# Some default env vars.
|
||||||
|
env = XCURSOR_SIZE,24
|
||||||
|
env = QT_QPA_PLATFORMTHEME,qt6ct # change to qt6ct if you have that
|
||||||
|
|
||||||
|
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
|
||||||
|
input {
|
||||||
|
kb_layout = us
|
||||||
|
kb_variant =
|
||||||
|
kb_model =
|
||||||
|
kb_options =
|
||||||
|
kb_rules =
|
||||||
|
accel_profile = flat
|
||||||
|
|
||||||
|
follow_mouse = 1
|
||||||
|
|
||||||
|
touchpad {
|
||||||
|
natural_scroll = no
|
||||||
|
}
|
||||||
|
|
||||||
|
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||||
|
}
|
||||||
|
|
||||||
|
render {
|
||||||
|
cm_fs_passthrough = false
|
||||||
|
}
|
||||||
|
|
||||||
|
general {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
|
||||||
|
gaps_in = 5
|
||||||
|
gaps_out = 5
|
||||||
|
border_size = 2
|
||||||
|
layout = dwindle
|
||||||
|
|
||||||
|
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||||
|
allow_tearing = false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
windowrulev2 = immediate, class:^(cs2)$
|
||||||
|
|
||||||
|
decoration {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
|
||||||
|
rounding = 5
|
||||||
|
|
||||||
|
blur {
|
||||||
|
enabled = yes
|
||||||
|
size = 5
|
||||||
|
passes = 3
|
||||||
|
new_optimizations = on
|
||||||
|
ignore_opacity = on
|
||||||
|
xray = false
|
||||||
|
}
|
||||||
|
|
||||||
|
shadow {
|
||||||
|
enabled = true
|
||||||
|
offset = 3, 3
|
||||||
|
color = rgba(323232cc)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
animations {
|
||||||
|
enabled = yes
|
||||||
|
|
||||||
|
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||||
|
|
||||||
|
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
||||||
|
|
||||||
|
animation = windows, 1, 7, myBezier
|
||||||
|
animation = windowsOut, 1, 7, default, popin 80%
|
||||||
|
animation = border, 1, 10, default
|
||||||
|
animation = borderangle, 1, 8, default
|
||||||
|
animation = fade, 1, 7, default
|
||||||
|
animation = workspaces, 1, 6, default
|
||||||
|
}
|
||||||
|
|
||||||
|
dwindle {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||||
|
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||||
|
preserve_split = yes # you probably want this
|
||||||
|
}
|
||||||
|
|
||||||
|
layerrule = unset, overlay
|
||||||
|
|
||||||
|
gestures {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
}
|
||||||
|
|
||||||
|
misc {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
force_default_wallpaper = 0 # Set to 0 to disable the anime mascot wallpapers
|
||||||
|
enable_anr_dialog = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Example per-device config
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
|
||||||
|
|
||||||
|
|
||||||
|
# Example windowrule v1
|
||||||
|
# windowrule = float, ^(kitty)$
|
||||||
|
# Example windowrule v2
|
||||||
|
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||||
|
|
||||||
|
# Window Rules
|
||||||
|
|
||||||
|
windowrule = float, class:^(Wiremix)$
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||||
|
$mainMod = SUPER
|
||||||
|
|
||||||
|
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||||
|
bind = $mainMod, Return, exec, $terminal
|
||||||
|
bind = $mainMod, Q, killactive,
|
||||||
|
bind = $mainMod, M, exec, hyprlock
|
||||||
|
bind = $mainMod, E, exec, $fileManager
|
||||||
|
bind = $mainMod, V, togglefloating,
|
||||||
|
bind = $mainMod, Space, exec, $menu
|
||||||
|
bind = $mainMod, B, exec, zen
|
||||||
|
bind = $mainMod, P, pseudo, # dwindle
|
||||||
|
bind = $mainMod, J, togglesplit, # dwindle
|
||||||
|
bind = $mainMod, F, fullscreen,
|
||||||
|
bind = , XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+
|
||||||
|
bind = , XF86AudioLowerVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%-
|
||||||
|
|
||||||
|
# Move focus with mainMod + arrow keys
|
||||||
|
bind = $mainMod, left, movefocus, l
|
||||||
|
bind = $mainMod, right, movefocus, r
|
||||||
|
bind = $mainMod, up, movefocus, u
|
||||||
|
bind = $mainMod, down, movefocus, d
|
||||||
|
|
||||||
|
# Switch workspaces with mainMod + [0-9]
|
||||||
|
bind = $mainMod, 1, workspace, 1
|
||||||
|
bind = $mainMod, 2, workspace, 2
|
||||||
|
bind = $mainMod, 3, workspace, 3
|
||||||
|
bind = $mainMod, 4, workspace, 4
|
||||||
|
bind = $mainMod, 5, workspace, 5
|
||||||
|
bind = $mainMod, 6, workspace, 6
|
||||||
|
bind = $mainMod, 7, workspace, 7
|
||||||
|
bind = $mainMod, 8, workspace, 8
|
||||||
|
bind = $mainMod, 9, workspace, 9
|
||||||
|
bind = $mainMod, 0, workspace, 10
|
||||||
|
|
||||||
|
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||||
|
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
||||||
|
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
||||||
|
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
||||||
|
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
||||||
|
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
||||||
|
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
||||||
|
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
||||||
|
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
||||||
|
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
||||||
|
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
||||||
|
|
||||||
|
# Example special workspace (scratchpad)
|
||||||
|
bind = $mainMod, S, togglespecialworkspace, magic
|
||||||
|
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
||||||
|
|
||||||
|
# Scroll through existing workspaces with mainMod + scroll
|
||||||
|
bind = $mainMod, mouse_down, workspace, e+1
|
||||||
|
bind = $mainMod, mouse_up, workspace, e-1
|
||||||
|
|
||||||
|
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||||
|
bindm = $mainMod, mouse:272, movewindow
|
||||||
|
bindm = $mainMod, mouse:273, resizewindow
|
||||||
|
|
||||||
|
# Screen Recording
|
||||||
|
bind = , code:76, exec, killall -SIGUSR1 gpu-screen-recorder
|
||||||
|
bind = , code:75, exec, killall -SIGINT gpu-screen-recorder
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -1,32 +1,38 @@
|
|||||||
|
{pkgs, ...}:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.hyprpolkitagent.enable
|
||||||
|
wayland.windowManager.hyprland.extraConfig = ''
|
||||||
autogenerated = 0 # remove this line to remove the warning
|
autogenerated = 0 # remove this line to remove the warning
|
||||||
|
|
||||||
source=~/.config/hypr/rose-pine.conf
|
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||||
monitor=DP-3,2560x1440@170,0x0,1
|
#monitor = HDMI-A-1, 3840x2160@60, 0x0, 1.5
|
||||||
monitor=DP-2,3840x2160@60,auto,1.5
|
#monitor = HDMI-A-1, disable
|
||||||
workspace=10,monitor:DP-2
|
#monitor = sunshine, highres@highrr, 0x0, 1
|
||||||
workspace=1,monitor:DP-3
|
#monitor = DP-1, highres@highrr, 0x0, 1
|
||||||
|
#monitor = DP-1, highres@highrr, 0x0, 1, bitdepth, 10, cm, hdr, sdrsaturation, 1, sdrbrightness, 1
|
||||||
|
monitor = eDP-1, highres@highrr, 0x0, 1.6
|
||||||
exec-once = hyprctl dispatch workspace 1
|
exec-once = hyprctl dispatch workspace 1
|
||||||
exec-once = swaybg -i ~/Pictures/outset_island_night.jpg
|
#exec-once = linux-wallpaperengine --screen-root HDMI-A-1 --silent --fps 60 3000562427
|
||||||
exec-once = waybar
|
exec-once = hyprlock
|
||||||
# exec-once = waybar
|
exec-once = ashell
|
||||||
|
# exec-once = WGPU_BACKEND=gl ashell
|
||||||
|
exec-once = systemctl --user start hyprpolkitagent
|
||||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||||
|
|
||||||
# Execute your favorite apps at launch
|
# Execute your favorite apps at launch
|
||||||
# exec-once = waybar & hyprpaper & firefox
|
# exec-once = waybar & hyprpaper & firefox
|
||||||
|
|
||||||
# Source a file (multi-file configs)
|
|
||||||
# source = ~/.config/hypr/myColors.conf
|
|
||||||
|
|
||||||
# Set programs that you use
|
# Set programs that you use
|
||||||
$terminal = kitty
|
$terminal = kitty
|
||||||
$fileManager = cosmic-files
|
$fileManager = thunar
|
||||||
$menu = rofi -show drun
|
$menu = fuzzel
|
||||||
|
|
||||||
# Some default env vars.
|
# Some default env vars.
|
||||||
env = XCURSOR_SIZE,24
|
env = XCURSOR_SIZE,24
|
||||||
env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that
|
env = QT_QPA_PLATFORMTHEME,qt6ct # change to qt6ct if you have that
|
||||||
|
|
||||||
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
|
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
|
||||||
input {
|
input {
|
||||||
@@ -35,11 +41,15 @@ input {
|
|||||||
kb_model =
|
kb_model =
|
||||||
kb_options =
|
kb_options =
|
||||||
kb_rules =
|
kb_rules =
|
||||||
|
accel_profile = flat
|
||||||
|
|
||||||
follow_mouse = 1
|
follow_mouse = 1
|
||||||
|
|
||||||
touchpad {
|
touchpad {
|
||||||
natural_scroll = no
|
natural_scroll = yes
|
||||||
|
clickfinger_behavior = yes
|
||||||
|
tap-to-click = no
|
||||||
|
tap-and-drag = no
|
||||||
}
|
}
|
||||||
|
|
||||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||||
@@ -49,11 +59,8 @@ general {
|
|||||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
|
||||||
gaps_in = 5
|
gaps_in = 5
|
||||||
gaps_out = 20
|
gaps_out = 5
|
||||||
border_size = 2
|
border_size = 2
|
||||||
col.active_border = $rose
|
|
||||||
col.inactive_border = $muted
|
|
||||||
|
|
||||||
layout = dwindle
|
layout = dwindle
|
||||||
|
|
||||||
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||||
@@ -63,13 +70,22 @@ 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 {
|
||||||
|
enabled = yes
|
||||||
|
size = 5
|
||||||
|
passes = 3
|
||||||
|
new_optimizations = on
|
||||||
|
ignore_opacity = on
|
||||||
|
xray = false
|
||||||
|
}
|
||||||
|
|
||||||
drop_shadow = yes
|
shadow {
|
||||||
shadow_range = 4
|
enabled = true
|
||||||
shadow_render_power = 3
|
offset = 3, 3
|
||||||
col.shadow = rgba(1a1a1aee)
|
color = rgba(323232cc)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
animations {
|
animations {
|
||||||
@@ -93,33 +109,27 @@ dwindle {
|
|||||||
preserve_split = yes # you probably want this
|
preserve_split = yes # you probably want this
|
||||||
}
|
}
|
||||||
|
|
||||||
master {
|
layerrule = unset, overlay
|
||||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
|
||||||
new_is_master = true
|
|
||||||
}
|
|
||||||
|
|
||||||
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
|
||||||
force_default_wallpaper = -1 # Set to 0 to disable the anime mascot wallpapers
|
force_default_wallpaper = 0 # Set to 0 to disable the anime mascot wallpapers
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# Example per-device config
|
# Example per-device config
|
||||||
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
|
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
|
||||||
device:epic-mouse-v1 {
|
|
||||||
sensitivity = -0.5
|
|
||||||
}
|
|
||||||
|
|
||||||
# Example windowrule v1
|
# Example windowrule v1
|
||||||
# windowrule = float, ^(kitty)$
|
# windowrule = float, ^(kitty)$
|
||||||
# Example windowrule v2
|
# Example windowrule v2
|
||||||
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
|
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
|
||||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||||
windowrulev2 = nomaximizerequest, class:.* # You'll probably like this.
|
|
||||||
|
# Window Rules
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||||
@@ -128,12 +138,16 @@ $mainMod = SUPER
|
|||||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||||
bind = $mainMod, Return, exec, $terminal
|
bind = $mainMod, Return, exec, $terminal
|
||||||
bind = $mainMod, Q, killactive,
|
bind = $mainMod, Q, killactive,
|
||||||
bind = $mainMod, M, exit,
|
bind = $mainMod, M, exec, hyprlock
|
||||||
bind = $mainMod, E, exec, $fileManager
|
bind = $mainMod, E, exec, $fileManager
|
||||||
bind = $mainMod, V, togglefloating,
|
bind = $mainMod, V, togglefloating,
|
||||||
bind = $mainMod, Space, exec, $menu
|
bind = $mainMod, Space, exec, $menu
|
||||||
|
bind = $mainMod, B, exec, zen
|
||||||
bind = $mainMod, P, pseudo, # dwindle
|
bind = $mainMod, P, pseudo, # dwindle
|
||||||
bind = $mainMod, J, togglesplit, # dwindle
|
bind = $mainMod, J, togglesplit, # dwindle
|
||||||
|
bind = $mainMod, F, fullscreen,
|
||||||
|
bind = , XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+
|
||||||
|
bind = , XF86AudioLowerVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%-
|
||||||
|
|
||||||
# Move focus with mainMod + arrow keys
|
# Move focus with mainMod + arrow keys
|
||||||
bind = $mainMod, left, movefocus, l
|
bind = $mainMod, left, movefocus, l
|
||||||
@@ -176,3 +190,9 @@ bind = $mainMod, mouse_up, workspace, e-1
|
|||||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||||
bindm = $mainMod, mouse:272, movewindow
|
bindm = $mainMod, mouse:272, movewindow
|
||||||
bindm = $mainMod, mouse:273, resizewindow
|
bindm = $mainMod, mouse:273, resizewindow
|
||||||
|
|
||||||
|
# Screen Recording
|
||||||
|
bind = , code:76, exec, killall -SIGUSR1 gpu-screen-recorder
|
||||||
|
bind = , code:75, exec, killall -SIGINT gpu-screen-recorder
|
||||||
|
'';
|
||||||
|
}
|
||||||
84
modules/hypr/hyprlock_old.conf
Normal file
84
modules/hypr/hyprlock_old.conf
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
background {
|
||||||
|
monitor =
|
||||||
|
path = ~/NixOS-Configs/WE-Lake.png
|
||||||
|
|
||||||
|
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
|
||||||
|
blur_passes = 3 # 0 disables blurring
|
||||||
|
blur_size = 13
|
||||||
|
contrast = 0.8916
|
||||||
|
brightness = 0.8172
|
||||||
|
vibrancy = 0.1696
|
||||||
|
vibrancy_darkness = 0.0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
image {
|
||||||
|
monitor =
|
||||||
|
path = ~/NixOS-Configs/pfp.jpg
|
||||||
|
border_size = 2
|
||||||
|
border_color = rgba(255, 255, 255, 0)
|
||||||
|
size = 130
|
||||||
|
rounding = 100
|
||||||
|
rotate = 0
|
||||||
|
reload_time = -1
|
||||||
|
reload_cmd =
|
||||||
|
position = 0, 40
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:1000] echo -e "$(date +"%A, %B %d")"
|
||||||
|
color = rgba(122, 162, 247, 0.70)
|
||||||
|
font_size = 25
|
||||||
|
font_family = Roboto Bold
|
||||||
|
position = 0, 350
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:1000] echo "<span>$(date +"%I:%M")</span>"
|
||||||
|
color = rgba(122, 162, 247, 0.70)
|
||||||
|
font_size = 120
|
||||||
|
font_family = Roboto Bold
|
||||||
|
position = 0, 250
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = Joshua Elmasri
|
||||||
|
text_align = center # center/right or any value for default left. multi-line text alignment inside label container
|
||||||
|
color = rgba(122, 162, 247, 1.0)
|
||||||
|
font_size = 30
|
||||||
|
font_family = Roboto Bold
|
||||||
|
rotate = 0 # degrees, counter-clockwise
|
||||||
|
|
||||||
|
position = 0, -110
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
}
|
||||||
|
|
||||||
|
input-field {
|
||||||
|
monitor =
|
||||||
|
size = 300, 60
|
||||||
|
outline_thickness = 2
|
||||||
|
dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
|
||||||
|
dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0
|
||||||
|
dots_center = false
|
||||||
|
dots_fade_time = 0
|
||||||
|
outer_color = rgba(0, 0, 0, 0)
|
||||||
|
inner_color = rgba(255, 255, 255, 0.1)
|
||||||
|
font_color = rgb(169, 177, 214)
|
||||||
|
fade_on_empty = false
|
||||||
|
font_family = Roboto
|
||||||
|
placeholder_text = Password
|
||||||
|
hide_input = false
|
||||||
|
position = 0, -210
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
}
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
## name: Rosé Pine
|
|
||||||
## author: jishnurajendran
|
|
||||||
## upstream: https://github.com/jishnurajendran/hyprland-rosepine/blob/main/rose-pine.conf
|
|
||||||
## All natural pine, faux fur and a bit of soho vibes for the classy minimalist
|
|
||||||
$base = 0xff191724
|
|
||||||
$surface = 0xff1f1d2e
|
|
||||||
$overlay = 0xff26233a
|
|
||||||
$muted = 0xff6e6a86
|
|
||||||
$subtle = 0xff908caa
|
|
||||||
$text = 0xffe0def4
|
|
||||||
$love = 0xffeb6f92
|
|
||||||
$gold = 0xfff6c177
|
|
||||||
$rose = 0xffebbcba
|
|
||||||
$pine = 0xff31748f
|
|
||||||
$foam = 0xff9ccfd8
|
|
||||||
$iris = 0xffc4a7e7
|
|
||||||
$highlightLow = 0xff21202e
|
|
||||||
$highlightMed = 0xff403d52
|
|
||||||
$highlightHigh = 0xff524f67
|
|
||||||
14
modules/kitty/default.nix
Normal file
14
modules/kitty/default.nix
Normal 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
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
include themes/rose-pine.conf
|
|
||||||
|
|
||||||
font_family Fira Code Nerd Font
|
|
||||||
bold_font auto
|
|
||||||
italic_font auto
|
|
||||||
bold_italic_font auto
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
## name: Rosé Pine Dawn
|
|
||||||
## author: mvllow
|
|
||||||
## license: MIT
|
|
||||||
## upstream: https://github.com/rose-pine/kitty/blob/main/dist/rose-pine-dawn.conf
|
|
||||||
## blurb: All natural pine, faux fur and a bit of soho vibes for the classy minimalist
|
|
||||||
|
|
||||||
foreground #575279
|
|
||||||
background #faf4ed
|
|
||||||
selection_foreground #575279
|
|
||||||
selection_background #dfdad9
|
|
||||||
|
|
||||||
cursor #cecacd
|
|
||||||
cursor_text_color #575279
|
|
||||||
|
|
||||||
url_color #907aa9
|
|
||||||
|
|
||||||
active_tab_foreground #575279
|
|
||||||
active_tab_background #f2e9e1
|
|
||||||
inactive_tab_foreground #9893a5
|
|
||||||
inactive_tab_background #faf4ed
|
|
||||||
|
|
||||||
active_border_color #286983
|
|
||||||
inactive_border_color #dfdad9
|
|
||||||
|
|
||||||
# black
|
|
||||||
color0 #f2e9e1
|
|
||||||
color8 #9893a5
|
|
||||||
|
|
||||||
# red
|
|
||||||
color1 #b4637a
|
|
||||||
color9 #b4637a
|
|
||||||
|
|
||||||
# green
|
|
||||||
color2 #286983
|
|
||||||
color10 #286983
|
|
||||||
|
|
||||||
# yellow
|
|
||||||
color3 #ea9d34
|
|
||||||
color11 #ea9d34
|
|
||||||
|
|
||||||
# blue
|
|
||||||
color4 #56949f
|
|
||||||
color12 #56949f
|
|
||||||
|
|
||||||
# magenta
|
|
||||||
color5 #907aa9
|
|
||||||
color13 #907aa9
|
|
||||||
|
|
||||||
# cyan
|
|
||||||
color6 #d7827e
|
|
||||||
color14 #d7827e
|
|
||||||
|
|
||||||
# white
|
|
||||||
color7 #575279
|
|
||||||
color15 #575279
|
|
||||||
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
## name: Rosé Pine Moon
|
|
||||||
## author: mvllow
|
|
||||||
## license: MIT
|
|
||||||
## upstream: https://github.com/rose-pine/kitty/blob/main/dist/rose-pine-moon.conf
|
|
||||||
## blurb: All natural pine, faux fur and a bit of soho vibes for the classy minimalist
|
|
||||||
|
|
||||||
foreground #e0def4
|
|
||||||
background #232136
|
|
||||||
selection_foreground #e0def4
|
|
||||||
selection_background #44415a
|
|
||||||
|
|
||||||
cursor #56526e
|
|
||||||
cursor_text_color #e0def4
|
|
||||||
|
|
||||||
url_color #c4a7e7
|
|
||||||
|
|
||||||
active_tab_foreground #e0def4
|
|
||||||
active_tab_background #393552
|
|
||||||
inactive_tab_foreground #6e6a86
|
|
||||||
inactive_tab_background #232136
|
|
||||||
|
|
||||||
active_border_color #3e8fb0
|
|
||||||
inactive_border_color #44415a
|
|
||||||
|
|
||||||
# black
|
|
||||||
color0 #393552
|
|
||||||
color8 #6e6a86
|
|
||||||
|
|
||||||
# red
|
|
||||||
color1 #eb6f92
|
|
||||||
color9 #eb6f92
|
|
||||||
|
|
||||||
# green
|
|
||||||
color2 #3e8fb0
|
|
||||||
color10 #3e8fb0
|
|
||||||
|
|
||||||
# yellow
|
|
||||||
color3 #f6c177
|
|
||||||
color11 #f6c177
|
|
||||||
|
|
||||||
# blue
|
|
||||||
color4 #9ccfd8
|
|
||||||
color12 #9ccfd8
|
|
||||||
|
|
||||||
# magenta
|
|
||||||
color5 #c4a7e7
|
|
||||||
color13 #c4a7e7
|
|
||||||
|
|
||||||
# cyan
|
|
||||||
color6 #ea9a97
|
|
||||||
color14 #ea9a97
|
|
||||||
|
|
||||||
# white
|
|
||||||
color7 #e0def4
|
|
||||||
color15 #e0def4
|
|
||||||
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
## name: Rosé Pine
|
|
||||||
## author: mvllow
|
|
||||||
## license: MIT
|
|
||||||
## upstream: https://github.com/rose-pine/kitty/blob/main/dist/rose-pine.conf
|
|
||||||
## blurb: All natural pine, faux fur and a bit of soho vibes for the classy minimalist
|
|
||||||
|
|
||||||
foreground #e0def4
|
|
||||||
background #191724
|
|
||||||
selection_foreground #e0def4
|
|
||||||
selection_background #403d52
|
|
||||||
|
|
||||||
cursor #524f67
|
|
||||||
cursor_text_color #e0def4
|
|
||||||
|
|
||||||
url_color #c4a7e7
|
|
||||||
|
|
||||||
active_tab_foreground #e0def4
|
|
||||||
active_tab_background #26233a
|
|
||||||
inactive_tab_foreground #6e6a86
|
|
||||||
inactive_tab_background #191724
|
|
||||||
|
|
||||||
active_border_color #31748f
|
|
||||||
inactive_border_color #403d52
|
|
||||||
|
|
||||||
# black
|
|
||||||
color0 #26233a
|
|
||||||
color8 #6e6a86
|
|
||||||
|
|
||||||
# red
|
|
||||||
color1 #eb6f92
|
|
||||||
color9 #eb6f92
|
|
||||||
|
|
||||||
# green
|
|
||||||
color2 #31748f
|
|
||||||
color10 #31748f
|
|
||||||
|
|
||||||
# yellow
|
|
||||||
color3 #f6c177
|
|
||||||
color11 #f6c177
|
|
||||||
|
|
||||||
# blue
|
|
||||||
color4 #9ccfd8
|
|
||||||
color12 #9ccfd8
|
|
||||||
|
|
||||||
# magenta
|
|
||||||
color5 #c4a7e7
|
|
||||||
color13 #c4a7e7
|
|
||||||
|
|
||||||
# cyan
|
|
||||||
color6 #ebbcba
|
|
||||||
color14 #ebbcba
|
|
||||||
|
|
||||||
# white
|
|
||||||
color7 #e0def4
|
|
||||||
color15 #e0def4
|
|
||||||
|
|
||||||
16
modules/nushell/default.nix
Normal file
16
modules/nushell/default.nix
Normal 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
6
modules/nvim/config.nix
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
programs.nixvim.opts = {
|
||||||
|
shiftwidth = 2;
|
||||||
|
tabstop = 2;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,20 +1,29 @@
|
|||||||
{config, pkgs, lib, inputs, ...}:
|
{config, pkgs, lib, inputs, ...}:
|
||||||
|
|
||||||
{
|
{
|
||||||
|
imports = [ ./config.nix ];
|
||||||
programs.nixvim = {
|
programs.nixvim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
colorschemes.nord.enable = true;
|
|
||||||
plugins.nvim-tree.enable = true;
|
plugins.nvim-tree.enable = true;
|
||||||
plugins.treesitter.enable = true;
|
plugins.treesitter.enable = true;
|
||||||
plugins.lualine.enable = true;
|
plugins.lualine.enable = true;
|
||||||
plugins.lsp.enable = true;
|
plugins.lsp.enable = true;
|
||||||
plugins.luasnip.enable = true;
|
plugins.luasnip.enable = true;
|
||||||
plugins.toggleterm.enable = true;
|
plugins.toggleterm.enable = true;
|
||||||
plugins.nvim-cmp.enable = true;
|
plugins.cmp.enable = true;
|
||||||
plugins.gitsigns.enable = true;
|
plugins.gitsigns.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;
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
7
modules/openvpn/default.nix
Normal file
7
modules/openvpn/default.nix
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{pkgs, ...}:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.openvpn.servers = {
|
||||||
|
homeVPN = { config = '' config ./modules/openvpn/homeVPN.ovpn ''; };
|
||||||
|
};
|
||||||
|
}
|
||||||
134
modules/openvpn/homeVPN.ovpn
Normal file
134
modules/openvpn/homeVPN.ovpn
Normal 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>
|
||||||
@@ -1,135 +0,0 @@
|
|||||||
@import "default"
|
|
||||||
|
|
||||||
* {
|
|
||||||
bg: #191724;
|
|
||||||
cur: #1f1d2e;
|
|
||||||
fgd: #e0def4;
|
|
||||||
cmt: #6e6a86;
|
|
||||||
cya: #9ccfd8;
|
|
||||||
grn: #31748f;
|
|
||||||
ora: #ebbcba;
|
|
||||||
pur: #c4a7e7;
|
|
||||||
red: #eb6f92;
|
|
||||||
yel: #f6c177;
|
|
||||||
|
|
||||||
font: "Cartograph CF 12";
|
|
||||||
|
|
||||||
foreground: @fgd;
|
|
||||||
background: @bg;
|
|
||||||
active-background: @grn;
|
|
||||||
urgent-background: @red;
|
|
||||||
|
|
||||||
selected-background: @active-background;
|
|
||||||
selected-urgent-background: @urgent-background;
|
|
||||||
selected-active-background: @active-background;
|
|
||||||
separatorcolor: @active-background;
|
|
||||||
bordercolor: @ora;
|
|
||||||
}
|
|
||||||
|
|
||||||
#window {
|
|
||||||
background-color: @background;
|
|
||||||
border: 3;
|
|
||||||
border-radius: 6;
|
|
||||||
border-color: @bordercolor;
|
|
||||||
padding: 5;
|
|
||||||
}
|
|
||||||
#mainbox {
|
|
||||||
border: 0;
|
|
||||||
padding: 5;
|
|
||||||
}
|
|
||||||
#message {
|
|
||||||
border: 1px dash 0px 0px ;
|
|
||||||
border-color: @separatorcolor;
|
|
||||||
padding: 1px ;
|
|
||||||
}
|
|
||||||
#textbox {
|
|
||||||
text-color: @foreground;
|
|
||||||
}
|
|
||||||
#listview {
|
|
||||||
fixed-height: 0;
|
|
||||||
border: 2px dash 0px 0px ;
|
|
||||||
border-color: @bordercolor;
|
|
||||||
spacing: 2px ;
|
|
||||||
scrollbar: false;
|
|
||||||
padding: 2px 0px 0px ;
|
|
||||||
}
|
|
||||||
#element {
|
|
||||||
border: 0;
|
|
||||||
padding: 1px ;
|
|
||||||
}
|
|
||||||
#element.normal.normal {
|
|
||||||
background-color: @background;
|
|
||||||
text-color: @foreground;
|
|
||||||
}
|
|
||||||
#element.normal.urgent {
|
|
||||||
background-color: @urgent-background;
|
|
||||||
text-color: @urgent-foreground;
|
|
||||||
}
|
|
||||||
#element.normal.active {
|
|
||||||
background-color: @active-background;
|
|
||||||
text-color: @background;
|
|
||||||
}
|
|
||||||
#element.selected.normal {
|
|
||||||
background-color: @selected-background;
|
|
||||||
text-color: @foreground;
|
|
||||||
}
|
|
||||||
#element.selected.urgent {
|
|
||||||
background-color: @selected-urgent-background;
|
|
||||||
text-color: @foreground;
|
|
||||||
}
|
|
||||||
#element.selected.active {
|
|
||||||
background-color: @selected-active-background;
|
|
||||||
text-color: @background;
|
|
||||||
}
|
|
||||||
#element.alternate.normal {
|
|
||||||
background-color: @background;
|
|
||||||
text-color: @foreground;
|
|
||||||
}
|
|
||||||
#element.alternate.urgent {
|
|
||||||
background-color: @urgent-background;
|
|
||||||
text-color: @foreground;
|
|
||||||
}
|
|
||||||
#element.alternate.active {
|
|
||||||
background-color: @active-background;
|
|
||||||
text-color: @foreground;
|
|
||||||
}
|
|
||||||
#scrollbar {
|
|
||||||
width: 2px ;
|
|
||||||
border: 0;
|
|
||||||
handle-width: 8px ;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
#sidebar {
|
|
||||||
border: 2px dash 0px 0px ;
|
|
||||||
border-color: @separatorcolor;
|
|
||||||
}
|
|
||||||
#button.selected {
|
|
||||||
background-color: @selected-background;
|
|
||||||
text-color: @foreground;
|
|
||||||
}
|
|
||||||
#inputbar {
|
|
||||||
spacing: 0;
|
|
||||||
text-color: @foreground;
|
|
||||||
padding: 1px ;
|
|
||||||
}
|
|
||||||
#case-indicator {
|
|
||||||
spacing: 0;
|
|
||||||
text-color: @foreground;
|
|
||||||
}
|
|
||||||
#entry {
|
|
||||||
spacing: 0;
|
|
||||||
text-color: @cya;
|
|
||||||
}
|
|
||||||
#prompt {
|
|
||||||
spacing: 0;
|
|
||||||
text-color: @grn;
|
|
||||||
}
|
|
||||||
#inputbar {
|
|
||||||
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
|
|
||||||
}
|
|
||||||
#textbox-prompt-colon {
|
|
||||||
expand: false;
|
|
||||||
str: ":";
|
|
||||||
margin: 0px 0.3em 0em 0em;
|
|
||||||
text-color: @grn;
|
|
||||||
}
|
|
||||||
41
modules/rofi/default.nix
Normal file
41
modules/rofi/default.nix
Normal 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;
|
||||||
|
};
|
||||||
|
}
|
||||||
8
modules/starship/default.nix
Normal file
8
modules/starship/default.nix
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{pkgs,...}:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.starship = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
34
modules/stylix.nix
Normal file
34
modules/stylix.nix
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
stylix.enable = true;
|
||||||
|
stylix.polarity = "dark";
|
||||||
|
#stylix.targets.plymouth.enable = false;
|
||||||
|
stylix.targets.kitty.enable = true;
|
||||||
|
stylix.targets.hyprpaper.enable = true;
|
||||||
|
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/everforest.yaml";
|
||||||
|
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";
|
||||||
|
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=";
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,73 +0,0 @@
|
|||||||
{
|
|
||||||
"layer": "top",
|
|
||||||
"margin": "5, 5, 5, 5",
|
|
||||||
"modules-left": ["hyprland/workspaces"],
|
|
||||||
"modules-center": ["mpris", "clock"],
|
|
||||||
"modules-right": ["cava", "privacy", "network", "pulseaudio/slider", "tray"],
|
|
||||||
"battery": {
|
|
||||||
"format": "{capacity}% {icon}",
|
|
||||||
"format-icons": ["", "", "", "", ""]
|
|
||||||
},
|
|
||||||
"clock": {
|
|
||||||
"format-alt": "{:%a, %d. %b %H:%M}"
|
|
||||||
},
|
|
||||||
|
|
||||||
"cava": {
|
|
||||||
"cava_config": "/home/joshuaelm/.config/cava/config",
|
|
||||||
"bars": 14,
|
|
||||||
"bar_delimiter": 0,
|
|
||||||
"format-icons" : ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█" ],
|
|
||||||
},
|
|
||||||
|
|
||||||
"network": {
|
|
||||||
"format": "{ifname}",
|
|
||||||
"format-wifi": "{essid} ({signalStrength}%) ",
|
|
||||||
"format-ethernet": "",
|
|
||||||
"format-disconnected": "", //An empty format will hide the module.
|
|
||||||
"tooltip-format": "{ifname} via {gwaddr} ",
|
|
||||||
"tooltip-format-wifi": "{essid} ({signalStrength}%) ",
|
|
||||||
"tooltip-format-ethernet": "{ifname} ",
|
|
||||||
"tooltip-format-disconnected": "Disconnected",
|
|
||||||
"max-length": 50
|
|
||||||
},
|
|
||||||
|
|
||||||
"privacy": {
|
|
||||||
"icon-spacing": 4,
|
|
||||||
"icon-size": 18,
|
|
||||||
"transition-duration": 250,
|
|
||||||
"modules": [
|
|
||||||
{
|
|
||||||
"type": "screenshare",
|
|
||||||
"tooltip": true,
|
|
||||||
"tooltip-icon-size": 24
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "audio-out",
|
|
||||||
"tooltip": true,
|
|
||||||
"tooltip-icon-size": 24
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "audio-in",
|
|
||||||
"tooltip": true,
|
|
||||||
"tooltip-icon-size": 24
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
"mpris": {
|
|
||||||
"format": "{player_icon} {title}",
|
|
||||||
"format-paused": "{status_icon} <i>{title}</i>",
|
|
||||||
"format-len": 50,
|
|
||||||
"status-icons": {
|
|
||||||
"paused": ""
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"pulseaudio/slider": {
|
|
||||||
"min": 0,
|
|
||||||
"max": 100
|
|
||||||
},
|
|
||||||
"hyprland/workspaces": {
|
|
||||||
"active-only": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
/*
|
|
||||||
* Variant: Rosé Pine
|
|
||||||
* Maintainer: DankChoir
|
|
||||||
*/
|
|
||||||
|
|
||||||
@define-color base #191724;
|
|
||||||
@define-color surface #1f1d2e;
|
|
||||||
@define-color overlay #26233a;
|
|
||||||
|
|
||||||
@define-color muted #6e6a86;
|
|
||||||
@define-color subtle #908caa;
|
|
||||||
@define-color text #e0def4;
|
|
||||||
|
|
||||||
@define-color love #eb6f92;
|
|
||||||
@define-color gold #f6c177;
|
|
||||||
@define-color rose #ebbcba;
|
|
||||||
@define-color pine #31748f;
|
|
||||||
@define-color foam #9ccfd8;
|
|
||||||
@define-color iris #c4a7e7;
|
|
||||||
|
|
||||||
@define-color highlightLow #21202e;
|
|
||||||
@define-color highlightMed #403d52;
|
|
||||||
@define-color highlightHigh #524f67;
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
@import "./rose-pine.css";
|
|
||||||
|
|
||||||
* {
|
|
||||||
font-family: "FiraCode Nerd ont";
|
|
||||||
font-size: 17px;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
window#waybar {
|
|
||||||
background-color: @base;
|
|
||||||
color: @text;
|
|
||||||
margin: 0 4px;
|
|
||||||
}
|
|
||||||
window > box {
|
|
||||||
background-color: transparent;
|
|
||||||
margin-top: 5px;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
margin-left: 5px;
|
|
||||||
margin-right: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#network {
|
|
||||||
padding-left: 4px;
|
|
||||||
padding-right: 2px;
|
|
||||||
color: @foam;
|
|
||||||
}
|
|
||||||
|
|
||||||
#cava {
|
|
||||||
color: @iris;
|
|
||||||
margin-left: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tray {
|
|
||||||
margin-right: 5px;
|
|
||||||
margin-left: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces.button {
|
|
||||||
color: @text;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces.button.focused {
|
|
||||||
color: @overlay;
|
|
||||||
background-color: @text;
|
|
||||||
}
|
|
||||||
|
|
||||||
#clock {
|
|
||||||
padding: 0 5px;
|
|
||||||
margin-left: 5px;
|
|
||||||
margin-right: 5px;
|
|
||||||
}
|
|
||||||
#mpris {
|
|
||||||
margin-right: 5px;
|
|
||||||
margin-left: 5px
|
|
||||||
}
|
|
||||||
|
|
||||||
.modules-center {
|
|
||||||
background: @surface;
|
|
||||||
box-shadow: 0px 0px 5px 0px #101010;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modules-right {
|
|
||||||
background: @surface;
|
|
||||||
box-shadow: 0px 0px 5px 0px #101010;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modules-left {
|
|
||||||
background: @surface;
|
|
||||||
box-shadow: 0px 0px 5px 0px #101010;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pulseaudio-slider slider {
|
|
||||||
min-height: 0px;
|
|
||||||
min-width: 0px;
|
|
||||||
opacity: 0;
|
|
||||||
background-image: none;
|
|
||||||
border: none;
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
#pulseaudio-slider trough {
|
|
||||||
min-height: 5px;
|
|
||||||
min-width: 80px;
|
|
||||||
border-radius: 5px;
|
|
||||||
background-color: @base;
|
|
||||||
}
|
|
||||||
#pulseaudio-slider highlight {
|
|
||||||
min-width: 10px;
|
|
||||||
border-radius: 5px;
|
|
||||||
background-color: @pine;
|
|
||||||
}
|
|
||||||
222
modules/waybar/waybar.nix
Normal file
222
modules/waybar/waybar.nix
Normal 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
45
modules/zen/default.nix
Normal 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
234
patches/bigscreen_1.patch
Normal 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
243
patches/bigscreen_15.patch
Normal 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
46
patches/bigscreen_2.patch
Normal 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
|
||||||
10
scripts/SteamDeckOLED
Executable file
10
scripts/SteamDeckOLED
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Your main monitor (change this)
|
||||||
|
MONITOR="DP-1"
|
||||||
|
|
||||||
|
hyprctl keyword monitor HDMI-A-1,1280x800@90,auto,1,bitdepth,10
|
||||||
|
|
||||||
|
# Disable the monitor
|
||||||
|
hyprctl keyword monitor $MONITOR,disable
|
||||||
|
|
||||||
6
scripts/screenON
Executable file
6
scripts/screenON
Executable file
@@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
hyprctl keyword monitor HDMI-A-1,disable
|
||||||
|
|
||||||
|
hyprctl keyword monitor DP-1,highres@highrr,auto,1
|
||||||
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
{ stdenvNoCC
|
|
||||||
, fetchFromGitHub
|
|
||||||
, libsForQt5
|
|
||||||
}:
|
|
||||||
|
|
||||||
stdenvNoCC.mkDerivation rec {
|
|
||||||
pname = "sddm-rose-pine-theme";
|
|
||||||
version = "1.2";
|
|
||||||
dontBuild = true;
|
|
||||||
|
|
||||||
propagatedUserEnvPkgs = [
|
|
||||||
libsForQt5.qt5.qtgraphicaleffects
|
|
||||||
];
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "lwndhrst";
|
|
||||||
repo = "sddm-rose-pine";
|
|
||||||
rev = "v${version}";
|
|
||||||
sha256 = "+WOdazvkzpOKcoayk36VLq/6lLOHDWkDykDsy8p87JE=";
|
|
||||||
};
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out/share/sddm/themes
|
|
||||||
cp -aR $src $out/share/sddm/themes/rose-pine
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user