formated whole config with alejandra

This commit is contained in:
Tomas Rivera
2026-03-08 19:02:23 +01:00
parent 0564b1d418
commit 5be7198efe
52 changed files with 3724 additions and 3623 deletions
+34 -29
View File
@@ -11,47 +11,52 @@
inputs.nixpkgs.follows = "nixpkgs";
};
};
# never got nixvim to wokrs. ):
# nixvim = {
# url = "github:nix-community/nixvim/nixos-25.11";
# };
# never got nixvim to wokrs. ):
# nixvim = {
# url = "github:nix-community/nixvim/nixos-25.11";
# };
outputs = { self, nixpkgs, nixpkgs-unstable, home-manager, nixos-grub-themes, ... }@inputs:
let
outputs = {
self,
nixpkgs,
nixpkgs-unstable,
home-manager,
nixos-grub-themes,
...
} @ inputs: let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
pkgs-unstable = import nixpkgs-unstable {
inherit system;
config.allowUnfree = false;
};
in
{
in {
nixosConfigurations = {
laptop = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs pkgs-unstable;};
modules = [
./hosts/laptop/configuration.nix
specialArgs = {inherit inputs pkgs-unstable;};
modules = [
./hosts/laptop/configuration.nix
];
};
};
# we use home-manager directly inside of configuration.nix
# last time i tried to use flake i broke everything ):
# homeManagerConfigurations = {
# tomasr = home-manager.lib.homeManagerConfiguration {
# pkgs = pkgs;
# system = "x86_64-linux";
# username = "tomasr";
# homeDirectory = "/home/tomasr";
# modules = [
# ./hosts/laptop/home.nix
# #nixvim.homeModules.default
#];
# Import your Home Manager module
# configuration = ./hosts/laptop/home.nix;
# we use home-manager directly inside of configuration.nix
# last time i tried to use flake i broke everything ):
# homeManagerConfigurations = {
# tomasr = home-manager.lib.homeManagerConfiguration {
# pkgs = pkgs;
# system = "x86_64-linux";
# username = "tomasr";
# homeDirectory = "/home/tomasr";
# modules = [
# ./hosts/laptop/home.nix
# #nixvim.homeModules.default
#];
# Import your Home Manager module
# configuration = ./hosts/laptop/home.nix;
# extraSpecialArgs = { inherit inputs; };
# };
# extraSpecialArgs = { inherit inputs; };
# };
#};
#};
};
#};
};
}
+108 -113
View File
@@ -1,52 +1,52 @@
# 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, pkgs-unstable, libs, inputs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
inputs.home-manager.nixosModules.default
../../modules/nixos/battery.nix
config,
pkgs,
pkgs-unstable,
libs,
inputs,
...
}: {
imports = [
# Include the results of the hardware scan.
./hardware-configuration.nix
inputs.home-manager.nixosModules.default
../../modules/nixos/battery.nix
#../../modules/nixos/ly.nix
../../modules/nixos/lyminimal.nix
../../modules/nixos/anki.nix
../../modules/nixos/udevsimple.nix
];
documentation.man.generateCaches = true; # used for the man script
documentation.man.generateCaches = true; # used for the man script
# grub theme
boot.loader.grub = {
# grub theme
boot.loader.grub = {
theme = inputs.nixos-grub-themes.packages.${pkgs.system}.nixos; # if you want to use nixos grub theme
};
};
nix.nixPath = [
"nixpkgs=${inputs.nixpkgs.outPath}"
"home-manager=${inputs.home-manager.outPath}"
]; #manix is unhappy without this
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
users = {
tomasr = ./home.nix;
};
extraSpecialArgs = {inherit pkgs-unstable;};
};
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
users = {
tomasr = ./home.nix;
};
extraSpecialArgs = { inherit pkgs-unstable; };
};
environment.pathsToLink = [
"/share/applications"
"/share/xdg-desktop-portal"
];
# removes uxterm
services.xserver.excludePackages = [ pkgs.xterm ];
environment.pathsToLink = [
"/share/applications"
"/share/xdg-desktop-portal"
];
# removes uxterm
services.xserver.excludePackages = [pkgs.xterm];
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
@@ -73,29 +73,26 @@ services.xserver.excludePackages = [ pkgs.xterm ];
# zsh dont want to work if it is not initialzed here.
programs.zsh.enable = true;
# Enable the GNOME Desktop Environment.
# services.displayManager.gdm.enable = true;
# services.desktopManager.gnome.enable = true;
# we dont use gnome but some utils yes -> see pckgs
#enable sddm
#services.displayManager.sddm = {
# enable = true;
# wayland.enable = true;
#};
# we use ly as the displayManager. see ../../modules/nixos/ly.nix
# Enable the GNOME Desktop Environment.
# services.displayManager.gdm.enable = true;
# services.desktopManager.gnome.enable = true;
# we dont use gnome but some utils yes -> see pckgs
#enable sddm
#services.displayManager.sddm = {
# enable = true;
# wayland.enable = true;
#};
# we use ly as the displayManager. see ../../modules/nixos/ly.nix
# enable hyprland WM
programs.hyprland = {
# enable hyprland WM
programs.hyprland = {
enable = true;
package = pkgs-unstable.hyprland; # we use the unstable branch to get the latest features
withUWSM = true;
xwayland.enable = true;
};
};
services.upower.enable = true;
services.upower.enable = true;
# Configure keymap in X11
services.xserver.xkb = {
@@ -132,13 +129,12 @@ services.upower.enable = true;
users.users.tomasr = {
isNormalUser = true;
description = "Tomas Rivera";
extraGroups = [ "networkmanager" "wheel" ]; #wheel allow to use sudo
extraGroups = ["networkmanager" "wheel"]; #wheel allow to use sudo
shell = pkgs.zsh;
};
#adds nixos experimental features:
nix.settings.experimental-features = [ "nix-command" "flakes" ];
#adds nixos experimental features:
nix.settings.experimental-features = ["nix-command" "flakes"];
# Garbage collector of generations
nix.gc = {
@@ -153,71 +149,71 @@ services.upower.enable = true;
# Allow unfree packages
nixpkgs.config.allowUnfree = false;
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
# use pkgs-unstable if you want the package from the unstable channel
#we need to install gnome and kde utils individually as we dont use gnome
gnome-calculator
snapshot
gnome-characters
gnome-disk-utility
kdePackages.okular
nautilus
gnome-font-viewer
wget
tree # shows dir in tree
zsh # better bash
brightnessctl # control brightness
pulseaudio # sound server
playerctl # controls media player
blueman # GTK-based Bluetooth Manager
udiskie # removable disk automounter for udisks
networkmanagerapplet # NetworkManager control applet
cliphist # Wayland clipboard manager
wl-clipboard # cli copy/past utilities for Wayland
jp # lightweight and flexible cli JSON parser
notepad-next
libnotify # Library that sends desktop notifications to a notification daemon
hyprkeys # keybind helper
cowsay
cmatrix
swww #wallpaper daemon
socat # Utility for bidirectional data transfer between two independent data channels (used to communicate between hyprland and swww to change wallpapers dinamically)
gcc # GNU C compiler
libreoffice
gruvbox-gtk-theme
hyprpicker
powertop
inetutils # collections of network programs such as telnet
python313Packages.pygments # used for ccat (comment of colorize plugin from oh-my-zsh)
fzf
jq # json parser used in some scripts
bottom # Cross-platform graphical process/system monitor with a customizable interface
cmatrix
tomato-c # pomodoro timer
pavucontrol # PulseAudio Volume Control
hyprshot
hyprcursor
vial # Open-source GUI and QMK fork for configuring your keyboard in real time
mplayer # Movie player that supports many video formats
chromium # used only to flash the firmware on my framework laptop 16 (keyboard.frame.work) as only chromium based browser support webHID.
capitaine-cursors-themed # cursor theme
usbutils # used for lsusb
# used for the framework 16 laptop
framework-tool
framework-tool-tui
# use pkgs-unstable if you want the package from the unstable channel
#we need to install gnome and kde utils individually as we dont use gnome
gnome-calculator
snapshot
gnome-characters
gnome-disk-utility
kdePackages.okular
nautilus
gnome-font-viewer
wget
tree # shows dir in tree
zsh # better bash
brightnessctl # control brightness
pulseaudio # sound server
playerctl # controls media player
blueman # GTK-based Bluetooth Manager
udiskie # removable disk automounter for udisks
networkmanagerapplet # NetworkManager control applet
cliphist # Wayland clipboard manager
wl-clipboard # cli copy/past utilities for Wayland
jp # lightweight and flexible cli JSON parser
notepad-next
libnotify # Library that sends desktop notifications to a notification daemon
hyprkeys # keybind helper
cowsay
cmatrix
swww #wallpaper daemon
socat # Utility for bidirectional data transfer between two independent data channels (used to communicate between hyprland and swww to change wallpapers dinamically)
gcc # GNU C compiler
libreoffice
gruvbox-gtk-theme
hyprpicker
powertop
inetutils # collections of network programs such as telnet
python313Packages.pygments # used for ccat (comment of colorize plugin from oh-my-zsh)
fzf
jq # json parser used in some scripts
bottom # Cross-platform graphical process/system monitor with a customizable interface
cmatrix
tomato-c # pomodoro timer
pavucontrol # PulseAudio Volume Control
hyprshot
hyprcursor
vial # Open-source GUI and QMK fork for configuring your keyboard in real time
mplayer # Movie player that supports many video formats
chromium # used only to flash the firmware on my framework laptop 16 (keyboard.frame.work) as only chromium based browser support webHID.
capitaine-cursors-themed # cursor theme
usbutils # used for lsusb
# used for the framework 16 laptop
framework-tool
framework-tool-tui
#some nix tools
manix
deadnix
];
#some nix tools
manix
deadnix
alejandra
];
# fonts
fonts.packages = with pkgs; [
nerd-fonts._0xproto
];
# fonts
fonts.packages = with pkgs; [
nerd-fonts._0xproto
];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
@@ -236,7 +232,7 @@ nerd-fonts._0xproto
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
networking.firewall.enable = false;
networking.firewall.enable = false;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
@@ -245,5 +241,4 @@ nerd-fonts._0xproto
# 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.11"; # Did you read the comment?
}
+23 -19
View File
@@ -1,30 +1,34 @@
# 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")
];
config,
lib,
pkgs,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "usbhid" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "thunderbolt" "usb_storage" "usbhid" "sd_mod"];
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-amd"];
boot.extraModulePackages = [];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/6aa664c2-8b23-4e20-b6e9-1806bf0f8df2";
fsType = "ext4";
};
fileSystems."/" = {
device = "/dev/disk/by-uuid/6aa664c2-8b23-4e20-b6e9-1806bf0f8df2";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/A59A-7AFA";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/A59A-7AFA";
fsType = "vfat";
options = ["fmask=0077" "dmask=0077"];
};
swapDevices = [ ];
swapDevices = [];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+135 -139
View File
@@ -1,163 +1,159 @@
{ config, pkgs, inputs, ... }:
{
# every import imports a specific module for an app. This module contains the enabling of this app and its settings.
# So if you want to add an home-manager app create a module which enables it and configures it and import it.
imports = [
# app modules
../../modules/home-manager/kitty.nix # terminal # use absolute path with --impure flag or go back to /etc/nixos and use relative
../../modules/home-manager/zoxide.nix # better cd
../../modules/home-manager/zsh.nix # better bash
../../modules/home-manager/git.nix
../../modules/home-manager/ssh.nix
../../modules/home-manager/fastfetch.nix
../../modules/home-manager/hyprland.nix
../../modules/home-manager/wlogout.nix # logout utility
../../modules/home-manager/rofi.nix # launcher and keybindings helper
../../modules/home-manager/swaync.nix # notification daemon
../../modules/home-manager/neovim.nix # dont use nixvim. broken
#../../modules/home-manager/neovim2.nix # ./neovim2.nix uses vim plug instead of the nix repository as with ./neovim.nix see the begining of neovim2 for an explanation
../../modules/home-manager/rclone.nix
../../modules/home-manager/waybar.nix
#../../modules/home-manager/oh-my-posh.nix # zsh customizer
../../modules/home-manager/oh-my-zsh.nix # another zsh customizer
../../modules/home-manager/hypridle.nix
../../modules/home-manager/swaylock.nix
../../modules/home-manager/anki.nix # we use only for some settings. see ../../modules/nixos/anki.nix for activating
../../modules/home-manager/librewolf.nix # privacy browser
../../modules/home-manager/cursor.nix # cursor (the icon not the app)
../../modules/home-manager/ripgrep.nix # better grep
];
config,
pkgs,
inputs,
...
}: {
# every import imports a specific module for an app. This module contains the enabling of this app and its settings.
# So if you want to add an home-manager app create a module which enables it and configures it and import it.
imports = [
# app modules
../../modules/home-manager/kitty.nix # terminal # use absolute path with --impure flag or go back to /etc/nixos and use relative
../../modules/home-manager/zoxide.nix # better cd
../../modules/home-manager/zsh.nix # better bash
../../modules/home-manager/git.nix
../../modules/home-manager/ssh.nix
../../modules/home-manager/fastfetch.nix
../../modules/home-manager/hyprland.nix
../../modules/home-manager/wlogout.nix # logout utility
../../modules/home-manager/rofi.nix # launcher and keybindings helper
../../modules/home-manager/swaync.nix # notification daemon
../../modules/home-manager/neovim.nix # dont use nixvim. broken
#../../modules/home-manager/neovim2.nix # ./neovim2.nix uses vim plug instead of the nix repository as with ./neovim.nix see the begining of neovim2 for an explanation
../../modules/home-manager/rclone.nix
../../modules/home-manager/waybar.nix
#../../modules/home-manager/oh-my-posh.nix # zsh customizer
../../modules/home-manager/oh-my-zsh.nix # another zsh customizer
../../modules/home-manager/hypridle.nix
../../modules/home-manager/swaylock.nix
../../modules/home-manager/anki.nix # we use only for some settings. see ../../modules/nixos/anki.nix for activating
../../modules/home-manager/librewolf.nix # privacy browser
../../modules/home-manager/cursor.nix # cursor (the icon not the app)
../../modules/home-manager/ripgrep.nix # better grep
];
#programs.nixvim = {
# enable = true;
# imports = [ ../../modules/nixvim/neovim.nix ];
# package = pkgs.neovim;
#};
# Home Manager needs a bit of information about you and the paths it should
#programs.nixvim = {
# enable = true;
# imports = [ ../../modules/nixvim/neovim.nix ];
# package = pkgs.neovim;
#};
# Home Manager needs a bit of information about you and the paths it should
# Required for Home Manager
home.username = "tomasr";
home.homeDirectory = "/home/tomasr";
home.stateVersion = "25.11"; # match your Home Manager release
home.stateVersion = "25.11"; # match your Home Manager release
# 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 should not change this value, even if you update Home Manager. If you do
# want to update the value, then make sure to first check the Home Manager
# release notes.
# 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 should not change this value, even if you update Home Manager. If you do
# want to update the value, then make sure to first check the Home Manager
# release notes.
# The home.packages option allows you to install Nix packages into your
# environment.
home.packages = [
#scritps
(pkgs.callPackage ../../modules/scripts/dontkillsteam.nix {}) # kill app (if it is steam put it in some background
(pkgs.callPackage ../../modules/scripts/batterynotify.nix {})
(pkgs.callPackage ../../modules/scripts/batterywarning.nix {})
(pkgs.callPackage ../../modules/scripts/weather.nix {})
(pkgs.callPackage ../../modules/scripts/cowsay.nix {})
(pkgs.callPackage ../../modules/scripts/wallpaper.nix {})
(pkgs.callPackage ../../modules/scripts/mountkdrive.nix {})
(pkgs.callPackage ../../modules/scripts/weatherwaybar.nix {})
(pkgs.callPackage ../../modules/scripts/colorpicker.nix {})
(pkgs.callPackage ../../modules/scripts/killall.nix {}) # kill all windows except focused window
(pkgs.callPackage ../../modules/scripts/launch.nix {}) # necessary for the apps i launch with hyprland at every start
(pkgs.callPackage ../../modules/scripts/gitnotify.nix {})
(pkgs.callPackage ../../modules/scripts/tomato.nix {})
(pkgs.callPackage ../../modules/scripts/librewolfprofiles.nix {})
(pkgs.callPackage ../../modules/scripts/performance-mode.nix {})
(pkgs.callPackage ../../modules/scripts/btm.nix {})
(pkgs.callPackage ../../modules/scripts/manix.nix {})
(pkgs.callPackage ../../modules/scripts/man.nix {})
#pkgs
pkgs.gruvbox-gtk-theme
# # Adds the 'hello' command to your environment. It prints a friendly
# # "Hello, world!" when run.
# pkgs.hello
# The home.packages option allows you to install Nix packages into your
# environment.
home.packages = [
#scritps
(pkgs.callPackage ../../modules/scripts/dontkillsteam.nix {}) # kill app (if it is steam put it in some background
(pkgs.callPackage ../../modules/scripts/batterynotify.nix {})
(pkgs.callPackage ../../modules/scripts/batterywarning.nix {})
(pkgs.callPackage ../../modules/scripts/weather.nix {})
(pkgs.callPackage ../../modules/scripts/cowsay.nix {})
(pkgs.callPackage ../../modules/scripts/wallpaper.nix {})
(pkgs.callPackage ../../modules/scripts/mountkdrive.nix {})
(pkgs.callPackage ../../modules/scripts/weatherwaybar.nix {})
(pkgs.callPackage ../../modules/scripts/colorpicker.nix {})
(pkgs.callPackage ../../modules/scripts/killall.nix {}) # kill all windows except focused window
(pkgs.callPackage ../../modules/scripts/launch.nix {}) # necessary for the apps i launch with hyprland at every start
(pkgs.callPackage ../../modules/scripts/gitnotify.nix {})
(pkgs.callPackage ../../modules/scripts/tomato.nix {})
(pkgs.callPackage ../../modules/scripts/librewolfprofiles.nix {})
(pkgs.callPackage ../../modules/scripts/performance-mode.nix {})
(pkgs.callPackage ../../modules/scripts/btm.nix {})
(pkgs.callPackage ../../modules/scripts/manix.nix {})
(pkgs.callPackage ../../modules/scripts/man.nix {})
#pkgs
pkgs.gruvbox-gtk-theme
# # Adds the 'hello' command to your environment. It prints a friendly
# # "Hello, world!" when run.
# pkgs.hello
# # It is sometimes useful to fine-tune packages, for example, by applying
# # overrides. You can do that directly here, just don't forget the
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
# # fonts?
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
# # It is sometimes useful to fine-tune packages, for example, by applying
# # overrides. You can do that directly here, just don't forget the
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
# # fonts?
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
# # You can also create simple shell scripts directly inside your
# # configuration. For example, this adds a command 'my-hello' to your
# # environment:
# (pkgs.writeShellScriptBin "my-hello" ''
# echo "Hello, ${config.home.username}!"
# '')
];
# # You can also create simple shell scripts directly inside your
# # configuration. For example, this adds a command 'my-hello' to your
# # environment:
# (pkgs.writeShellScriptBin "my-hello" ''
# echo "Hello, ${config.home.username}!"
# '')
];
#maybe migrate both of them in a separate file
# gtk config
gtk.theme = {
enable = true;
Gruvbox-GTK-Theme-BL-MB = {
enable = true;
name = "Gruvbox-GTK-Theme-BL-MB";
package = pkgs.gruvbox-gtk-theme;
};
};
#maybe migrate both of them in a separate file
# gtk config
gtk.theme = {
enable = true;
Gruvbox-GTK-Theme-BL-MB = {
enable = true;
name = "Gruvbox-GTK-Theme-BL-MB";
package = pkgs.gruvbox-gtk-theme;
};
};
# ssh config
# ssh config
programs.ssh.enable = true;
services.ssh-agent.enable = true;
programs.ssh.enable = true;
services.ssh-agent.enable = true;
home.file.".ssh/config".text = ''
Host *
AddKeysToAgent yes
IdentityFile ~/.ssh/id_ed25519
'';
home.file.".ssh/config".text = ''
Host *
AddKeysToAgent yes
IdentityFile ~/.ssh/id_ed25519
'';
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
home.file = {
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
# # symlink to the Nix store copy.
# ".screenrc".source = dotfiles/screenrc;
# # You can also set the file content immediately.
# ".gradle/gradle.properties".text = ''
# org.gradle.console=verbose
# org.gradle.daemon.idletimeout=3600000
# '';
};
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
home.file = {
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
# # symlink to the Nix store copy.
# ".screenrc".source = dotfiles/screenrc;
# # You can also set the file content immediately.
# ".gradle/gradle.properties".text = ''
# org.gradle.console=verbose
# org.gradle.daemon.idletimeout=3600000
# '';
};
# Home Manager can also manage your environment variables through
# 'home.sessionVariables'. These will be explicitly sourced when using a
# shell provided by Home Manager. If you don't want to manage your shell
# through Home Manager then you have to manually source 'hm-session-vars.sh'
# located at either
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/tomasr/etc/profile.d/hm-session-vars.sh
#
home.sessionVariables = {
# Home Manager can also manage your environment variables through
# 'home.sessionVariables'. These will be explicitly sourced when using a
# shell provided by Home Manager. If you don't want to manage your shell
# through Home Manager then you have to manually source 'hm-session-vars.sh'
# located at either
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/tomasr/etc/profile.d/hm-session-vars.sh
#
home.sessionVariables = {
EDITOR = "neovim";
# Git update function
# Prompts for commit message; defaults if empty
TERMINAL = "kitty";
};
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
}
+4 -1
View File
@@ -1,5 +1,8 @@
{ config, pkgs, ... }:
{
config,
pkgs,
...
}: {
programs.anki = {
# we enable system wide with nixpkgs because it offers some addon configuration. We just use this for some config
#enable = true;
+5 -3
View File
@@ -1,7 +1,9 @@
{ config, pkgs, ... }:
{
config,
pkgs,
...
}: {
services.batsignal = {
enable = true;
};
};
}
+4 -1
View File
@@ -1,5 +1,8 @@
{ config, pkgs, ... }:
{
config,
pkgs,
...
}: {
home.pointerCursor = {
hyprcursor.enable = true;
enable = true;
+13 -12
View File
@@ -1,7 +1,9 @@
{ config, pkgs, ... }:
{
# Adapted from https://github.com/dacrab/fastfetch-config/blob/main/config.jsonc
config,
pkgs,
...
}: {
# Adapted from https://github.com/dacrab/fastfetch-config/blob/main/config.jsonc
programs.fastfetch = {
enable = true;
@@ -12,7 +14,6 @@
};
modules = [
# ───────────── Hardware ─────────────
{
@@ -161,14 +162,14 @@
#{
# type = "custom";
# format = ''
# {#0} {#1} {#2} {#3} {#4} {#5} {#6} {#7}
# '';
#} #for some reason dont work
{
type = "colors";
symbol = "diamond";
}
# format = ''
# {#0} {#1} {#2} {#3} {#4} {#5} {#6} {#7}
# '';
#} #for some reason dont work
{
type = "colors";
symbol = "diamond";
}
"break"
];
+4 -2
View File
@@ -1,6 +1,8 @@
{ config, pkgs, ... }:
{
config,
pkgs,
...
}: {
programs.git = {
enable = true;
settings = {
+17 -16
View File
@@ -1,23 +1,24 @@
{ config, pkgs, ... }:
{
config,
pkgs,
...
}: {
services.hypridle = {
enable = true;
settings = {
general = {
lock_cmd = "notify-send 'lock!'"; # dbus/sysd lock command (loginctl lock-session)
unlock_cmd = "notify-send 'unlock!'"; # same as above, but unlock
before_sleep_cmd = "notify-send 'Zzz'"; # command ran before sleep
after_sleep_cmd = "notify-send 'Awake!"; # command ran after sleep
ignore_dbus_inhibit = false; # whether to ignore dbus-sent idle-inhibit requests (used by e.g. firefox or steam)
ignore_systemd_inhibit = false; # whether to ignore systemd-inhibit --what=idle inhibitors
};
listener = {
timeout = 500; # in seconds
on-timeout = "notify-send 'You are idle!'"; # command to run when timeout has passed
on-resume = "notify-send 'Welcome back!'"; # command to run when activity is detected after timeout has fired.
};
general = {
lock_cmd = "notify-send 'lock!'"; # dbus/sysd lock command (loginctl lock-session)
unlock_cmd = "notify-send 'unlock!'"; # same as above, but unlock
before_sleep_cmd = "notify-send 'Zzz'"; # command ran before sleep
after_sleep_cmd = "notify-send 'Awake!"; # command ran after sleep
ignore_dbus_inhibit = false; # whether to ignore dbus-sent idle-inhibit requests (used by e.g. firefox or steam)
ignore_systemd_inhibit = false; # whether to ignore systemd-inhibit --what=idle inhibitors
};
listener = {
timeout = 500; # in seconds
on-timeout = "notify-send 'You are idle!'"; # command to run when timeout has passed
on-resume = "notify-send 'Welcome back!'"; # command to run when activity is detected after timeout has fired.
};
};
};
}
+404 -412
View File
@@ -1,436 +1,428 @@
{ config, pkgs, pkgs-unstable, ... }:
let
wallpaper = ../../assets/wallpaper1.jpg;
in
{
config,
pkgs,
pkgs-unstable,
...
}: let
wallpaper = ../../assets/wallpaper1.jpg;
in {
#refer to https://wiki.hypr.land/Nix/Hyprland-on-Home-Manager/
wayland.windowManager.hyprland.enable = true;
wayland.windowManager.hyprland.package = pkgs-unstable.hyprland;
#hint Electron apps to use on wayland;
home.sessionVariables.NIXOS_OZONE_WL = "1";
wayland.windowManager.hyprland.plugins = [
#pkgs-unstable.hyprlandPlugins.hyprspace # currently broken
#pkgs-unstable.hyprlandPlugins.hypr-dynamic-cursors # currently broken
];
wayland.windowManager.hyprland.settings = {
"$mod" = "SUPER";
"$term" = "kitty";
"$editor" = "nvim";
"$file" = "nautilus";
"$browser" = "kitty --class \"custom-librewolfprofiles\" --name \"Select LibreWolf profile\" --hold custom-librewolfprofiles";
# ▄▀█ █▄░█ █ █▀▄▀█ ▄▀█ ▀█▀ █ █▀█ █▄░█
# █▀█ █░▀█ █ █░▀░█ █▀█ ░█░ █ █▄█ █░▀█
animations = {
enabled = true;
bezier = [
"wind, 0.05, 0.9, 0.1, 1.05"
"winIn, 0.1, 1.1, 0.1, 1.1"
"winOut, 0.3, -0.3, 0, 1"
"liner, 1, 1, 1, 1"
];
animation = [
"windows, 1, 6, wind, slide"
"windowsIn, 1, 6, winIn, slide"
"windowsOut, 1, 5, winOut, slide"
"windowsMove, 1, 5, wind, slide"
"border, 1, 1, liner"
"borderangle, 1, 30, liner, loop"
"fade, 1, 10, default"
"workspaces, 1, 5, wind"
];
};
#refer to https://wiki.hypr.land/Nix/Hyprland-on-Home-Manager/
wayland.windowManager.hyprland.enable = true;
wayland.windowManager.hyprland.package = pkgs-unstable.hyprland;
#hint Electron apps to use on wayland;
home.sessionVariables.NIXOS_OZONE_WL="1";
# █▀▀ █▄░█ █░█
# ██▄ █░▀█ ▀▄▀
wayland.windowManager.hyprland.plugins = [
#pkgs-unstable.hyprlandPlugins.hyprspace # currently broken
#pkgs-unstable.hyprlandPlugins.hypr-dynamic-cursors # currently broken
];
wayland.windowManager.hyprland.settings = {
"$mod" = "SUPER";
"$term" = "kitty";
"$editor" = "nvim";
"$file" = "nautilus";
"$browser" = "kitty --class \"custom-librewolfprofiles\" --name \"Select LibreWolf profile\" --hold custom-librewolfprofiles";
# ▄▀█ █▄░█ █ █▀▄▀█ ▄▀█ ▀█▀ █ █▀█ █▄░█
# █▀█ █░▀█ █ █░▀░█ █▀█ ░█░ █ █▄█ █░▀█
animations = {
enabled = true;
bezier = [
"wind, 0.05, 0.9, 0.1, 1.05"
"winIn, 0.1, 1.1, 0.1, 1.1"
"winOut, 0.3, -0.3, 0, 1"
"liner, 1, 1, 1, 1"
];
animation = [
"windows, 1, 6, wind, slide"
"windowsIn, 1, 6, winIn, slide"
"windowsOut, 1, 5, winOut, slide"
"windowsMove, 1, 5, wind, slide"
"border, 1, 1, liner"
"borderangle, 1, 30, liner, loop"
"fade, 1, 10, default"
"workspaces, 1, 5, wind"
];
};
# See https://wiki.hyprland.org/Configuring/Environment-variables/
env = [
"PATH, $PATH:$scrPath"
"XDG_CURRENT_DESKTOP,Hyprland"
"XDG_SESSION_TYPE,wayland"
"XDG_SESSION_DESKTOP,Hyprland"
"QT_QPA_PLATFORM,wayland;xcb"
"QT_QPAPLATFORMTHEME,qt6ct"
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
"MOZ_ENABLE_WAYLAND,1"
"GDK_SCALE,1"
];
# █▀▀ █▄░█ █░█
# ██▄ █░▀█ ▀▄▀
# █ █▄░█ █▀█ █░█ ▀█▀
# █ █░▀█ █▀▀ █▄█ ░█░
# See https://wiki.hyprland.org/Configuring/Environment-variables/
env = [
"PATH, $PATH:$scrPath"
"XDG_CURRENT_DESKTOP,Hyprland"
"XDG_SESSION_TYPE,wayland"
"XDG_SESSION_DESKTOP,Hyprland"
"QT_QPA_PLATFORM,wayland;xcb"
"QT_QPAPLATFORMTHEME,qt6ct"
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
"MOZ_ENABLE_WAYLAND,1"
"GDK_SCALE,1"
];
input = {
kb_layout = ["ch"];
follow_mouse = 1;
sensitivity = 0;
force_no_accel = 1;
};
# █ █▄░█ █▀█ █░█ █▀
# █ █░▀█ █▀▀ █▄█ ░█░
# █▄▀ █▀▀ █▄█ █▄▄ █ █▄░█ █▀▄ █ █░█ █▀▀ █▀
# █░█ ██▄ ░█░ █▄█ █ █░▀█ █▄▀ █ █░▀█ █▄█ ▄█
# binds to do
input = {
kb_layout = [ "ch" ];
follow_mouse = 1;
sensitivity = 0;
force_no_accel = 1;
};
bind = [
#hyprland/utility keybindings
"$mod, W, togglefloating"
"$mod, G, togglegroup"
"Alt, Return, fullscreen"
"$mod, Left, movefocus, l"
"$mod, Right, movefocus, r"
"$mod, Up, movefocus, u"
"$mod, Down, movefocus, d"
"Alt, Tab, movefocus, d"
"$mod, 1, workspace, 1"
"$mod, 2, workspace, 2"
"$mod, 3, workspace, 3"
"$mod, 4, workspace, 4"
"$mod, 5, workspace, 5"
"$mod, 6, workspace, 6"
"$mod, 7, workspace, 7"
"$mod, 8, workspace, 8"
"$mod, 9, workspace, 9"
"$mod, 0, workspace, 10"
"$mod+Ctrl, Right, workspace, r+1"
"$mod+Ctrl, Left, workspace, r-1"
"$mod+Ctrl, Doown, workspace, empty"
"$mod+Shift, 1, movetoworkspace, 1"
"$mod+Shift, 2, movetoworkspace, 2"
"$mod+Shift, 3, movetoworkspace, 3"
"$mod+Shift, 4, movetoworkspace, 4"
"$mod+Shift, 5, movetoworkspace, 5"
"$mod+Shift, 6, movetoworkspace, 6"
"$mod+Shift, 7, movetoworkspace, 7"
"$mod+Shift, 8, movetoworkspace, 8"
"$mod+Shift, 9, movetoworkspace, 9"
"$mod+Shift, 0, movetoworkspace, 10"
"$mod+Ctrl+Alt, Right, movetoworkspace, r+1"
"$mod+Ctrl+Alt, Left, movetoworkspace, r-1"
"$mod, Backspace, exec, wlogout -b 4 -T 600 -B 600"
"$mod+Shift+Ctrl, Left, movewindow, l"
"$mod+Shift+Ctrl, Right, movewindow, r"
"$mod+Shift+Ctrl, Up, movewindow, u"
"$mod+Shift+Ctrl, Down, movewindow, d"
"$mod, mouse_down, workspace, e+1"
"$mod, mouse_up, workspace, e-1"
"$mod, V, exec, cliphist list | rofi -dmenu| cliphist decode | wl-copy" # copy paste
"$mod, B, exec, hyprkeys -bkr | rofi -dmenu"
#"$mod, A, tagwindow, noborder" # used to not apply image border
"$mod, S, togglespecialworkspace,"
"Alt+$mod, S, movetoworkspace, special"
# for the scrolling layout
"$mod, A, layoutmsg, move -col"
"$mod, D, layoutmsg, move +col"
#apps keybindings
"$mod, T, exec, $term"
"$mod, E, exec, $file"
"$mod, F, exec, $browser"
"$mod+Shift, A, exec, rofi -show drun"
"$mod, Q, exec, custom-dontkillsteam"
"Ctrl+Alt, W, exec, pkill waybar || waybar"
"$mod, L, exec, swaylock -eFLK -i ${wallpaper}"
"$mod, F11, exec, hyprshot -m window"
", F11, exec, hyprshot -m output"
"$mod_SHIFT, S, exec, hyprshot -m region --clipboard only"
# framework 16 rgb macropad
"Ctrl+$mod, 6, exec, custom-killall" # pos 1 1 killall apps except focused one
"Ctrl+Alt, 7, exec, custom-performance" # pos 2 1 start performance mode
# reloads the autostart programs # pos 3 1
"Ctrl+$mod, 4, exec, sleep 1 && kitty -o font_size=16 -e sh -c 'custom-weather'"
"Ctrl+$mod, 4, exec, sleep 1 && kitty -o font_size=11 -e sh -c 'custom-cowsay'"
"Ctrl+$mod, 4, exec, kitty -e 'custom-launch'"
"Ctrl+$mod, 4, exec, sleep 1 && kitty -o font_size=5 -e btm --theme gruvbox --disable-click --disable_advanced_kill --enable_cache_memory -g -R -T "
"Ctrl+$mod, 4, exec, sleep 1 && kitty -o font_size=1 -e sh -c 'cmatrix -br'"
"Ctrl+Alt, 1, exec, swaync-client -t" # pos 4 1 notification center
"Ctrl+$mod, 3, exec, pavucontrol" # pos 1 2 audiocontrol
"Ctrl+$mod, 5, exec, gnome-characters" # pos 2 2 special chars
"Ctrl+Alt, 8, exec, hyprpicker | tee >(wl-copy) | cliphist store" # pos 3 2 colorpicker
"Ctrl+Alt, 0, exec, custom-tomato" # pos 1 3 pomodoro app
"Ctrl+Alt, 2, exec, custom-bottom" # pos 2 3 btm (like htop but cleaner)
"Ctrl+Alt, 9, exec, anki"
# if hyprexpo plugin enabled bind = $mainMod, Space, hyprexpo:expo, toggle
# maybe exec sudo framework-tools-tui
# █▄▀ █▀▀ █▄█ █▄▄ █ █▄░█ █▀▄ █ █▄░█ █▀▀ █▀
# █░█ ██▄ ░█░ █▄█ █ █░▀█ █▄▀ █ █░▀█ █▄█ ▄█
# binds to do
#plugins keybindings
#"$mod, SPACE, overview:toggle, "
];
binde = [
"$mod+Shift, Right, resizeactive, 30 0"
"$mod+Shift, Left, resizeactive, -30, 0"
"$mod+Shift, Up, resizeactive, 0 -30"
"$mod+Shift, Down, resizeactive,m 0 30"
];
bindl = [
", F1, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle" #toggle audio mute
", F5, exec, playerctl play-pause" # media F4-F6
", F4, exec, playerctl previous"
", F6, exec, playerctl next"
];
bindel = [
", F2, exec, pactl set-sink-volume @DEFAULT_SINK@ -10%" # decrease volume
", F3, exec, pactl set-sink-volume @DEFAULT_SINK@ +10%" # increase volume
", F7, exec, brightnessctl s 10%-" # decrease brightness
", F8, exec, brightnessctl s +10%" # increase brightness
];
bindm = [
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
"$mod, Z, movewindow"
"$mod, X, resizewindow"
];
# █░░ ▄▀█ █░█ █▄░█ █▀▀ █░█
# █▄▄ █▀█ █▄█ █░▀█ █▄▄ █▀█
exec-once = [
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" # for XDPH
"dbus-update-activation-environment --systemd --all" # for XDPH
"systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" # for XDPH
"systemctl --user start xdg-desktop-portal-wlr.service"
"blueman-applet" # systray app for Bluetooth
"udiskie --no-automount --smart-tray" # front-end that allows to manage removable media
"nm-applet --indicator" # systray app for Network/wifi
"wl-paste --type text --watch cliphist store" # clipboard store text data
"wl-paste --type image --watch cliphist store" # clipboard store image data
"custom-batterynotify"
"custom-batterywarning"
#wallpapers/b
"swww img ${wallpaper}"
"swww-daemon"
"sleep 1 && custom-wallpaper"
"custom-mountkdrive"
"waybar"
"custom-gitnotify"
bind = [
#hyprland/utility keybindings
"$mod, W, togglefloating"
"$mod, G, togglegroup"
"Alt, Return, fullscreen"
"$mod, Left, movefocus, l"
"$mod, Right, movefocus, r"
"$mod, Up, movefocus, u"
"$mod, Down, movefocus, d"
"Alt, Tab, movefocus, d"
"$mod, 1, workspace, 1"
"$mod, 2, workspace, 2"
"$mod, 3, workspace, 3"
"$mod, 4, workspace, 4"
"$mod, 5, workspace, 5"
"$mod, 6, workspace, 6"
"$mod, 7, workspace, 7"
"$mod, 8, workspace, 8"
"$mod, 9, workspace, 9"
"$mod, 0, workspace, 10"
"$mod+Ctrl, Right, workspace, r+1"
"$mod+Ctrl, Left, workspace, r-1"
"$mod+Ctrl, Doown, workspace, empty"
"$mod+Shift, 1, movetoworkspace, 1"
"$mod+Shift, 2, movetoworkspace, 2"
"$mod+Shift, 3, movetoworkspace, 3"
"$mod+Shift, 4, movetoworkspace, 4"
"$mod+Shift, 5, movetoworkspace, 5"
"$mod+Shift, 6, movetoworkspace, 6"
"$mod+Shift, 7, movetoworkspace, 7"
"$mod+Shift, 8, movetoworkspace, 8"
"$mod+Shift, 9, movetoworkspace, 9"
"$mod+Shift, 0, movetoworkspace, 10"
"$mod+Ctrl+Alt, Right, movetoworkspace, r+1"
"$mod+Ctrl+Alt, Left, movetoworkspace, r-1"
"$mod, Backspace, exec, wlogout -b 4 -T 600 -B 600"
"$mod+Shift+Ctrl, Left, movewindow, l"
"$mod+Shift+Ctrl, Right, movewindow, r"
"$mod+Shift+Ctrl, Up, movewindow, u"
"$mod+Shift+Ctrl, Down, movewindow, d"
"$mod, mouse_down, workspace, e+1"
"$mod, mouse_up, workspace, e-1"
"$mod, V, exec, cliphist list | rofi -dmenu| cliphist decode | wl-copy" # copy paste
"$mod, B, exec, hyprkeys -bkr | rofi -dmenu"
#"$mod, A, tagwindow, noborder" # used to not apply image border
"$mod, S, togglespecialworkspace,"
"Alt+$mod, S, movetoworkspace, special"
# for the scrolling layout
"$mod, A, layoutmsg, move -col"
"$mod, D, layoutmsg, move +col"
#apps keybindings
"$mod, T, exec, $term"
"$mod, E, exec, $file"
"$mod, F, exec, $browser"
"$mod+Shift, A, exec, rofi -show drun"
"$mod, Q, exec, custom-dontkillsteam"
"Ctrl+Alt, W, exec, pkill waybar || waybar"
"$mod, L, exec, swaylock -eFLK -i ${wallpaper}"
"$mod, F11, exec, hyprshot -m window"
", F11, exec, hyprshot -m output"
"$mod_SHIFT, S, exec, hyprshot -m region --clipboard only"
# framework 16 rgb macropad
"Ctrl+$mod, 6, exec, custom-killall" # pos 1 1 killall apps except focused one
"Ctrl+Alt, 7, exec, custom-performance" # pos 2 1 start performance mode
# reloads the autostart programs # pos 3 1
"Ctrl+$mod, 4, exec, sleep 1 && kitty -o font_size=16 -e sh -c 'custom-weather'"
"Ctrl+$mod, 4, exec, sleep 1 && kitty -o font_size=11 -e sh -c 'custom-cowsay'"
"Ctrl+$mod, 4, exec, kitty -e 'custom-launch'"
"Ctrl+$mod, 4, exec, sleep 1 && kitty -o font_size=5 -e btm --theme gruvbox --disable-click --disable_advanced_kill --enable_cache_memory -g -R -T "
"Ctrl+$mod, 4, exec, sleep 1 && kitty -o font_size=1 -e sh -c 'cmatrix -br'"
"Ctrl+Alt, 1, exec, swaync-client -t" # pos 4 1 notification center
"Ctrl+$mod, 3, exec, pavucontrol" # pos 1 2 audiocontrol
"Ctrl+$mod, 5, exec, gnome-characters" # pos 2 2 special chars
"Ctrl+Alt, 8, exec, hyprpicker | tee >(wl-copy) | cliphist store" # pos 3 2 colorpicker
"Ctrl+Alt, 0, exec, custom-tomato" # pos 1 3 pomodoro app
"Ctrl+Alt, 2, exec, custom-bottom" # pos 2 3 btm (like htop but cleaner)
"Ctrl+Alt, 9, exec, anki"
# if hyprexpo plugin enabled bind = $mainMod, Space, hyprexpo:expo, toggle
# maybe exec sudo framework-tools-tui
#########################
# login autostart
#######################
"[workspace 1 silent] sleep 1 && kitty -o font_size=16 -e sh -c 'custom-weather'"
"[workspace 1 silent] sleep 1 && kitty -o font_size=11 -e sh -c 'custom-cowsay'"
"[workspace 1 silent] kitty -e 'custom-launch'"
"[workspace 1 silent] sleep 1 && kitty -o font_size=5 -e btm --theme gruvbox --disable-click --disable_advanced_kill --enable_cache_memory -g -R -T "
"[workspace 1 silent] sleep 1 && kitty -o font_size=1 -e sh -c 'cmatrix -br'"
######################
######################
];
#plugins keybindings
#"$mod, SPACE, overview:toggle, "
# gestures (also keybindings)
gesture = [
"3, right, move, +col"
"3, left, move, -col"
];
];
binde = [
"$mod+Shift, Right, resizeactive, 30 0"
"$mod+Shift, Left, resizeactive, -30, 0"
"$mod+Shift, Up, resizeactive, 0 -30"
"$mod+Shift, Down, resizeactive,m 0 30"
];
bindl = [
", F1, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle" #toggle audio mute
", F5, exec, playerctl play-pause" # media F4-F6
", F4, exec, playerctl previous"
", F6, exec, playerctl next"
];
bindel = [
", F2, exec, pactl set-sink-volume @DEFAULT_SINK@ -10%" # decrease volume
", F3, exec, pactl set-sink-volume @DEFAULT_SINK@ +10%" # increase volume
", F7, exec, brightnessctl s 10%-" # decrease brightness
", F8, exec, brightnessctl s +10%" # increase brightness
];
bindm = [
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
"$mod, Z, movewindow"
"$mod, X, resizewindow"
];
# █░░ ▄▀█ █░█ █▄░█ █▀▀ █░█
# █▄▄ █▀█ █▄█ █░▀█ █▄▄ █▀█
exec-once = [
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" # for XDPH
"dbus-update-activation-environment --systemd --all" # for XDPH
"systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" # for XDPH
"systemctl --user start xdg-desktop-portal-wlr.service"
"blueman-applet" # systray app for Bluetooth
"udiskie --no-automount --smart-tray" # front-end that allows to manage removable media
"nm-applet --indicator" # systray app for Network/wifi
"wl-paste --type text --watch cliphist store" # clipboard store text data
"wl-paste --type image --watch cliphist store" # clipboard store image data
"custom-batterynotify"
"custom-batterywarning"
#wallpapers/b
"swww img ${wallpaper}"
"swww-daemon"
"sleep 1 && custom-wallpaper"
"custom-mountkdrive"
"waybar"
"custom-gitnotify"
# █░░ ▄▀█ █▄█ █▀█ █░█ ▀█▀ █▀
# █▄▄ █▀█ ░█░ █▄█ █▄█ ░█░ ▄█
#########################
# login autostart
#######################
"[workspace 1 silent] sleep 1 && kitty -o font_size=16 -e sh -c 'custom-weather'"
"[workspace 1 silent] sleep 1 && kitty -o font_size=11 -e sh -c 'custom-cowsay'"
"[workspace 1 silent] kitty -e 'custom-launch'"
"[workspace 1 silent] sleep 1 && kitty -o font_size=5 -e btm --theme gruvbox --disable-click --disable_advanced_kill --enable_cache_memory -g -R -T "
"[workspace 1 silent] sleep 1 && kitty -o font_size=1 -e sh -c 'cmatrix -br'"
######################
######################
];
dwindle = {
pseudotile = true;
preserve_split = true;
};
# gestures (also keybindings)
gesture = [
"3, right, move, +col"
"3, left, move, -col"
];
# █▀▄▀█ █ █▀ █▀▀
# █░▀░█ █ ▄█ █▄▄
misc = {
vrr = 0;
force_default_wallpaper = 0;
};
xwayland = {
force_zero_scaling = true;
};
# █░░ ▄▀█ █▄█ █▀█ ██ ▀█▀ █▀
# █▄▄ █▀█ ░█ █▄█ ██ ░█░ ▄█
# █▀▄▀█ █▀█ █▄░█ █ ▀█▀ █▀█ █▀█
# █░▀░█ █▄█ █#░▀█ █ ░█░ ▄█ █▀▄
monitor = [
#",preferred, auto, auto"
"eDP-1, highres@highrr, 0x0, 1"
"HDMI-A-1, highres2highrr, auto-left, 1"
];
# _______ ___ __ __ _______ ___ __ _ _______
#| || | | | | || || | | | | || |
#| _ || | | | | || ___|| | | |_| || _____|
#| |_| || | | |_| || | __ | | | || |_____
#| ___|| |___ | || || || | | _ ||_____ |
#| | | || || |_| || | | | | | _____| |
#|___| |_______||_______||_______||___| |_| |__||_______|
#
"plugin:dynamic-cursors" = {
enabled = true;
threshold = 2;
mode = "rotate";
rotate = {
# length in px of the simulated stick used to rotate the cursor
# most realistic if this is your actual cursor size
length = 20;
offset = 0;
};
shake = {
enabled = true;
# use nearest-neighbour (pixelated) scaling when shaking
# may look weird when effects are enabled
nearest = true;
threshold = 4;
# magnification level immediately after shake start
base = 4.0;
# magnification increase per second when continuing to shake
speed = 4.0;
# how much the speed is influenced by the current shake intensitiy
influence = 0.0;
dwindle = {
pseudotile = true;
preserve_split = true;
};
# maximal magnification the cursor can reach
# values below 1 disable the limit (e.g. 0)
limit = 0.0;
# █▀▄▀█ █ █▀ █▀▀
# █░▀░█ █ ▄█ █▄▄
# time in millseconds the cursor will stay magnified after a shake has ended
timeout = 2000;
misc = {
vrr = 0;
force_default_wallpaper = 0;
};
xwayland = {
force_zero_scaling = true;
};
# show cursor behaviour `tilt`, `rotate`, etc. while shaking
effects = true;
# █▀▄▀█ █▀█ █▄░█ █ ▀█▀ █▀█ █▀█
# █░▀░█ █▄█ █#░▀█ █ ░█░ █▄█ █▀▄
monitor = [
#",preferred, auto, auto"
"eDP-1, highres@highrr, 0x0, 1"
"HDMI-A-1, highres2highrr, auto-left, 1"
];
# _______ ___ __ __ _______ ___ __ _ _______
#| || | | | | || || | | | | || |
#| _ || | | | | || ___|| | | |_| || _____|
#| |_| || | | |_| || | __ | | | || |_____
#| ___|| |___ | || || || | | _ ||_____ |
#| | | || || |_| || | | | | | _____| |
#|___| |_______||_______||_______||___| |_| |__||_______|
#
"plugin:dynamic-cursors" = {
enabled = true;
threshold = 2;
mode = "rotate";
rotate = {
# length in px of the simulated stick used to rotate the cursor
# most realistic if this is your actual cursor size
length = 20;
offset = 0;
};
shake = {
enabled = true;
# use nearest-neighbour (pixelated) scaling when shaking
# may look weird when effects are enabled
nearest = true;
threshold = 4;
# magnification level immediately after shake start
base = 4.0;
# magnification increase per second when continuing to shake
speed = 4.0;
# how much the speed is influenced by the current shake intensitiy
influence = 0.0;
# enable ipc events for shake
ipc = false;
};
};
"plugin:overview" = {
disableGestures = true;
showEmptyWorkspace = true;
workspaceActiveBorder = "rgb(ab7746)";
disableBlur = true;
};
# maximal magnification the cursor can reach
# values below 1 disable the limit (e.g. 0)
limit = 0.0;
#####################################################
#####################################################
# theme
decoration = {
dim_special = 0.3;
blur = {
special = true;
enabled = true;
size = 4;
passes = 2;
new_optimizations = true;
ignore_opacity = true;
};
};
general = {
gaps_in = 3;
gaps_out = 8;
border_size = 4;
"col.active_border" = "rgba(ca6702ff) rgba(ecd3a0ff) 45deg";
"col.inactive_border" = "rgba(f1dca7d9) rgba(ffe1a8d9) 45deg";
layout = "dwindle";
resize_on_border = true;
};
group = {
"col.border_active" = "rgba(ca6702ff) rgba(ecd3a0ff) 45deg";
"col.border_inactive" = "rgba(f1dca7d9) rgba(ffe1a8d9) 45deg";
"col.border_locked_active" = "rgba(ca6702ff) rgba(ecd3a0ff) 45deg";
"col.border_locked_inactive" = "rgba(f1dca7d9) rgba(ffe1a8d9) 45deg";
};
####################################################
##################################################
# time in millseconds the cursor will stay magnified after a shake has ended
timeout = 2000;
# /$$ /$$ /$$
#| $$ /$ | $$ | $$
#| $$ /$$$| $$ /$$$$$$ /$$$$$$ | $$ /$$ /$$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$$ /$$$$$$
#| $$/$$ $$ $$ /$$__ $$ /$$__ $$| $$ /$$/ /$$_____/ /$$__ $$ |____ $$ /$$_____/ /$$__ $$
#| $$$$_ $$$$| $$ \ $$| $$ \__/| $$$$$$/ | $$$$$$ | $$ \ $$ /$$$$$$$| $$ | $$$$$$$$
#| $$$/ \ $$$| $$ | $$| $$ | $$_ $$ \____ $$| $$ | $$ /$$__ $$| $$ | $$_____/
#| $$/ \ $$| $$$$$$/| $$ | $$ \ $$ /$$$$$$$/| $$$$$$$/| $$$$$$$| $$$$$$$| $$$$$$$
#|__/ \__/ \______/ |__/ |__/ \__/|_______/ | $$____/ \_______/ \_______/ \_______/
# | $$
# | $$
# |__/
# see https://wiki.hypr.land/Configuring/Workspace-Rules/
workspace = [
"1, layout:master"
"2, layout:scrolling, layoutopt:direction:right"
"name:special, layout:scrolling"
# used for smart gaps along some windowrules
"w[tv1], gapsout:0, gapsin:0"
"f[1], gapsout:0, gapsin:0"
];
# show cursor behaviour `tilt`, `rotate`, etc. while shaking
effects = true;
# enable ipc events for shake
ipc = false;
};
};
"plugin:overview" = {
disableGestures = true;
showEmptyWorkspace = true;
workspaceActiveBorder = "rgb(ab7746)";
disableBlur = true;
};
#####################################################
#####################################################
# theme
decoration = {
dim_special = 0.3;
blur = {
special = true;
enabled = true;
size = 4;
passes = 2;
new_optimizations = true;
ignore_opacity = true;
};
};
general = {
gaps_in = 3;
gaps_out = 8;
border_size = 4;
"col.active_border" = "rgba(ca6702ff) rgba(ecd3a0ff) 45deg";
"col.inactive_border" = "rgba(f1dca7d9) rgba(ffe1a8d9) 45deg";
layout = "dwindle";
resize_on_border = true;
};
group = {
"col.border_active" = "rgba(ca6702ff) rgba(ecd3a0ff) 45deg";
"col.border_inactive" = "rgba(f1dca7d9) rgba(ffe1a8d9) 45deg";
"col.border_locked_active" = "rgba(ca6702ff) rgba(ecd3a0ff) 45deg";
"col.border_locked_inactive" = "rgba(f1dca7d9) rgba(ffe1a8d9) 45deg";
};
####################################################
##################################################
# /$$ /$$ /$$
#| $$ /$ | $$ | $$
#| $$ /$$$| $$ /$$$$$$ /$$$$$$ | $$ /$$ /$$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$$ /$$$$$$
#| $$/$$ $$ $$ /$$__ $$ /$$__ $$| $$ /$$/ /$$_____/ /$$__ $$ |____ $$ /$$_____/ /$$__ $$
#| $$$$_ $$$$| $$ \ $$| $$ \__/| $$$$$$/ | $$$$$$ | $$ \ $$ /$$$$$$$| $$ | $$$$$$$$
#| $$$/ \ $$$| $$ | $$| $$ | $$_ $$ \____ $$| $$ | $$ /$$__ $$| $$ | $$_____/
#| $$/ \ $$| $$$$$$/| $$ | $$ \ $$ /$$$$$$$/| $$$$$$$/| $$$$$$$| $$$$$$$| $$$$$$$
#|__/ \__/ \______/ |__/ |__/ \__/|_______/ | $$____/ \_______/ \_______/ \_______/
# | $$
# | $$
# |__/
# see https://wiki.hypr.land/Configuring/Workspace-Rules/
workspace = [
"1, layout:master"
"2, layout:scrolling, layoutopt:direction:right"
"name:special, layout:scrolling"
# used for smart gaps along some windowrules
"w[tv1], gapsout:0, gapsin:0"
"f[1], gapsout:0, gapsin:0"
];
# █░█░█ █ █▄░█ █▀▄ █▀█ █░█░█   █▀█ █░█ █░░ █▀▀ █▀
# ▀▄▀▄▀ █ █░▀█ █▄▀ █▄█ ▀▄▀▄▀   █▀▄ █▄█ █▄▄ ██▄ ▄█
windowrule = [
"opacity 0.90 0.90, match:class ^(firefox)$"
"opacity 0.90 0.90, match:class ^(Brave-browser)$"
"opacity 0.80 0.80, match:class ^(code-oss)$"
"opacity 0.80 0.80, match:class ^(Code)$"
"opacity 0.80 0.80, match:class ^(code-url-handler)$"
"opacity 0.80 0.80, match:class ^(code-insiders-url-handler)$"
"opacity 0.75 0.75, match:class ^(kitty)$"
"opacity 0.80 0.80, match:class ^(org.kde.dolphin)$"
"opacity 0.80 0.80, float on, match:class ^(org.kde.ark)$"
"opacity 0.80 0.80, float on, match:class ^(nwg-look)$"
"opacity 0.80 0.80, float on, match:class ^(qt5ct)$"
"opacity 0.80 0.80, float on, match:class ^(qt6ct)$"
"opacity 0.80 0.80, float on, match:class ^(kvantummanager)$"
"opacity 0.80 0.70, float on, match:class ^(org.pulseaudio.pavucontrol)$"
"opacity 0.80 0.70, float on, match:class ^(blueman-manager)$"
"opacity 0.80 0.70, float on, match:class ^(nm-applet)$"
"opacity 0.80 0.70, float on, match:class ^(nm-connection-editor)$"
"opacity 0.80 0.70, float on, match:class ^(org.kde.polkit-kde-authentication-agent-1)$"
"opacity 0.80 0.70, match:class ^(polkit-gnome-authentication-agent-1)$"
"opacity 0.80 0.70, match:class ^(org.freedesktop.impl.portal.desktop.gtk)$"
"opacity 0.80 0.70, match:class ^(org.freedesktop.impl.portal.desktop.hyprland)$"
"opacity 0.70 0.70, match:class ^([Ss]team)$"
"opacity 0.70 0.70, match:class ^(steamwebhelper)$"
"opacity 0.70 0.70, match:class ^(Spotify)$"
"opacity 0.70 0.70, match:initial_title ^(Spotify Free)$"
"opacity 0.90 0.90, float on, match:class ^(com.github.rafostar.Clapper)$"
"opacity 0.80 0.80, match:class ^(com.github.tchx84.Flatseal)$"
"opacity 0.80 0.80, match:class ^(hu.kramo.Cartridges)$"
"opacity 0.80 0.80, match:class ^(com.obsproject.Studio)$"
"opacity 0.80 0.80, match:class ^(gnome-boxes)$"
"opacity 0.80 0.80, match:class ^(discord)$"
"opacity 0.80 0.80, match:class ^(WebCord)$"
"opacity 0.80 0.80, match:class ^(ArmCord)$"
"opacity 0.80 0.80, float on, match:class ^(app.drey.Warp)$"
"opacity 0.80 0.80, float on, match:class ^(net.davidotek.pupgui2)$"
"opacity 0.80 0.80, float on, match:class ^(yad)$"
"opacity 0.80 0.80, float on, match:class ^(Signal)$"
"opacity 0.80 0.80, float on, match:class ^(io.github.alainm23.planify)$"
"opacity 0.80 0.80, float on, match:class ^(io.gitlab.theevilskeleton.Upscaler)$"
"opacity 0.80 0.80, float on, match:class ^(com.github.unrud.VideoDownloader)$"
"opacity 0.80 0.80, float on, match:class ^(io.gitlab.adhami3310.Impression)$"
"opacity 0.80 0.80, float on, match:class ^(io.missioncenter.MissionCenter)$"
"opacity 0.80 0.80, match:class ^(io.github.flattool.Warehouse)$"
"float on, match:class ^(org.kde.dolphin)$, match:title ^(Progress Dialog Dolphin)$"
"float on, match:class ^(org.kde.dolphin)$, match:title ^(Copying Dolphin)$"
"float on, match:class ^(firefox)$, match:title ^(Picture-in-Picture)$"
"float on, match:class ^(firefox)$, match:title ^(Library)$"
"float on, match:class ^(kitty)$, match:title ^(top)$"
"float on, match:class ^(kitty)$, match:title ^(btop)$"
"float on, match:class ^(kitty)$, match:title ^(htop)$"
"float on, match:class ^(vlc)$"
"float on, match:class ^(eog)$"
"float on, size 400 175, match:class ^(custom-librewolfprofiles)$"
"float on, size 600 600, match:initial_class ^(custom-pomodoro)$"
"float on, size 1500 800, match:initial_class ^(custom-bottom)$"
"border_size 0, match:float 0, match:workspace w[tv1]"
"rounding 0, match:float 0, match:workspace w[tv1]"
"border_size 0, match:float 0, match:workspace f[1]"
"rounding 0, match:float 0, match:workspace f[1]"
];
# add a float for tomato when in kitty
#"plugin:imgborders:noimgborders, tag:noborder"
layerrule = [
"blur on, ignore_alpha 0, match:namespace rofi"
"blur on, ignore_alpha 0, match:namespace notifications"
"blur on, ignore_alpha 0, match:namespace swaync-notification-window"
"blur on, ignore_alpha 0, match:namespace swaync-control-center"
"blur on, match:namespace logout_dialog"
];
};
# █░█░█ █ █▄░█ █▀▄ █▀█ █░█░█   █▀█ █░█ █░░ █▀▀ █▀
# ▀▄▀▄▀ █ █░▀█ █▄▀ █▄█ ▀▄▀▄▀   █▀▄ █▄█ █▄▄ ██▄ ▄█
windowrule = [
"opacity 0.90 0.90, match:class ^(firefox)$"
"opacity 0.90 0.90, match:class ^(Brave-browser)$"
"opacity 0.80 0.80, match:class ^(code-oss)$"
"opacity 0.80 0.80, match:class ^(Code)$"
"opacity 0.80 0.80, match:class ^(code-url-handler)$"
"opacity 0.80 0.80, match:class ^(code-insiders-url-handler)$"
"opacity 0.75 0.75, match:class ^(kitty)$"
"opacity 0.80 0.80, match:class ^(org.kde.dolphin)$"
"opacity 0.80 0.80, float on, match:class ^(org.kde.ark)$"
"opacity 0.80 0.80, float on, match:class ^(nwg-look)$"
"opacity 0.80 0.80, float on, match:class ^(qt5ct)$"
"opacity 0.80 0.80, float on, match:class ^(qt6ct)$"
"opacity 0.80 0.80, float on, match:class ^(kvantummanager)$"
"opacity 0.80 0.70, float on, match:class ^(org.pulseaudio.pavucontrol)$"
"opacity 0.80 0.70, float on, match:class ^(blueman-manager)$"
"opacity 0.80 0.70, float on, match:class ^(nm-applet)$"
"opacity 0.80 0.70, float on, match:class ^(nm-connection-editor)$"
"opacity 0.80 0.70, float on, match:class ^(org.kde.polkit-kde-authentication-agent-1)$"
"opacity 0.80 0.70, match:class ^(polkit-gnome-authentication-agent-1)$"
"opacity 0.80 0.70, match:class ^(org.freedesktop.impl.portal.desktop.gtk)$"
"opacity 0.80 0.70, match:class ^(org.freedesktop.impl.portal.desktop.hyprland)$"
"opacity 0.70 0.70, match:class ^([Ss]team)$"
"opacity 0.70 0.70, match:class ^(steamwebhelper)$"
"opacity 0.70 0.70, match:class ^(Spotify)$"
"opacity 0.70 0.70, match:initial_title ^(Spotify Free)$"
"opacity 0.90 0.90, float on, match:class ^(com.github.rafostar.Clapper)$"
"opacity 0.80 0.80, match:class ^(com.github.tchx84.Flatseal)$"
"opacity 0.80 0.80, match:class ^(hu.kramo.Cartridges)$"
"opacity 0.80 0.80, match:class ^(com.obsproject.Studio)$"
"opacity 0.80 0.80, match:class ^(gnome-boxes)$"
"opacity 0.80 0.80, match:class ^(discord)$"
"opacity 0.80 0.80, match:class ^(WebCord)$"
"opacity 0.80 0.80, match:class ^(ArmCord)$"
"opacity 0.80 0.80, float on, match:class ^(app.drey.Warp)$"
"opacity 0.80 0.80, float on, match:class ^(net.davidotek.pupgui2)$"
"opacity 0.80 0.80, float on, match:class ^(yad)$"
"opacity 0.80 0.80, float on, match:class ^(Signal)$"
"opacity 0.80 0.80, float on, match:class ^(io.github.alainm23.planify)$"
"opacity 0.80 0.80, float on, match:class ^(io.gitlab.theevilskeleton.Upscaler)$"
"opacity 0.80 0.80, float on, match:class ^(com.github.unrud.VideoDownloader)$"
"opacity 0.80 0.80, float on, match:class ^(io.gitlab.adhami3310.Impression)$"
"opacity 0.80 0.80, float on, match:class ^(io.missioncenter.MissionCenter)$"
"opacity 0.80 0.80, match:class ^(io.github.flattool.Warehouse)$"
"float on, match:class ^(org.kde.dolphin)$, match:title ^(Progress Dialog Dolphin)$"
"float on, match:class ^(org.kde.dolphin)$, match:title ^(Copying Dolphin)$"
"float on, match:class ^(firefox)$, match:title ^(Picture-in-Picture)$"
"float on, match:class ^(firefox)$, match:title ^(Library)$"
"float on, match:class ^(kitty)$, match:title ^(top)$"
"float on, match:class ^(kitty)$, match:title ^(btop)$"
"float on, match:class ^(kitty)$, match:title ^(htop)$"
"float on, match:class ^(vlc)$"
"float on, match:class ^(eog)$"
"float on, size 400 175, match:class ^(custom-librewolfprofiles)$"
"float on, size 600 600, match:initial_class ^(custom-pomodoro)$"
"float on, size 1500 800, match:initial_class ^(custom-bottom)$"
"border_size 0, match:float 0, match:workspace w[tv1]"
"rounding 0, match:float 0, match:workspace w[tv1]"
"border_size 0, match:float 0, match:workspace f[1]"
"rounding 0, match:float 0, match:workspace f[1]"
];
# add a float for tomato when in kitty
#"plugin:imgborders:noimgborders, tag:noborder"
layerrule = [
"blur on, ignore_alpha 0, match:namespace rofi"
"blur on, ignore_alpha 0, match:namespace notifications"
"blur on, ignore_alpha 0, match:namespace swaync-notification-window"
"blur on, ignore_alpha 0, match:namespace swaync-control-center"
"blur on, match:namespace logout_dialog"
];
};
}
+46 -44
View File
@@ -1,60 +1,62 @@
{ config, pkgs, ... }:
{
config,
pkgs,
...
}: {
programs.kitty = {
enable = true;
#font.name = nerd-fonts._0xproto;
#font.size = "10";
extraConfig = ''
# font nerd-fonts._0xproto # this key dont work and causes errors
font_size 14
bold_font auto
italic_font auto
bold_italic_font auto
window_padding_width 25
foreground #FFFFFF
background #1B1D1C
selection_foreground #1B1D1C
selection_background #FFFFFF
cursor #C3AC76
cursor_text_color #0F1010
# font nerd-fonts._0xproto # this key dont work and causes errors
font_size 14
bold_font auto
italic_font auto
bold_italic_font auto
window_padding_width 25
foreground #FFFFFF
background #1B1D1C
selection_foreground #1B1D1C
selection_background #FFFFFF
cursor #C3AC76
cursor_text_color #0F1010
active_tab_foreground #1B1D1C
active_tab_background #6B5540
inactive_tab_foreground #6B5540
inactive_tab_background #1B1D1C
active_tab_foreground #1B1D1C
active_tab_background #6B5540
inactive_tab_foreground #6B5540
inactive_tab_background #1B1D1C
# black
color0 #29523D
color8 #578F73
# black
color0 #29523D
color8 #578F73
# red
color1 #FFF0CC
color9 #F0DBAA
# red
color1 #FFF0CC
color9 #F0DBAA
# green
color2 #FFEECC
color10 #F0D9AA
# green
color2 #FFEECC
color10 #F0D9AA
# yellow
color3 #FFE5CC
color11 #F0CCAA
# yellow
color3 #FFE5CC
color11 #F0CCAA
# blue
color4 #9AE6C0
color12 #9AE6C0
# blue
color4 #9AE6C0
color12 #9AE6C0
# magenta
color5 #E6CC9A
color13 #E6CC9A
# magenta
color5 #E6CC9A
color13 #E6CC9A
# cyan
color6 #E6BF9A
color14 #E6BF9A
# cyan
color6 #E6BF9A
color14 #E6BF9A
# white
color7 #FFF0CC
color15 #F0DBAA
'';
};
# white
color7 #FFF0CC
color15 #F0DBAA
'';
};
}
+115 -115
View File
@@ -1,6 +1,9 @@
# adapted from https://github.com/contre95/dotfiles/blob/main/dotfiles/nixos/programs/librewolf.nix
{ pkgs, config, ... }:
{
pkgs,
config,
...
}: {
home.sessionVariables = {
MOZ_ENABLE_WAYLAND = 1;
MOZ_USE_XINPUT2 = 1;
@@ -9,112 +12,111 @@
programs.librewolf = {
enable = true;
settings = {
"browser.profiles.enabled" = true;
# disabled until i find something that uses it.
"webgl.disabled" = true;
# settings = lib.mapAttrs' (n: lib.nameValuePair "pref.${n}") {
"app.update.auto" = true; # disable auto update
#"dom.security.https_only_mode" = true; # force https
"extensions.pocket.enabled" = false; # disable pocket
#"browser.quitShortcut.disabled" = true; # disable ctrl+q
"browser.download.panel.shown" = true; # show download panel
"signon.rememberSignons" = false; # disable saving passwords
"identity.fxaccounts.enabled" = false; # disable librewolf accounts
"app.shield.optoutstudies.enabled" = false; # disable shield studies
"browser.shell.checkDefaultBrowser" = false; # don't check if default browser
#"browser.bookmarks.restore_default_bookmarks" = false; # don't restore default bookmarks
# Download handling
#"browser.download.dir" = "/home/meain/down"; # default download dir
"browser.startup.page" = 3; # restore previous session
# UI changes
# "browser.uidensity" = 1; # enable dense UI
#"general.autoScroll" = true; # enable autoscroll
# "browser.compactmode.show" = true; # enable compact mode
# "browser.tabs.firefox-view" = false; # enable librewolf view
#"startup.homepage_welcome_url" =
# "https://metrics.internal.contre.io/d/cUITC74Vksd/podman-revamped?orgId=1&from=2026-02-23T19:29:26.304Z&to=2026-02-23T19:59:26.304Z&timezone=browser&var-Filters=&var-namespace=alloy&var-level=error&var-level=debug&var-level=info&var-level=warn&refresh=5s&kiosk=true"; # disable welcome page
"browser.newtabpage.enabled" = true; # disable new tab page
"full-screen-api.ignore-widgets" = true; # fullscreen within window
"browser.toolbars.bookmarks.visibility" = "always"; # hide bookmarks toolbar
"browser.aboutConfig.showWarning" = false; # disable warning about about:config
"media.videocontrols.picture-in-picture.video-toggle.enabled" = false; # disable picture in picture button
"browser.profiles.enabled" = true;
# disabled until i find something that uses it.
"webgl.disabled" = true;
# settings = lib.mapAttrs' (n: lib.nameValuePair "pref.${n}") {
"app.update.auto" = true; # disable auto update
#"dom.security.https_only_mode" = true; # force https
"extensions.pocket.enabled" = false; # disable pocket
#"browser.quitShortcut.disabled" = true; # disable ctrl+q
"browser.download.panel.shown" = true; # show download panel
"signon.rememberSignons" = false; # disable saving passwords
"identity.fxaccounts.enabled" = false; # disable librewolf accounts
"app.shield.optoutstudies.enabled" = false; # disable shield studies
"browser.shell.checkDefaultBrowser" = false; # don't check if default browser
#"browser.bookmarks.restore_default_bookmarks" = false; # don't restore default bookmarks
# Download handling
#"browser.download.dir" = "/home/meain/down"; # default download dir
"browser.startup.page" = 3; # restore previous session
# UI changes
# "browser.uidensity" = 1; # enable dense UI
#"general.autoScroll" = true; # enable autoscroll
# "browser.compactmode.show" = true; # enable compact mode
# "browser.tabs.firefox-view" = false; # enable librewolf view
#"startup.homepage_welcome_url" =
# "https://metrics.internal.contre.io/d/cUITC74Vksd/podman-revamped?orgId=1&from=2026-02-23T19:29:26.304Z&to=2026-02-23T19:59:26.304Z&timezone=browser&var-Filters=&var-namespace=alloy&var-level=error&var-level=debug&var-level=info&var-level=warn&refresh=5s&kiosk=true"; # disable welcome page
"browser.newtabpage.enabled" = true; # disable new tab page
"full-screen-api.ignore-widgets" = true; # fullscreen within window
"browser.toolbars.bookmarks.visibility" = "always"; # hide bookmarks toolbar
"browser.aboutConfig.showWarning" = false; # disable warning about about:config
"media.videocontrols.picture-in-picture.video-toggle.enabled" = false; # disable picture in picture button
# Privacy
"privacy.resistFingerprinting" = true;
# "privacy.clearOnShutdown.cache" = false;
"privacy.clearOnShutdown.history" = false;
"privacy.clearHistory.cookiesAndStorage" = false;
"privacy.clearHistory.historyFormDataAndDownloads" = false;
"privacy.clearHistory.cache" = false;
"privacy.clearOnShutdown_v2.siteSettings" = false;
"privacy.clearOnShutdown_v2.cookiesAndStorage" = false;
"services.sync.prefs.sync.privacy.clearOnShutdown_v2.history" = false;
"services.sync.prefs.sync.privacy.clearOnShutdown_v2.siteSettings" = false;
"services.sync.prefs.sync.privacy.clearOnShutdown_v2.sessions" = false;
"services.sync.prefs.sync.privacy.clearOnShutdown_v2.cookies" = false;
"services.sync.prefs.sync.privacy.clearOnShutdown.history" = false;
"services.sync.prefs.sync.privacy.clearOnShutdown.siteSettings" = false;
"services.sync.prefs.sync.privacy.clearOnShutdown.sessions" = false;
"services.sync.prefs.sync.privacy.clearOnShutdown.cookies" = false;
"privacy.clearOnShutdown.cookies" = false;
"browser.discovery.enabled" = false; # disable discovery
"browser.search.suggest.enabled" = true; # disable search suggestions
"browser.contentblocking.category" = "standart"; # set tracking protection to standart to not interfer with adnauseam
"dom.private-attribution.submission.enabled" = false; # stop doing dumb stuff mozilla
"browser.protections_panel.infoMessage.seen" = true; # disable tracking protection info
# Privacy
"privacy.resistFingerprinting" = true;
# "privacy.clearOnShutdown.cache" = false;
"privacy.clearOnShutdown.history" = false;
"privacy.clearHistory.cookiesAndStorage" = false;
"privacy.clearHistory.historyFormDataAndDownloads" = false;
"privacy.clearHistory.cache" = false;
"privacy.clearOnShutdown_v2.siteSettings" = false;
"privacy.clearOnShutdown_v2.cookiesAndStorage" = false;
"services.sync.prefs.sync.privacy.clearOnShutdown_v2.history" = false;
"services.sync.prefs.sync.privacy.clearOnShutdown_v2.siteSettings" = false;
"services.sync.prefs.sync.privacy.clearOnShutdown_v2.sessions" = false;
"services.sync.prefs.sync.privacy.clearOnShutdown_v2.cookies" = false;
"services.sync.prefs.sync.privacy.clearOnShutdown.history" = false;
"services.sync.prefs.sync.privacy.clearOnShutdown.siteSettings" = false;
"services.sync.prefs.sync.privacy.clearOnShutdown.sessions" = false;
"services.sync.prefs.sync.privacy.clearOnShutdown.cookies" = false;
"privacy.clearOnShutdown.cookies" = false;
"browser.discovery.enabled" = false; # disable discovery
"browser.search.suggest.enabled" = true; # disable search suggestions
"browser.contentblocking.category" = "standart"; # set tracking protection to standart to not interfer with adnauseam
"dom.private-attribution.submission.enabled" = false; # stop doing dumb stuff mozilla
"browser.protections_panel.infoMessage.seen" = true; # disable tracking protection info
# Theme
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
"svg.context-properties.content.enabled" = true;
"layout.css.color-mix.enabled" = true;
# Theme
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
"svg.context-properties.content.enabled" = true;
"layout.css.color-mix.enabled" = true;
# Disable telemetry
"toolkit.telemetry.enabled" = false;
"toolkit.telemetry.unified" = false;
"browser.ping-centre.telemetry" = false;
"toolkit.telemetry.archive.enabled" = false;
"toolkit.telemetry.bhrPing.enabled" = false;
"toolkit.telemetry.updatePing.enabled" = false;
"browser.translations.automaticallyPopup" = false;
"toolkit.telemetry.hybridContent.enabled" = false;
"toolkit.telemetry.newProfilePing.enabled" = false;
"toolkit.telemetry.reportingpolicy.firstRun" = false;
"toolkit.telemetry.firstShutdownPing.enabled" = false;
"browser.newtabpage.activity-stream.telemetry" = false;
"toolkit.telemetry.shutdownPingSender.enabled" = false;
"browser.newtabpage.activity-stream.feeds.telemetry" = false;
# Disable telemetry
"toolkit.telemetry.enabled" = false;
"toolkit.telemetry.unified" = false;
"browser.ping-centre.telemetry" = false;
"toolkit.telemetry.archive.enabled" = false;
"toolkit.telemetry.bhrPing.enabled" = false;
"toolkit.telemetry.updatePing.enabled" = false;
"browser.translations.automaticallyPopup" = false;
"toolkit.telemetry.hybridContent.enabled" = false;
"toolkit.telemetry.newProfilePing.enabled" = false;
"toolkit.telemetry.reportingpolicy.firstRun" = false;
"toolkit.telemetry.firstShutdownPing.enabled" = false;
"browser.newtabpage.activity-stream.telemetry" = false;
"toolkit.telemetry.shutdownPingSender.enabled" = false;
"browser.newtabpage.activity-stream.feeds.telemetry" = false;
"browser.tabs.loadInBackground" = true; # open new tab in background
"browser.tabs.loadBookmarksInTabs" = true; # open bookmarks in new tab
"browser.tabs.warnOnOpen" = false; # don't warn when opening multiple tabs
"browser.tabs.warnOnQuit" = false; # don't warn when closing multiple tabs
"browser.tabs.warnOnClose" = false; # don't warn when closing multiple tabs
"browser.tabs.loadDivertedInBackground" = false; # open new tab in background
"browser.tabs.warnOnCloseOtherTabs" = false; # don't warn when closing multiple tabs
"browser.tabs.closeWindowWithLastTab" = false; # don't close window when last tab is closed
"browser.tabs.loadInBackground" = true; # open new tab in background
"browser.tabs.loadBookmarksInTabs" = true; # open bookmarks in new tab
"browser.tabs.warnOnOpen" = false; # don't warn when opening multiple tabs
"browser.tabs.warnOnQuit" = false; # don't warn when closing multiple tabs
"browser.tabs.warnOnClose" = false; # don't warn when closing multiple tabs
"browser.tabs.loadDivertedInBackground" = false; # open new tab in background
"browser.tabs.warnOnCloseOtherTabs" = false; # don't warn when closing multiple tabs
"browser.tabs.closeWindowWithLastTab" = false; # don't close window when last tab is closed
# other
"media.autoplay.default" = 0; # enable autoplay on open
"devtools.toolbox.host" = "right"; # move devtools to right
"devtools.theme" = "dark";
# "browser.ssb.enabled" = true; # enable site specific browser
"media.rdd-vpx.enabled" = true; # enable hardware acceleration
"devtools.cache.disabled" = true; # disable caching in devtools
"media.ffmpeg.vaapi.enabled" = true; # enable hardware acceleration
# Fonts
"font.size.fixed.x-western" = 15;
"font.minimum-size.x-western" = 13;
"font.size.variable.x-western" = 15;
"font.size.monospace.x-western" = 15;
"browser.display.use_document_fonts" = 1;
"browser.link.open_newwindow.restriction" = 0;
#
# "browser.fixup.domainsuffixwhitelist.home" = true;
# "browser.fixup.domainwhitelist.internal.contre.io" = true;
"extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
# "keyword.enable" = false; # Disable search when typing unexistent TLD
# other
"media.autoplay.default" = 0; # enable autoplay on open
"devtools.toolbox.host" = "right"; # move devtools to right
"devtools.theme" = "dark";
# "browser.ssb.enabled" = true; # enable site specific browser
"media.rdd-vpx.enabled" = true; # enable hardware acceleration
"devtools.cache.disabled" = true; # disable caching in devtools
"media.ffmpeg.vaapi.enabled" = true; # enable hardware acceleration
# Fonts
"font.size.fixed.x-western" = 15;
"font.minimum-size.x-western" = 13;
"font.size.variable.x-western" = 15;
"font.size.monospace.x-western" = 15;
"browser.display.use_document_fonts" = 1;
"browser.link.open_newwindow.restriction" = 0;
#
# "browser.fixup.domainsuffixwhitelist.home" = true;
# "browser.fixup.domainwhitelist.internal.contre.io" = true;
"extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
# "keyword.enable" = false; # Disable search when typing unexistent TLD
};
policies = {
ExtensionSettings = {
@@ -292,7 +294,7 @@
settings = [
{
name = "Nixos Config";
tags = [ "github" ];
tags = ["github"];
keyword = "github";
url = "https://github.com/Totorile1/nixos";
}
@@ -329,7 +331,7 @@
template = "https://fr.wiktionary.org/w/index.php?search={searchTerms}";
}
];
definedAliases = [ "dict" ];
definedAliases = ["dict"];
};
"quant" = {
urls = [
@@ -343,7 +345,7 @@
];
}
];
definedAliases = [ "q" ];
definedAliases = ["q"];
};
"OpenStreeetMap" = {
urls = [
@@ -357,7 +359,7 @@
];
}
];
definedAliases = [ "map" ];
definedAliases = ["map"];
};
"Home Manager Options" = {
urls = [
@@ -371,7 +373,7 @@
];
}
];
definedAliases = [ "hm" ];
definedAliases = ["hm"];
};
"Nix Packages" = {
urls = [
@@ -389,7 +391,7 @@
];
}
];
definedAliases = [ "np" ];
definedAliases = ["np"];
};
"Nix Wiki" = {
urls = [
@@ -397,7 +399,7 @@
template = "https://wiki.nixos.org/w/index.php?search={searchTerms}";
}
];
definedAliases = [ "nw" ];
definedAliases = ["nw"];
};
"Repology" = {
urls = [
@@ -405,7 +407,7 @@
template = "https://repology.org/projects/?search={searchTerms}";
}
];
definedAliases = [ "rp" ];
definedAliases = ["rp"];
};
};
};
@@ -569,7 +571,7 @@
];
}
];
definedAliases = [ "q" ];
definedAliases = ["q"];
};
"OpenStreeetMap" = {
urls = [
@@ -583,20 +585,18 @@
];
}
];
definedAliases = [ "map" ];
definedAliases = ["map"];
};
"Onche.org" = {
urls = [
{
template = "https://onche.org/forum/1/blabla-general/search?by=topic&q={searchTerms}";
template = "https://onche.org/forum/1/blabla-general/search?by=topic&q={searchTerms}";
}
];
definedAliases = [ "on" ];
definedAliases = ["on"];
};
};
};
};
};
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+5 -3
View File
@@ -1,9 +1,11 @@
{ config, pkgs, ... }:
{
config,
pkgs,
...
}: {
programs.oh-my-posh = {
enable = true;
enableZshIntegration = true;
useTheme = "gruvbox";
};
};
}
+17 -15
View File
@@ -1,21 +1,23 @@
{ config, pkgs, ... }:
{
config,
pkgs,
...
}: {
programs.zsh.oh-my-zsh = {
enable = true;
theme = "jonathan";
plugins = [
"aliases"
"alias-finder"
"colored-man-pages"
"colorize"
"command-not-found"
"dirhistory"
"fzf"
"git"
"rclone"
"safe-paste"
"sudo"
];
};
"aliases"
"alias-finder"
"colored-man-pages"
"colorize"
"command-not-found"
"dirhistory"
"fzf"
"git"
"rclone"
"safe-paste"
"sudo"
];
};
}
+5 -2
View File
@@ -1,6 +1,9 @@
{ config, pkgs, agenix, ... }:
{
config,
pkgs,
agenix,
...
}: {
programs.rclone = {
enable = true;
};
+5 -4
View File
@@ -1,6 +1,8 @@
{ config, pkgs, ... }:
{
config,
pkgs,
...
}: {
programs.ripgrep = {
enable = true;
arguments = [
@@ -11,7 +13,6 @@
];
};
programs.ripgrep-all = {
enable = true;
enable = true;
};
}
+5 -3
View File
@@ -1,8 +1,10 @@
{ config, pkgs, ... }:
{
config,
pkgs,
...
}: {
programs.rofi = {
enable = true;
theme = "gruvbox-dark-hard";
};
};
}
+17 -7
View File
@@ -1,13 +1,23 @@
{ config, pkgs, ... }:
{
config,
pkgs,
...
}: {
programs.ssh = {
enable = true;
#agentKeys = [
# "/home/tomasr/.ssh/id_ed25519"
#];
matchBlocks."*" = {
# equivalent to the default config
forwardAgent = false;
addKeysToAgent = "no";
compression = false;
serverAliveInterval = 0;
serverAliveCountMax = 3;
hashKnownHosts = false;
userKnownHostsFile = "~/.ssh/known_hosts";
controlMaster = "no";
controlPath = "~/.ssh/master-%r@%n:%p";
controlPersist = "no";
};
};
services.ssh-agent.enable = true;
}
+34 -32
View File
@@ -1,38 +1,40 @@
{ config, pkgs, ... }:
{
config,
pkgs,
...
}: {
programs.swaylock = {
enable = true;
settings = {
color="1e1e2e";
bs-hl-color="f5e0dc";
caps-lock-bs-hl-color="f5e0dc";
caps-lock-key-hl-color="a6e3a1";
inside-color="00000000";
inside-clear-color = "00000000";
inside-caps-lock-color="00000000";
inside-ver-color="00000000";
inside-wrong-color="00000000";
key-hl-color="a6e3a1";
layout-bg-color="00000000";
layout-border-color="00000000";
layout-text-color="cdd6f4";
line-color="00000000";
line-clear-color="00000000";
line-caps-lock-color="00000000";
line-ver-color="00000000";
line-wrong-color="00000000";
ring-color="b4befe";
ring-clear-color="f5e0dc";
ring-caps-lock-color="fab387";
ring-ver-color="89b4fa";
ring-wrong-color="eba0ac";
separator-color="00000000";
text-color="cdd6f4";
text-clear-color="f5e0dc";
text-caps-lock-color="fab387";
text-ver-color="89b4fa";
text-wrong-color="eba0ac";
color = "1e1e2e";
bs-hl-color = "f5e0dc";
caps-lock-bs-hl-color = "f5e0dc";
caps-lock-key-hl-color = "a6e3a1";
inside-color = "00000000";
inside-clear-color = "00000000";
inside-caps-lock-color = "00000000";
inside-ver-color = "00000000";
inside-wrong-color = "00000000";
key-hl-color = "a6e3a1";
layout-bg-color = "00000000";
layout-border-color = "00000000";
layout-text-color = "cdd6f4";
line-color = "00000000";
line-clear-color = "00000000";
line-caps-lock-color = "00000000";
line-ver-color = "00000000";
line-wrong-color = "00000000";
ring-color = "b4befe";
ring-clear-color = "f5e0dc";
ring-caps-lock-color = "fab387";
ring-ver-color = "89b4fa";
ring-wrong-color = "eba0ac";
separator-color = "00000000";
text-color = "cdd6f4";
text-clear-color = "f5e0dc";
text-caps-lock-color = "fab387";
text-ver-color = "89b4fa";
text-wrong-color = "eba0ac";
};
};
};
}
+4 -2
View File
@@ -1,6 +1,8 @@
{ config, pkgs, ... }:
{
config,
pkgs,
...
}: {
services.swaync = {
enable = true;
};
File diff suppressed because it is too large Load Diff
+72 -70
View File
@@ -1,5 +1,8 @@
{ config, pkgs, ... }:
let
{
config,
pkgs,
...
}: let
wallpaper = ../../assets/wallpaper1.jpg;
lock = ../../assets/lock.png;
lock-hover = ../../assets/lock-hover.png;
@@ -9,8 +12,7 @@ let
logout-hover = ../../assets/logout-hover.png;
reboot = ../../assets/restart.png;
reboot-hover = ../../assets/restart-hover.png;
in
{
in {
programs.wlogout = {
enable = true;
layout = [
@@ -40,78 +42,78 @@ in
}
];
style = ''
window {
font-family: OxProto Nerd Font;
font-size: 14pt;
color: #000000; /* text */
background-color: rgba(40, 40, 40, 0.76);
}
window {
font-family: OxProto Nerd Font;
font-size: 14pt;
color: #000000; /* text */
background-color: rgba(40, 40, 40, 0.76);
}
button {
background-repeat: no-repeat;
background-position: center;
background-size: 50%;
border-style: solid;
border-radius: 4px;
border-width: 2px;
border-color: #ebdbb2;
background-color: rgba(40, 40, 40, 0.76);
margin: 10px;
transition:
box-shadow 0.3s ease-in-out,
background-color 0.3s ease-in-out;
}
button {
background-repeat: no-repeat;
background-position: center;
background-size: 50%;
border-style: solid;
border-radius: 4px;
border-width: 2px;
border-color: #ebdbb2;
background-color: rgba(40, 40, 40, 0.76);
margin: 10px;
transition:
box-shadow 0.3s ease-in-out,
background-color 0.3s ease-in-out;
}
button:hover {
background-color: rgba(250, 137, 26, 0.3);
color: #282828;
}
button:hover {
background-color: rgba(250, 137, 26, 0.3);
color: #282828;
}
button:focus {
background-color: #ebdbb2;
color: #282828;
}
button:focus {
background-color: #ebdbb2;
color: #282828;
}
#lock {
background-image: image(url("${lock}"));
}
#lock:focus {
background-image: image(url("${lock-hover}"));
}
#lock:hover {
background-image: image(url("${lock-hover}"));
}
#lock {
background-image: image(url("${lock}"));
}
#lock:focus {
background-image: image(url("${lock-hover}"));
}
#lock:hover {
background-image: image(url("${lock-hover}"));
}
#logout {
background-image: image(url("${logout}"));
}
#logout:focus {
background-image: image(url("${logout-hover}"));
}
#logout:hover {
background-image: image(url("${logout-hover}"));
}
#logout {
background-image: image(url("${logout}"));
}
#logout:focus {
background-image: image(url("${logout-hover}"));
}
#logout:hover {
background-image: image(url("${logout-hover}"));
}
#shutdown {
background-image: image(url("${shutdown}"));
}
#shutdown:focus {
background-image: image(url("${shutdown-hover}"));
}
#shutdown:hover {
background-image: image(url("${shutdown-hover}"));
}
#shutdown {
background-image: image(url("${shutdown}"));
}
#shutdown:focus {
background-image: image(url("${shutdown-hover}"));
}
#shutdown:hover {
background-image: image(url("${shutdown-hover}"));
}
#reboot {
background-image: image(url("${reboot}"));
}
#reboot:focus {
background-image: image(url("${reboot-hover}"));
}
#reboot:hover {
background-image: image(url("${reboot-hover}"));
}
'';
};
#reboot {
background-image: image(url("${reboot}"));
}
#reboot:focus {
background-image: image(url("${reboot-hover}"));
}
#reboot:hover {
background-image: image(url("${reboot-hover}"));
}
'';
};
}
+4 -2
View File
@@ -1,6 +1,8 @@
{ config, pkgs, ... }:
{
config,
pkgs,
...
}: {
programs.zoxide = {
enable = true;
enableZshIntegration = true;
+25 -24
View File
@@ -1,33 +1,34 @@
{ config, pkgs, ... }:
{
config,
pkgs,
...
}: {
programs.zsh = {
enable = true;
autosuggestion.enable = true;
initContent = ''
# Safe cat that uses colorize plugin ccat
custom-cat() {
if [[ -t 1 ]]; then
ccat "$@"
else
command cat "$@"
fi
}
# Safe cat that uses colorize plugin ccat
custom-cat() {
if [[ -t 1 ]]; then
ccat "$@"
else
command cat "$@"
fi
}
fastfetch''\n''
;
fastfetch''\n'';
shellAliases = {
".." = "z ..";
grep = "rg";
ll = "ls -alF";
la = "ls -A";
l = "ls -CF";
ls = "ls -hA -s --color";
cat = "custom-cat";
pomodoro = "custom-tomato";
librewolf = "kitty --class \"custom-librewolfprofiles\" --name \"Select LibreWolf profile\" --hold custom-librewolfprofiles";
manix = "custom-manix";
man = "custom-man";
};
".." = "z ..";
grep = "rg";
ll = "ls -alF";
la = "ls -A";
l = "ls -CF";
ls = "ls -hA -s --color";
cat = "custom-cat";
pomodoro = "custom-tomato";
librewolf = "kitty --class \"custom-librewolfprofiles\" --name \"Select LibreWolf profile\" --hold custom-librewolfprofiles";
manix = "custom-manix";
man = "custom-man";
};
};
}
+40 -39
View File
@@ -1,56 +1,57 @@
{ config, pkgs, ... }:
{
config,
pkgs,
...
}: {
environment.systemPackages = with pkgs; [
(pkgs.anki.withAddons [
(pkgs.ankiAddons.recolor.withConfig {
config = {
# we must specify all the colors or it crashes as this overwrite the whole colors set
# we must specify all the colors or it crashes as this overwrite the whole colors set
colors = {
# ===== Foregrounds =====
FG = [ "Foreground" "#ebdbb2" "#ebdbb2" "" ];
FG_SUBTLE = [ "Subtle FG" "#d5c4a1" "#d5c4a1" "" ];
FG_FAINT = [ "Faint FG" "#a89984" "#a89984" "" ];
FG_DISABLED = [ "Disabled FG" "#928374" "#928374" "" ];
# ===== Foregrounds =====
FG = ["Foreground" "#ebdbb2" "#ebdbb2" ""];
FG_SUBTLE = ["Subtle FG" "#d5c4a1" "#d5c4a1" ""];
FG_FAINT = ["Faint FG" "#a89984" "#a89984" ""];
FG_DISABLED = ["Disabled FG" "#928374" "#928374" ""];
# ===== Main Background Layers =====
BG = [ "Background" "#1d2021" "#1d2021" "" ];
MAIN_BG = [ "Main Background" "#1d2021" "#1d2021" "" ];
VIEW_BG = [ "View Background" "#282828" "#282828" "" ];
EDITOR_BG = [ "Editor Background" "#282828" "#282828" "" ];
CANVAS = [ "Canvas" "#282828" "#282828" "" ];
CANVAS_ELEVATED = [ "Elevated Canvas" "#32302f" "#32302f" "" ];
# ===== Main Background Layers =====
BG = ["Background" "#1d2021" "#1d2021" ""];
MAIN_BG = ["Main Background" "#1d2021" "#1d2021" ""];
VIEW_BG = ["View Background" "#282828" "#282828" ""];
EDITOR_BG = ["Editor Background" "#282828" "#282828" ""];
CANVAS = ["Canvas" "#282828" "#282828" ""];
CANVAS_ELEVATED = ["Elevated Canvas" "#32302f" "#32302f" ""];
# ===== Tables & Lists =====
TABLE_BG = [ "Table Background" "#282828" "#282828" "" ];
TABLE_ALT_BG = [ "Table Alt Background" "#32302f" "#32302f" "" ];
HEADER_BG = [ "Header Background" "#3c3836" "#3c3836" "" ];
SELECTED_BG = [ "Selected Background" "#504945" "#504945" "" ];
# ===== Tables & Lists =====
TABLE_BG = ["Table Background" "#282828" "#282828" ""];
TABLE_ALT_BG = ["Table Alt Background" "#32302f" "#32302f" ""];
HEADER_BG = ["Header Background" "#3c3836" "#3c3836" ""];
SELECTED_BG = ["Selected Background" "#504945" "#504945" ""];
# ===== Borders =====
BORDER = [ "Border" "#504945" "#504945" "" ];
FAINT_BORDER = [ "Faint Border" "#3c3836" "#3c3836" "" ];
# ===== Borders =====
BORDER = ["Border" "#504945" "#504945" ""];
FAINT_BORDER = ["Faint Border" "#3c3836" "#3c3836" ""];
# ===== Buttons =====
BUTTON_GRADIENT_START = [ "Button Start" "#3c3836" "#3c3836" "" ];
BUTTON_GRADIENT_END = [ "Button End" "#3c3836" "#3c3836" "" ];
BUTTON_HOVER = [ "Button Hover" "#665c54" "#665c54" "" ];
# ===== Buttons =====
BUTTON_GRADIENT_START = ["Button Start" "#3c3836" "#3c3836" ""];
BUTTON_GRADIENT_END = ["Button End" "#3c3836" "#3c3836" ""];
BUTTON_HOVER = ["Button Hover" "#665c54" "#665c54" ""];
# ===== Accent & Links =====
ACCENT = [ "Accent" "#458588" "#458588" "" ];
LINK = [ "Link" "#83a598" "#83a598" "" ];
LINK_HOVER = [ "Link Hover" "#8ec07c" "#8ec07c" "" ];
# ===== Accent & Links =====
ACCENT = ["Accent" "#458588" "#458588" ""];
LINK = ["Link" "#83a598" "#83a598" ""];
LINK_HOVER = ["Link Hover" "#8ec07c" "#8ec07c" ""];
# ===== Status =====
WARNING = [ "Warning" "#fe8019" "#fe8019" "" ];
ERROR = [ "Error" "#fb4934" "#fb4934" "" ];
SUCCESS = [ "Success" "#8ec07c" "#8ec07c" "" ];
# ===== Status =====
WARNING = ["Warning" "#fe8019" "#fe8019" ""];
ERROR = ["Error" "#fb4934" "#fb4934" ""];
SUCCESS = ["Success" "#8ec07c" "#8ec07c" ""];
};
};
# version = { major = 3; minor = 1; };
# let nixpkgs handle the version
};
# version = { major = 3; minor = 1; };
# let nixpkgs handle the version
})
])
];
}
+30 -35
View File
@@ -1,47 +1,42 @@
# https://discourse.nixos.org/t/what-is-the-best-option-for-power-management/63406/2
{
...
}:
{...}:
# we just activate tlp unconditonally
#let
# cfg = config.custom;
#hasBattery =
# lib.any (x: lib.strings.hasPrefix "BAT" x)
# (builtins.attrNames (builtins.readDir "/sys/class/power_supply"));
#in
{
# options.custom = {
# battery.enable = lib.mkOption {
# default = hasBattery;
# description = "Enable better battery support";
# type = lib.types.bool;
# };
# };
# options.custom = {
# battery.enable = lib.mkOption {
# default = hasBattery;
# description = "Enable better battery support";
# type = lib.types.bool;
# };
# };
# config = lib.mkIf cfg.battery.enable {
powerManagement.powertop.enable = true; # enable powertop auto tuning on startup.
services.system76-scheduler.settings.cfsProfiles.enable = true; # Better scheduling for CPU cycles - thanks System76!!!
services.thermald.enable = true; # Enable thermald, the temperature management daemon. (only necessary if on Intel CPUs)
services.power-profiles-daemon.enable = false; # Disable GNOMEs power management
services.tlp = {
enable = true; # Enable TLP (better than gnomes internal power manager)
settings = {
CPU_BOOST_ON_AC = 1;
CPU_BOOST_ON_BAT = 1;
CPU_HWP_DYN_BOOST_ON_AC = 1;
CPU_HWP_DYN_BOOST_ON_BAT = 1;
CPU_SCALING_GOVERNOR_ON_AC = "performance";
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
CPU_ENERGY_PERF_POLICY_ON_BAT = "balance_power";
PLATFORM_PROFILE_ON_AC = "performance";
PLATFORM_PROFILE_ON_BAT = "balanced";
START_CHARGE_THRESH_BAT1 = 75;
STOP_CHARGE_THRESH_BAT1= 85;
};
# config = lib.mkIf cfg.battery.enable {
powerManagement.powertop.enable = true; # enable powertop auto tuning on startup.
services.system76-scheduler.settings.cfsProfiles.enable = true; # Better scheduling for CPU cycles - thanks System76!!!
services.thermald.enable = true; # Enable thermald, the temperature management daemon. (only necessary if on Intel CPUs)
services.power-profiles-daemon.enable = false; # Disable GNOMEs power management
services.tlp = {
enable = true; # Enable TLP (better than gnomes internal power manager)
settings = {
CPU_BOOST_ON_AC = 1;
CPU_BOOST_ON_BAT = 1;
CPU_HWP_DYN_BOOST_ON_AC = 1;
CPU_HWP_DYN_BOOST_ON_BAT = 1;
CPU_SCALING_GOVERNOR_ON_AC = "performance";
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
CPU_ENERGY_PERF_POLICY_ON_BAT = "balance_power";
PLATFORM_PROFILE_ON_AC = "performance";
PLATFORM_PROFILE_ON_BAT = "balanced";
START_CHARGE_THRESH_BAT1 = 75;
STOP_CHARGE_THRESH_BAT1 = 85;
};
# };
};
# };
}
+3 -5
View File
@@ -1,6 +1,4 @@
{ ...}:
{
{...}: {
services.displayManager.ly = {
enable = true;
settings = {
@@ -299,6 +297,6 @@
# You can specify multiple directories,
# e.g. $PREFIX_DIRECTORY/share/xsessions:$PREFIX_DIRECTORY/local/share/xsessions
xsessions = "$PREFIX_DIRECTORY/share/xsessions";
};
};
};
};
}
+18 -19
View File
@@ -1,27 +1,26 @@
{... }:
{
{...}: {
# a minimal ly config as the big config (ly.nix) didnt worked
services.displayManager.ly = {
enable = true;
settings = {
# Core animation
animation = "colormix"; # none or doom or matrix or gameoflife or a dur file
# Ly supports 24-bit true color with styling, which means each color is a 32-bit value.
# The format is 0xSSRRGGBB, where SS is the styling, RR is red, GG is green, and BB is blue.
# Here are the possible styling options:
# TB_BOLD 0x01000000
# TB_UNDERLINE 0x02000000
# TB_REVERSE 0x04000000
# TB_ITALIC 0x08000000
# TB_BLINK 0x10000000
# TB_HI_BLACK 0x20000000
# TB_BRIGHT 0x40000000
# TB_DIM 0x80000000
# Programmatically, you'd apply them using the bitwise OR operator (|), but because Ly's
# configuration doesn't support using it, you have to manually compute the color value.
# Note that, if you want to use the default color value of the terminal, you can use the
# special value 0x00000000. This means that, if you want to use black, you *must* use
# the styling option TB_HI_BLACK (the RGB values are ignored when using this option).
# Ly supports 24-bit true color with styling, which means each color is a 32-bit value.
# The format is 0xSSRRGGBB, where SS is the styling, RR is red, GG is green, and BB is blue.
# Here are the possible styling options:
# TB_BOLD 0x01000000
# TB_UNDERLINE 0x02000000
# TB_REVERSE 0x04000000
# TB_ITALIC 0x08000000
# TB_BLINK 0x10000000
# TB_HI_BLACK 0x20000000
# TB_BRIGHT 0x40000000
# TB_DIM 0x80000000
# Programmatically, you'd apply them using the bitwise OR operator (|), but because Ly's
# configuration doesn't support using it, you have to manually compute the color value.
# Note that, if you want to use the default color value of the terminal, you can use the
# special value 0x00000000. This means that, if you want to use black, you *must* use
# the styling option TB_HI_BLACK (the RGB values are ignored when using this option).
# Basic TUI settings
clear_password = true;
default_input = "password";
@@ -75,7 +74,7 @@
# top bar
session_log = null;
initial_info_text = null; #
initial_info_text = null; #
# Custom sessions
#custom_sessions = "$CONFIG_DIRECTORY/ly/custom-sessions";
#waylandsessions = "$PREFIX_DIRECTORY/share/wayland-sessions";
+126 -124
View File
@@ -1,136 +1,138 @@
{ config, pkgs, ... }:
{
# udev are setup for controlling the framework 16 laptop's keyboard
services.udev.extraRules = ''
## https://github.com/qmk/qmk_firmware/blob/master/util/udev/50-qmk.extraRules
## Atmel DFU
#### ATmega16U2
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2fef", TAG+="uaccess"
#### ATmega32U2
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff0", TAG+="uaccess"
#### ATmega16U4
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff3", TAG+="uaccess"
#### ATmega32U4
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff4", TAG+="uaccess"
#### AT90USB64
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff9", TAG+="uaccess"
#### AT90USB162
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffa", TAG+="uaccess"
#### AT90USB128
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffb", TAG+="uaccess"
#
## Input Club
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="1c11", ATTRS{idProduct}=="b007", TAG+="uaccess"
#
## STM32duino
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0003", TAG+="uaccess"
## STM32 DFU
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", TAG+="uaccess"
#
## BootloadHID
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", TAG+="uaccess"
#
## USBAspLoader
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", TAG+="uaccess"
#
## USBtinyISP
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="1782", ATTRS{idProduct}=="0c9f", TAG+="uaccess"
#
## ModemManager should ignore the following devices
## Atmel SAM-BA (Massdrop)
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="6124", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
#
## Caterina (Pro Micro)
### pid.codes shared PID
#### Keyboardio Atreus 2 Bootloader
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="2302", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
### Spark Fun Electronics
#### Pro Micro 3V3/8MHz
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9203", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
#### Pro Micro 5V/16MHz
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9205", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
#### LilyPad 3V3/8MHz (and some Pro Micro clones)
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9207", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
### Pololu Electronics
#### A-Star 32U4
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="1ffb", ATTRS{idProduct}=="0101", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
### Arduino SA
#### Leonardo
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0036", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
#### Micro
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0037", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
### Adafruit Industries LLC
#### Feather 32U4
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000c", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
#### ItsyBitsy 32U4 3V3/8MHz
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000d", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
#### ItsyBitsy 32U4 5V/16MHz
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000e", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
### dog hunter AG
#### Leonardo
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="0036", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
#### Micro
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="0037", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
#
## hid_listen
#KERNEL=="hidraw*", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl"
#
## hid bootloaders
### QMK HID
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2067", TAG+="uaccess"
### PJRC's HalfKay
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="0478", TAG+="uaccess"
#
## APM32 DFU
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="314b", ATTRS{idProduct}=="0106", TAG+="uaccess"
#
## GD32V DFU
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="28e9", ATTRS{idProduct}=="0189", TAG+="uaccess"
#
## WB32 DFU
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="342d", ATTRS{idProduct}=="dfa0", TAG+="uaccess"
#
## AT32 DFU
# SUBSYSTEMS=="usb", ATTRS{idVendor}=="2e3c", ATTRS{idProduct}=="df11", TAG+="uaccess"
config,
pkgs,
...
}: {
# udev are setup for controlling the framework 16 laptop's keyboard
services.udev.extraRules = ''
## https://github.com/qmk/qmk_firmware/blob/master/util/udev/50-qmk.extraRules
## Atmel DFU
#### ATmega16U2
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2fef", TAG+="uaccess"
#### ATmega32U2
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff0", TAG+="uaccess"
#### ATmega16U4
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff3", TAG+="uaccess"
#### ATmega32U4
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff4", TAG+="uaccess"
#### AT90USB64
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff9", TAG+="uaccess"
#### AT90USB162
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffa", TAG+="uaccess"
#### AT90USB128
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffb", TAG+="uaccess"
#
## Input Club
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="1c11", ATTRS{idProduct}=="b007", TAG+="uaccess"
#
## STM32duino
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0003", TAG+="uaccess"
## STM32 DFU
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", TAG+="uaccess"
#
## BootloadHID
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", TAG+="uaccess"
#
## USBAspLoader
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", TAG+="uaccess"
#
## USBtinyISP
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="1782", ATTRS{idProduct}=="0c9f", TAG+="uaccess"
#
## ModemManager should ignore the following devices
## Atmel SAM-BA (Massdrop)
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="6124", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
#
## Caterina (Pro Micro)
### pid.codes shared PID
#### Keyboardio Atreus 2 Bootloader
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="2302", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
### Spark Fun Electronics
#### Pro Micro 3V3/8MHz
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9203", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
#### Pro Micro 5V/16MHz
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9205", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
#### LilyPad 3V3/8MHz (and some Pro Micro clones)
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9207", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
### Pololu Electronics
#### A-Star 32U4
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="1ffb", ATTRS{idProduct}=="0101", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
### Arduino SA
#### Leonardo
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0036", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
#### Micro
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0037", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
### Adafruit Industries LLC
#### Feather 32U4
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000c", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
#### ItsyBitsy 32U4 3V3/8MHz
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000d", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
#### ItsyBitsy 32U4 5V/16MHz
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000e", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
### dog hunter AG
#### Leonardo
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="0036", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
#### Micro
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="0037", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
#
## hid_listen
#KERNEL=="hidraw*", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl"
#
## hid bootloaders
### QMK HID
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2067", TAG+="uaccess"
### PJRC's HalfKay
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="0478", TAG+="uaccess"
#
## APM32 DFU
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="314b", ATTRS{idProduct}=="0106", TAG+="uaccess"
#
## GD32V DFU
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="28e9", ATTRS{idProduct}=="0189", TAG+="uaccess"
#
## WB32 DFU
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="342d", ATTRS{idProduct}=="dfa0", TAG+="uaccess"
#
## AT32 DFU
# SUBSYSTEMS=="usb", ATTRS{idVendor}=="2e3c", ATTRS{idProduct}=="df11", TAG+="uaccess"
# and # https://community.frame.work/t/guide-updated-after-firmware-updates-udev-rules-for-https-keyboard-frame-work/78708
# and # https://community.frame.work/t/guide-updated-after-firmware-updates-udev-rules-for-https-keyboard-frame-work/78708
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0010", TAG+="uaccess"
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0012", TAG+="uaccess"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0013", TAG+="uaccess"
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0014", TAG+="uaccess"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0018", TAG+="uaccess"
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0019", TAG+="uaccess"
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0010", TAG+="uaccess"
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0012", TAG+="uaccess"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0013", TAG+="uaccess"
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0014", TAG+="uaccess"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0018", TAG+="uaccess"
#SUBSYSTEMS=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0019", TAG+="uaccess"
# USB [VendorID]:[ProductID] “[Manufacturer][Product name]”
# 32ac:0012 “Framework Laptop 16 Keyboard Module - ANSI”
# 32ac:0013 “Framework Laptop 16 RGB Macropad”
# 32ac:0014 “Framework Laptop 16 Numpad Module”
# 32ac:0018 “Framework Laptop 16 Keyboard Module - ISO”
# 32ac:0019 “Framework Laptop 16 Keyboard Module - JIS”
# USB [VendorID]:[ProductID] “[Manufacturer][Product name]”
# 32ac:0012 “Framework Laptop 16 Keyboard Module - ANSI”
# 32ac:0013 “Framework Laptop 16 RGB Macropad”
# 32ac:0014 “Framework Laptop 16 Numpad Module”
# 32ac:0018 “Framework Laptop 16 Keyboard Module - ISO”
# 32ac:0019 “Framework Laptop 16 Keyboard Module - JIS”
##https://github.com/ublue-os/config/blob/main/files/etc/udev/rules.d/50-framework16.rules
## Audio Expansion Card
#ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="32ac", ATTR{idProduct}=="0010", ATTR{power/autosuspend}="10", ATTR{power/control}="auto", GOTO="rules_end"
#
## Framework Laptop 16 Keyboard Module - ANSI
#ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="32ac", ATTR{idProduct}=="0012", ATTR{power/autosuspend}="-1", ATTR{power/control}="on", ATTR{power/wakeup}="disabled", GOTO="rules_end"
#
## Framework Laptop 16 RGB Macropad
#
## Framework Laptop 16 Numpad Module
#ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="32ac", ATTR{idProduct}=="0014", ATTR{power/autosuspend}="-1", ATTR{power/control}="on", ATTR{power/wakeup}="disabled", GOTO="rules_end"
#
## Framework Laptop 16 Keyboard Module
#ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="32ac", ATTR{idProduct}=="0018", ATTR{power/autosuspend}="-1", ATTR{power/control}="on", ATTR{power/wakeup}="disabled", GOTO="rules_end"
#
#LABEL="rules_end"
##https://github.com/ublue-os/config/blob/main/files/etc/udev/rules.d/50-framework16.rules
## Audio Expansion Card
#ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="32ac", ATTR{idProduct}=="0010", ATTR{power/autosuspend}="10", ATTR{power/control}="auto", GOTO="rules_end"
#
## Framework Laptop 16 Keyboard Module - ANSI
#ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="32ac", ATTR{idProduct}=="0012", ATTR{power/autosuspend}="-1", ATTR{power/control}="on", ATTR{power/wakeup}="disabled", GOTO="rules_end"
#
## Framework Laptop 16 RGB Macropad
#
## Framework Laptop 16 Numpad Module
#ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="32ac", ATTR{idProduct}=="0014", ATTR{power/autosuspend}="-1", ATTR{power/control}="on", ATTR{power/wakeup}="disabled", GOTO="rules_end"
#
## Framework Laptop 16 Keyboard Module
#ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="32ac", ATTR{idProduct}=="0018", ATTR{power/autosuspend}="-1", ATTR{power/control}="on", ATTR{power/wakeup}="disabled", GOTO="rules_end"
#
#LABEL="rules_end"
'';
'';
}
+12 -10
View File
@@ -1,14 +1,16 @@
{ config, pkgs, ... }:
{
# udev with only the necessary rules. See udev.nix to get all the rules
services.udev.extraRules = ''
# adapted from here https://wiki.nixos.org/wiki/Keychron_M6
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="32ac", MODE="0660", GROUP="users", TAG+="uaccess"
config,
pkgs,
...
}: {
# udev with only the necessary rules. See udev.nix to get all the rules
services.udev.extraRules = ''
# adapted from here https://wiki.nixos.org/wiki/Keychron_M6
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="32ac", MODE="0660", GROUP="users", TAG+="uaccess"
# taken from here
SUBSYSTEMS=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0013", TAG+="uaccess"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0018", TAG+="uaccess"
'';
# taken from here
SUBSYSTEMS=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0013", TAG+="uaccess"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0018", TAG+="uaccess"
'';
}
@@ -1,14 +1,14 @@
{ writeShellApplication
, libnotify
, systemd
{
writeShellApplication,
libnotify,
systemd,
}:
writeShellApplication {
name = "custom-olddeprecatedbatterynotify";
runtimeInputs = [
libnotify # provides notify-send
systemd # provides systemctl
libnotify # provides notify-send
systemd # provides systemctl
];
text = ''
+58 -54
View File
@@ -1,69 +1,73 @@
# taken and adapted https://github.com/miniMinn24/Battery_Notify with MIT License
{ writeShellApplication, mplayer, brightnessctl, ... }:
let
{
writeShellApplication,
mplayer,
brightnessctl,
...
}: let
NotifySound = ../../assets/battery_notify.mp3;
in
writeShellApplication {
name = "custom-batterynotify";
writeShellApplication {
name = "custom-batterynotify";
runtimeInputs = [
mplayer
brightnessctl
];
text = ''
];
text = ''
# Delay for startup
sleep 5
# Delay for startup
sleep 5
# Change your sound path here
# Change your sound path here
playsound() {
mplayer ${NotifySound}
}
playsound() {
mplayer ${NotifySound}
}
adjustBrightness() {
local adjustment="$1"
brightnessctl set "$adjustment"
}
adjustBrightness() {
local adjustment="$1"
brightnessctl set "$adjustment"
}
sendNotification() {
local title="$1"
local message="$2"
notify-send -h string:x-canonical-private-synchronous:sys-notify -e -u low "$title" "$message"
}
sendNotification() {
local title="$1"
local message="$2"
notify-send -h string:x-canonical-private-synchronous:sys-notify -e -u low "$title" "$message"
}
# Runs full time in background
x=0
while true; do
Battery_Status="$(cat /sys/class/power_supply/BAT*/status)"
Battery_Capacity=$(cat /sys/class/power_supply/BAT*/capacity)
# Runs full time in background
x=0
while true; do
Battery_Status="$(cat /sys/class/power_supply/BAT*/status)"
Battery_Capacity=$(cat /sys/class/power_supply/BAT*/capacity)
case "$Battery_Status" in
"Discharging")
if [ $x -eq 1 ]; then
sendNotification "Discharging" "Remains: <b>''${Battery_Capacity}%</b>"
adjustBrightness "15%-"
playsound
x=0
fi
;;
"Charging")
if [ $x -eq 0 ]; then
sendNotification "Charging" "Current: <b>''${Battery_Capacity}%</b>"
adjustBrightness "15%+"
playsound
x=1
fi
;;
"Full")
if [ $x -eq 0 ]; then
sendNotification "Fully Charged" "Noice: <b>''${Battery_Capacity}%</b>"
playsound
x=1
fi
;;
esac
case "$Battery_Status" in
"Discharging")
if [ $x -eq 1 ]; then
sendNotification "Discharging" "Remains: <b>''${Battery_Capacity}%</b>"
adjustBrightness "15%-"
playsound
x=0
fi
;;
"Charging")
if [ $x -eq 0 ]; then
sendNotification "Charging" "Current: <b>''${Battery_Capacity}%</b>"
adjustBrightness "15%+"
playsound
x=1
fi
;;
"Full")
if [ $x -eq 0 ]; then
sendNotification "Fully Charged" "Noice: <b>''${Battery_Capacity}%</b>"
playsound
x=1
fi
;;
esac
sleep 1
done
sleep 1
done
'';
}
}
+42 -38
View File
@@ -1,53 +1,57 @@
# taken and adapted https://github.com/miniMinn24/Battery_Notify with MIT License
{ writeShellApplication, mplayer, brightnessctl, ... }:
let
{
writeShellApplication,
mplayer,
brightnessctl,
...
}: let
NotifySound = ../../assets/battery_notify.mp3;
in
writeShellApplication {
name = "custom-batterywarning";
writeShellApplication {
name = "custom-batterywarning";
runtimeInputs = [
mplayer
brightnessctl
];
text = ''
];
text = ''
# Delay for startup
sleep 5
# Delay for startup
sleep 5
# Change your sound path here
# Change your sound path here
playsound() {
mplayer ${NotifySound}
}
playsound() {
mplayer ${NotifySound}
}
sendNotification() {
local message="$1"
notify-send -h string:x-canonical-private-synchronous:sys-notify -e -u critical "Battery Low!" "$message"
}
sendNotification() {
local message="$1"
notify-send -h string:x-canonical-private-synchronous:sys-notify -e -u critical "Battery Low!" "$message"
}
notify_count=0
notify_count=0
while true; do
Battery_Status="$(cat /sys/class/power_supply/BAT*/status)"
Battery_Capacity=$(cat /sys/class/power_supply/BAT*/capacity)
while true; do
Battery_Status="$(cat /sys/class/power_supply/BAT*/status)"
Battery_Capacity=$(cat /sys/class/power_supply/BAT*/capacity)
if [ "$Battery_Status" == "Discharging" ] && [ "$Battery_Capacity" -le 14 ]; then
if [ "$notify_count" -eq 0 ]; then
sendNotification "Power running out: <b>''${Battery_Capacity}%</b>"
playsound
notify_count=$((notify_count + 1))
sleep 180
if [ "$Battery_Status" == "Discharging" ] && [ "$Battery_Capacity" -le 14 ]; then
if [ "$notify_count" -eq 0 ]; then
sendNotification "Power running out: <b>''${Battery_Capacity}%</b>"
playsound
notify_count=$((notify_count + 1))
sleep 180
elif [ "$notify_count" -eq 1 ]; then
sendNotification "<b>Save your works</b> before immediate shutdown."
playsound
notify_count=$((notify_count - 1))
sleep 180
fi
else
notify_count=0
sleep 120
fi
done
elif [ "$notify_count" -eq 1 ]; then
sendNotification "<b>Save your works</b> before immediate shutdown."
playsound
notify_count=$((notify_count - 1))
sleep 180
fi
else
notify_count=0
sleep 120
fi
done
'';
}
}
+14 -10
View File
@@ -1,12 +1,16 @@
{ writeShellApplication, kitty, bottom,... }:
{
writeShellApplication,
kitty,
bottom,
...
}:
writeShellApplication {
name = "custom-bottom";
runtimeInputs = [
kitty
bottom
];
text = ''
kitty --class "custom-bottom" -o font_size=10 --name "custom-bottom" -e btm --theme gruvbox --disable-click --disable_advanced_kill --enable_cache_memory -g -R -T
'';
name = "custom-bottom";
runtimeInputs = [
kitty
bottom
];
text = ''
kitty --class "custom-bottom" -o font_size=10 --name "custom-bottom" -e btm --theme gruvbox --disable-click --disable_advanced_kill --enable_cache_memory -g -R -T
'';
}
+63 -60
View File
@@ -1,79 +1,82 @@
# useless
# used to come from my old dotfiles which were copied from fedora-hyprdots
# just use hyprpicker | tee >(wl-copy) | cliphist store
# because hyprpicker and cliphist are inside my configuration.nix
# no need to verify their existence
{ writeShellApplication, hyprpicker, libnotify, toybox, wl-clipboard, ... }:
{
writeShellApplication,
hyprpicker,
libnotify,
toybox,
wl-clipboard,
...
}:
writeShellApplication {
name = "custom-colorpicker-useless";
runtimeInputs = [
hyprpicker
libnotify
toybox
wl-clipboard
];
text = ''
check() {
command -v "$1" 1>/dev/null
}
name = "custom-colorpicker-useless";
runtimeInputs = [
hyprpicker
libnotify
toybox
wl-clipboard
];
text = ''
check() {
command -v "$1" 1>/dev/null
}
notify() {
check notify-send && {
notify-send -a "Color Picker" "$@"
return
}
echo "$@"
}
notify() {
check notify-send && {
notify-send -a "Color Picker" "$@"
return
}
echo "$@"
}
loc="$HOME/.cache/colorpicker"
[ -d "$loc" ] || mkdir -p "$loc"
[ -f "$loc/colors" ] || touch "$loc/colors"
loc="$HOME/.cache/colorpicker"
[ -d "$loc" ] || mkdir -p "$loc"
[ -f "$loc/colors" ] || touch "$loc/colors"
limit=10
limit=10
[[ $# -eq 1 && $1 = "-l" ]] && {
cat "$loc/colors"
exit
}
[[ $# -eq 1 && $1 = "-l" ]] && {
cat "$loc/colors"
exit
}
[[ $# -eq 1 && $1 = "-j" ]] && {
text="$(head -n 1 "$loc/colors")"
[[ $# -eq 1 && $1 = "-j" ]] && {
text="$(head -n 1 "$loc/colors")"
mapfile -t allcolors < <(tail -n +2 "$loc/colors")
# allcolors=($(tail -n +2 "$loc/colors"))
tooltip="<b> COLORS</b>\n\n"
mapfile -t allcolors < <(tail -n +2 "$loc/colors")
# allcolors=($(tail -n +2 "$loc/colors"))
tooltip="<b> COLORS</b>\n\n"
tooltip+="-> <b>$text</b> <span color='$text'>󰸌</span> \n"
for i in "''${allcolors[@]}"; do
tooltip+=" <b>$i</b> <span color='$i'>󰸌</span> \n"
done
tooltip+="-> <b>$text</b> <span color='$text'>󰸌</span> \n"
for i in "''${allcolors[@]}"; do
tooltip+=" <b>$i</b> <span color='$i'>󰸌</span> \n"
done
cat <<EOF
{ "text":"<span color='$text'>󰸌</span>", "tooltip":"$tooltip"}
EOF
cat <<EOF
{ "text":"<span color='$text'>󰸌</span>", "tooltip":"$tooltip"}
EOF
exit
}
exit
}
check hyprpicker || {
notify "hyprpicker is not installed"
exit
}
killall -q hyprpicker
color=$(hyprpicker)
check hyprpicker || {
notify "hyprpicker is not installed"
exit
}
killall -q hyprpicker
color=$(hyprpicker)
check wl-copy && {
echo "$color" | sed -z 's/\n//g' | wl-copy
}
check wl-copy && {
echo "$color" | sed -z 's/\n//g' | wl-copy
}
prevColors=$(head -n $((limit - 1)) "$loc/colors")
echo "$color" >"$loc/colors"
echo "$prevColors" >>"$loc/colors"
sed -i '/^$/d' "$loc/colors"
pkill -RTMIN+1 waybar
'';
prevColors=$(head -n $((limit - 1)) "$loc/colors")
echo "$color" >"$loc/colors"
echo "$prevColors" >>"$loc/colors"
sed -i '/^$/d' "$loc/colors"
pkill -RTMIN+1 waybar
'';
}
+80 -77
View File
@@ -1,80 +1,83 @@
{ writeShellApplication, cowsay, ... }:
{
writeShellApplication,
cowsay,
...
}:
writeShellApplication {
name = "custom-cowsay";
runtimeInputs = [ cowsay ];
text = ''
name = "custom-cowsay";
runtimeInputs = [cowsay];
text = ''
cows=("actually" "alpaca" "bud-frogs" "daemon" "elephant-in-snake" "moofasa" "skeleton" "three-eyes" "supermilker" "tux" "vader" "www")
declare -a sentences=(
"Sharing knowledge is the most fundamental act of friendship. Because it is a way you can give something without loosing something. -Richard Stallman"
"Free software' is a matter of liberty, not price. To understand the concept, you should think of 'free' as in 'free speech,' not as in 'free beer'. -Richard Stallman"
"Programming is not a science. Programming is a craft. -Richard Stallman"
"I did write some code in Java once, but that was the island in Indonesia. -Richard Stallman"
"Facebook is not your friend, it is a surveillance engine. -Richard Stallman"
"People said I should accept the world. Bullshit! I don't accept the world. -Richard Stallman"
"You can use any editor you want, but remember that vi vi vi is the text editor of the beast. -Richard Stallman"
"The idea of copyright did not exist in ancient times, when authors frequently copied other authors at length in works of non-fiction. This practice was useful, and is the only way many authors' works have survived even in part. -Richard Stallman"
"Idiots can be defeated but they never admit it. -Richard Stallman"
"Open source is a development methodology; free software is a social movement. -Richard Stallman"
"People sometimes ask me if it is a sin in the Church of Emacs to use vi. Using a free version of vi is not a sin; it is a penance. So happy hacking. -Richard Stallman"
"A computer is like air conditioning - it becomes useless when you open Windows -Linus Torvald"
"Intelligence is the ability to avoid doing work, yet getting the work done. -Linus Torvald"
"Software is like sex: It's better when it's free. -Linus Torvald"
"All operating systems sucks, but Linux just sucks less -Linus Torvald"
"I like offending people, because I think people who get offended should be offended. -Linus Torval"
"Talk is cheap. Show me the code. -Linus Torval"
"Most of the good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program. -Linus Torvald"
"Bad programmers worry about the code. Good programmers worry about data structures and their relationships. -Linus Torvald"
"If Microsoft ever does applications for Linux it means I've won. -Linus Torvald"
"Avoiding complexity reduces bugs. -Linus Torvald"
"Backups are for wimps. Real men upload their data to an FTP site and have everyone else mirror it. -Linus Torvald"
"Nobody actually creates perfect code the first time around, except me. But there's only one of me. -Linus Torvald"
"Microsoft isn't evil, they just make really crappy operating systems. -Linus Torvald"
"When you say 'I wrote a program that crashed Windows,' people just stare at you blankly and say 'Hey, I got those with the system, for free.' -Linus Torval"
"C++ is a horrible language. It's made more horrible by the fact that a lot of substandard programmers use it, to the point where it's much much easier to generate total and utter crap with it. -Linus Torvald"
"If you think your users are idiots, only idiots will use it. -Linus Torvald"
"My name is Linus, and I am your God. -Linus Torvald"
"An infinite number of monkeys typing into GNU emacs would never make a good program. -Linus Torvald"
"Object-oriented programming is an exceptionally bad idea which could only have originated in California. -Edgser Dijkstra"
"If debugging is the process of removing software bugs, then programming must be the process of putting them in. -Edgser Dijkstra"
"The art of programming is the art of organizing complexity. -Edgser Dijkstra"
"Program testing can be used to show the presence of bugs, but never to show their absence! -Edgser Dijkstra"
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration. -Edgser Dijkstra"
"The effort of using machines to mimic the human mind has always struck me as rather silly. I would rather use them to mimic something better. -Edgser Dijkstra"
"Computer science is no more about computers than astronomy is about telescopes. -Edgser Dijkstra"
"Programming in Basic causes brain damage. -Edgser Dijkstra"
"The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague. -Edgser Dijkstra"
"If in physics there's something you don't understand, you can always hide behind the uncharted depths of nature. You can always blame God. You didn't make it so complex yourself. But if your program doesn't work, there is no one to hide behind. You cannot hide behind an obstinate nature. If it doesn't work, you've messed up. -Edgser Dijkstra"
"Teaching COBOL ought to be regarded as a criminal act. -Edgser Dijkstra"
"If you want more effective programmers, you will discover that they should not waste their time debugging, they should not introduce the bugs to start with. -Edgser Dijkstra"
"If we wish to count lines of code, we should not regard them as 'lines produced' but as 'lines spent.' -Edgser Dijkstra"
"In almost every computation a great variety of arrangements for the succession of the processes is possible, and various considerations must influence the selections amongst them for the purposes of a calculating engine. One essential object is to choose that arrangement which shall tend to reduce to a minimum the time necessary for completing the calculation. -Ada Lovelace"
"Im making an operating system myself, so I know what its like to be God. -Terry Davis"
"Im schizophrenic and so am I. -Terry Davis"
"If I was a dog, I would bark. -Terry Davis"
"Who has a better kernel? Debian? No. -Terry Davis"
"Computers are fast, programmers keep it slow. -A random Reddit user"
"Before software can be reusable it first has to be usable. -Ralph Johnson"
"The best thing about a Boolean is that even if you are wrong, you're only off by a bit. -Anonymous"
"It's not a bug, it's a feature. -Programmers"
"NVIDIA, fuck you -Linus Torvald"
)
while true
do
echo
echo
echo
echo
echo
echo
SIndex=$(( RANDOM % ''${#sentences[@]} ))
index=$(( RANDOM % ''${#cows[@]} ))
#cow="/usr/share/cowsay/cows/''${cows[index]}.cow"
cowsay -f "''${cows[index]}" "''${sentences[SIndex]}"
sleep 10
clear
done
'';
# reduce terminal size for actually
cows=("actually" "alpaca" "bud-frogs" "daemon" "elephant-in-snake" "moofasa" "skeleton" "three-eyes" "supermilker" "tux" "vader" "www")
declare -a sentences=(
"Sharing knowledge is the most fundamental act of friendship. Because it is a way you can give something without loosing something. -Richard Stallman"
"Free software' is a matter of liberty, not price. To understand the concept, you should think of 'free' as in 'free speech,' not as in 'free beer'. -Richard Stallman"
"Programming is not a science. Programming is a craft. -Richard Stallman"
"I did write some code in Java once, but that was the island in Indonesia. -Richard Stallman"
"Facebook is not your friend, it is a surveillance engine. -Richard Stallman"
"People said I should accept the world. Bullshit! I don't accept the world. -Richard Stallman"
"You can use any editor you want, but remember that vi vi vi is the text editor of the beast. -Richard Stallman"
"The idea of copyright did not exist in ancient times, when authors frequently copied other authors at length in works of non-fiction. This practice was useful, and is the only way many authors' works have survived even in part. -Richard Stallman"
"Idiots can be defeated but they never admit it. -Richard Stallman"
"Open source is a development methodology; free software is a social movement. -Richard Stallman"
"People sometimes ask me if it is a sin in the Church of Emacs to use vi. Using a free version of vi is not a sin; it is a penance. So happy hacking. -Richard Stallman"
"A computer is like air conditioning - it becomes useless when you open Windows -Linus Torvald"
"Intelligence is the ability to avoid doing work, yet getting the work done. -Linus Torvald"
"Software is like sex: It's better when it's free. -Linus Torvald"
"All operating systems sucks, but Linux just sucks less -Linus Torvald"
"I like offending people, because I think people who get offended should be offended. -Linus Torval"
"Talk is cheap. Show me the code. -Linus Torval"
"Most of the good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program. -Linus Torvald"
"Bad programmers worry about the code. Good programmers worry about data structures and their relationships. -Linus Torvald"
"If Microsoft ever does applications for Linux it means I've won. -Linus Torvald"
"Avoiding complexity reduces bugs. -Linus Torvald"
"Backups are for wimps. Real men upload their data to an FTP site and have everyone else mirror it. -Linus Torvald"
"Nobody actually creates perfect code the first time around, except me. But there's only one of me. -Linus Torvald"
"Microsoft isn't evil, they just make really crappy operating systems. -Linus Torvald"
"When you say 'I wrote a program that crashed Windows,' people just stare at you blankly and say 'Hey, I got those with the system, for free.' -Linus Torval"
"C++ is a horrible language. It's made more horrible by the fact that a lot of substandard programmers use it, to the point where it's much much easier to generate total and utter crap with it. -Linus Torvald"
"If you think your users are idiots, only idiots will use it. -Linus Torvald"
"My name is Linus, and I am your God. -Linus Torvald"
"An infinite number of monkeys typing into GNU emacs would never make a good program. -Linus Torvald"
"Object-oriented programming is an exceptionally bad idea which could only have originated in California. -Edgser Dijkstra"
"If debugging is the process of removing software bugs, then programming must be the process of putting them in. -Edgser Dijkstra"
"The art of programming is the art of organizing complexity. -Edgser Dijkstra"
"Program testing can be used to show the presence of bugs, but never to show their absence! -Edgser Dijkstra"
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration. -Edgser Dijkstra"
"The effort of using machines to mimic the human mind has always struck me as rather silly. I would rather use them to mimic something better. -Edgser Dijkstra"
"Computer science is no more about computers than astronomy is about telescopes. -Edgser Dijkstra"
"Programming in Basic causes brain damage. -Edgser Dijkstra"
"The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague. -Edgser Dijkstra"
"If in physics there's something you don't understand, you can always hide behind the uncharted depths of nature. You can always blame God. You didn't make it so complex yourself. But if your program doesn't work, there is no one to hide behind. You cannot hide behind an obstinate nature. If it doesn't work, you've messed up. -Edgser Dijkstra"
"Teaching COBOL ought to be regarded as a criminal act. -Edgser Dijkstra"
"If you want more effective programmers, you will discover that they should not waste their time debugging, they should not introduce the bugs to start with. -Edgser Dijkstra"
"If we wish to count lines of code, we should not regard them as 'lines produced' but as 'lines spent.' -Edgser Dijkstra"
"In almost every computation a great variety of arrangements for the succession of the processes is possible, and various considerations must influence the selections amongst them for the purposes of a calculating engine. One essential object is to choose that arrangement which shall tend to reduce to a minimum the time necessary for completing the calculation. -Ada Lovelace"
"Im making an operating system myself, so I know what its like to be God. -Terry Davis"
"Im schizophrenic and so am I. -Terry Davis"
"If I was a dog, I would bark. -Terry Davis"
"Who has a better kernel? Debian? No. -Terry Davis"
"Computers are fast, programmers keep it slow. -A random Reddit user"
"Before software can be reusable it first has to be usable. -Ralph Johnson"
"The best thing about a Boolean is that even if you are wrong, you're only off by a bit. -Anonymous"
"It's not a bug, it's a feature. -Programmers"
"NVIDIA, fuck you -Linus Torvald"
)
while true
do
echo
echo
echo
echo
echo
echo
SIndex=$(( RANDOM % ''${#sentences[@]} ))
index=$(( RANDOM % ''${#cows[@]} ))
#cow="/usr/share/cowsay/cows/''${cows[index]}.cow"
cowsay -f "''${cows[index]}" "''${sentences[SIndex]}"
sleep 10
clear
done
'';
# reduce terminal size for actually
}
+19 -15
View File
@@ -1,18 +1,22 @@
{ writeShellApplication, hyprland, jq, ...}:
{
writeShellApplication,
hyprland,
jq,
...
}:
writeShellApplication {
name = "custom-dontkillsteam";
runtimeInputs = [
hyprland
jq
];
text = ''
class=$(hyprctl activewindow -j | jq -r ".class")
if [[ "$class" == "Steam" || "$class" == "custom-pomodoro" ]]; then
hyprctl dispatch movetoworkspacesilent special
else
hyprctl dispatch killactive ""
fi
name = "custom-dontkillsteam";
runtimeInputs = [
hyprland
jq
];
text = ''
class=$(hyprctl activewindow -j | jq -r ".class")
if [[ "$class" == "Steam" || "$class" == "custom-pomodoro" ]]; then
hyprctl dispatch movetoworkspacesilent special
else
hyprctl dispatch killactive ""
fi
'';
'';
}
+24 -20
View File
@@ -1,24 +1,28 @@
{ writeShellApplication, git, libnotify, ... }:
{
writeShellApplication,
git,
libnotify,
...
}:
writeShellApplication {
name = "custom-gitnotify";
runtimeInputs = [
git
libnotify
];
text = ''
# Check if git is installed
if ! command -v git >/dev/null 2>&1; then
exit 0
fi
name = "custom-gitnotify";
runtimeInputs = [
git
libnotify
];
text = ''
# Check if git is installed
if ! command -v git >/dev/null 2>&1; then
exit 0
fi
NAME=$(git config --global user.name)
EMAIL=$(git config --global user.email)
NAME=$(git config --global user.name)
EMAIL=$(git config --global user.email)
if [[ -z "$NAME" || -z "$EMAIL" ]]; then
notify-send \
"Git not configured" \
"Set your identity\n or remove this warning by removing the custom-gitnotify line in\n ~/nixos/modules/home-manager/hyprland.nix"
fi
'';
if [[ -z "$NAME" || -z "$EMAIL" ]]; then
notify-send \
"Git not configured" \
"Set your identity\n or remove this warning by removing the custom-gitnotify line in\n ~/nixos/modules/home-manager/hyprland.nix"
fi
'';
}
+20 -16
View File
@@ -1,19 +1,23 @@
{ writeShellApplication, hyprland, jq, ... }:
{
writeShellApplication,
hyprland,
jq,
...
}:
writeShellApplication {
name = "custom-killall";
runtimeInputs = [
hyprland
jq
];
text = ''
active_workspace_id=$(hyprctl activeworkspace -j | jq -r '.id')
name = "custom-killall";
runtimeInputs = [
hyprland
jq
];
text = ''
active_workspace_id=$(hyprctl activeworkspace -j | jq -r '.id')
hyprctl clients -j |
jq -r ".[]
| select(.workspace.id==''${active_workspace_id})
| select(.focusHistoryID!=0)
| .pid" |
xargs -r kill
'';
hyprctl clients -j |
jq -r ".[]
| select(.workspace.id==''${active_workspace_id})
| select(.focusHistoryID!=0)
| .pid" |
xargs -r kill
'';
}
+14 -12
View File
@@ -1,15 +1,17 @@
# used for the terminal autostart. Needs to get cleared and recall fastfetch so that the bar from oh-my-zsh get resized
{ writeShellApplication, zsh, ... }:
{
writeShellApplication,
zsh,
...
}:
writeShellApplication {
name = "custom-launch";
runtimeInputs = [
zsh
];
text = ''
sleep 2
clear
zsh
'';
name = "custom-launch";
runtimeInputs = [
zsh
];
text = ''
sleep 2
clear
zsh
'';
}
+19 -14
View File
@@ -1,5 +1,10 @@
{ writeShellApplication, zsh, kitty, fzf,... }:
{
writeShellApplication,
zsh,
kitty,
fzf,
...
}:
writeShellApplication {
name = "custom-librewolfprofiles";
runtimeInputs = [
@@ -7,21 +12,21 @@ writeShellApplication {
fzf
];
text = ''
# List of profiles
profiles=("work" "other")
# List of profiles
profiles=("work" "other")
# Use fzf to select
selected=$(printf "%s\n" "''${profiles[@]}" | fzf --height 6 --reverse --prompt="Select LibreWolf profile:")
# Use fzf to select
selected=$(printf "%s\n" "''${profiles[@]}" | fzf --height 6 --reverse --prompt="Select LibreWolf profile:")
# If user cancels, exit
[[ -z "$selected" ]] && exit 0
# If user cancels, exit
[[ -z "$selected" ]] && exit 0
# Launch LibreWolf detached, keeping environment
setsid librewolf -P "$selected" --no-remote >/dev/null 2>&1 &
pkill -f "kitty.*Select LibreWolf profile"
# Launch LibreWolf detached, keeping environment
setsid librewolf -P "$selected" --no-remote >/dev/null 2>&1 &
pkill -f "kitty.*Select LibreWolf profile"
# Exit the kitty terminal after selection
exit
'';
# Exit the kitty terminal after selection
exit
'';
}
+37 -34
View File
@@ -1,43 +1,46 @@
{ writeShellApplication, man, ripgrep, fzf, ... }:
let
{
writeShellApplication,
man,
ripgrep,
fzf,
...
}: let
cacheTime = "10";
in
writeShellApplication {
name = "custom-man";
runtimeInputs = [
man
ripgrep
fzf
];
writeShellApplication {
name = "custom-man";
runtimeInputs = [
man
ripgrep
fzf
];
text = ''
CACHE_DIR="''${XDG_CACHE_HOME:-$HOME/.cache}"
CACHE_FILE="$CACHE_DIR/custom-man-options.txt"
mkdir -p "$CACHE_DIR"
CACHE_DIR="''${XDG_CACHE_HOME:-$HOME/.cache}"
CACHE_FILE="$CACHE_DIR/custom-man-options.txt"
mkdir -p "$CACHE_DIR"
REGENERATE=0
REGENERATE=0
# check if -r flag was passed
if [ "''${1:-}" = "-r" ]; then
REGENERATE=1
fi
# check if -r flag was passed
if [ "''${1:-}" = "-r" ]; then
REGENERATE=1
fi
# regenerate if file does not exist or is older than cacheTime days
if [ ! -f "$CACHE_FILE" ] || [ "$(find "$CACHE_FILE" -mtime +${cacheTime} -print)" ]; then
REGENERATE=1
fi
# regenerate if file does not exist or is older than cacheTime days
if [ ! -f "$CACHE_FILE" ] || [ "$(find "$CACHE_FILE" -mtime +${cacheTime} -print)" ]; then
REGENERATE=1
fi
if [ $REGENERATE -eq 1 ]; then
echo "(Re)building custom-manix cache..."
mkdir -p "$(dirname "$CACHE_FILE")"
man -k . > "$CACHE_FILE"
fi
if [ $REGENERATE -eq 1 ]; then
echo "(Re)building custom-manix cache..."
mkdir -p "$(dirname "$CACHE_FILE")"
man -k . > "$CACHE_FILE"
fi
# read from cache and pipe into fzf
cat "$CACHE_FILE" \
| fzf --preview "man {1}" \
| xargs man
'';
}
# read from cache and pipe into fzf
cat "$CACHE_FILE" \
| fzf --preview "man {1}" \
| xargs man
'';
}
+37 -34
View File
@@ -1,43 +1,46 @@
{ writeShellApplication, manix, ripgrep, fzf, ... }:
let
{
writeShellApplication,
manix,
ripgrep,
fzf,
...
}: let
cacheTime = "10";
in
writeShellApplication {
name = "custom-manix";
runtimeInputs = [
manix
ripgrep
fzf
];
writeShellApplication {
name = "custom-manix";
runtimeInputs = [
manix
ripgrep
fzf
];
text = ''
CACHE_DIR="''${XDG_CACHE_HOME:-$HOME/.cache}"
CACHE_FILE="$CACHE_DIR/custom-manix-options.txt"
mkdir -p "$CACHE_DIR"
CACHE_DIR="''${XDG_CACHE_HOME:-$HOME/.cache}"
CACHE_FILE="$CACHE_DIR/custom-manix-options.txt"
mkdir -p "$CACHE_DIR"
REGENERATE=0
REGENERATE=0
# check if -r flag was passed
if [ "''${1:-}" = "-r" ]; then
REGENERATE=1
fi
# check if -r flag was passed
if [ "''${1:-}" = "-r" ]; then
REGENERATE=1
fi
# regenerate if file does not exist or is older than cacheTime days
if [ ! -f "$CACHE_FILE" ] || [ "$(find "$CACHE_FILE" -mtime +${cacheTime} -print)" ]; then
REGENERATE=1
fi
# regenerate if file does not exist or is older than cacheTime days
if [ ! -f "$CACHE_FILE" ] || [ "$(find "$CACHE_FILE" -mtime +${cacheTime} -print)" ]; then
REGENERATE=1
fi
if [ $REGENERATE -eq 1 ]; then
echo "(Re)building custom-manix cache..."
mkdir -p "$(dirname "$CACHE_FILE")"
manix "" | rg -N '^(?:\x1b\[[0-9;]*m)*# ' | sed 's/\x1b\[[0-9;]*m//g; s/^# //' | rg -Nv '^(<|.*https?://)' > "$CACHE_FILE"
fi
if [ $REGENERATE -eq 1 ]; then
echo "(Re)building custom-manix cache..."
mkdir -p "$(dirname "$CACHE_FILE")"
manix "" | rg -N '^(?:\x1b\[[0-9;]*m)*# ' | sed 's/\x1b\[[0-9;]*m//g; s/^# //' | rg -Nv '^(<|.*https?://)' > "$CACHE_FILE"
fi
# read from cache and pipe into fzf
cat "$CACHE_FILE" \
| fzf --preview "manix {}" \
| xargs manix
'';
}
# read from cache and pipe into fzf
cat "$CACHE_FILE" \
| fzf --preview "manix {}" \
| xargs manix
'';
}
+23 -19
View File
@@ -1,22 +1,26 @@
{ writeShellApplication, rclone, libnotify, ... }:
{
writeShellApplication,
rclone,
libnotify,
...
}:
writeShellApplication {
name = "custom-mountkdrive";
runtimeInputs = [
rclone
libnotify
];
text = ''
REMOTE_NAME="kdrive"
MOUNT_POINT="$HOME/kdrive"
name = "custom-mountkdrive";
runtimeInputs = [
rclone
libnotify
];
text = ''
REMOTE_NAME="kdrive"
MOUNT_POINT="$HOME/kdrive"
if rclone listremotes | rg "^''${REMOTE_NAME}:"; then
echo "Mounting ''${REMOTE_NAME}..."
rclone mount "''${REMOTE_NAME}:" "$MOUNT_POINT" --vfs-cache-mode writes &
else
notify-send "rclone mount failed" \
"Remote ''${REMOTE_NAME} not found.\nConfigure rclone and create the dir ~/kdrive/ or comment out the exec line in hyprland.nix."
echo "Remote ''${REMOTE_NAME} not found. Configure rclone or comment out the exec line in hyprland.nix."
fi
'';
if rclone listremotes | rg "^''${REMOTE_NAME}:"; then
echo "Mounting ''${REMOTE_NAME}..."
rclone mount "''${REMOTE_NAME}:" "$MOUNT_POINT" --vfs-cache-mode writes &
else
notify-send "rclone mount failed" \
"Remote ''${REMOTE_NAME} not found.\nConfigure rclone and create the dir ~/kdrive/ or comment out the exec line in hyprland.nix."
echo "Remote ''${REMOTE_NAME} not found. Configure rclone or comment out the exec line in hyprland.nix."
fi
'';
}
+34 -30
View File
@@ -1,33 +1,37 @@
# used for the terminal autostart. Needs to get cleared and recall fastfetch so that the bar from oh-my-zsh get resized
{ writeShellApplication, hyprland, gawk, libnotify, ... }:
{
writeShellApplication,
hyprland,
gawk,
libnotify,
...
}:
writeShellApplication {
name = "custom-performance";
runtimeInputs = [
"hyprland"
"gawk"
"libnotify"
];
text = ''
HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==1{print $2}')
if [ "$HYPRGAMEMODE" = 1 ] ; then
hyprctl --batch "\
keyword animations:enabled 0;\
keyword animation borderangle,0; \
keyword decoration:shadow:enabled 0;\
keyword decoration:blur:enabled 0;\
keyword decoration:fullscreen_opacity 1;\
keyword general:gaps_in 0;\
keyword general:gaps_out 0;\
keyword general:border_size 1;\
keyword decoration:rounding 0"
notify-send -u critical -t 5000 "Performance mode [ON]"
exit
else
notify-send -u critical -t 5000 "Performance mode [OFF]"
hyprctl reload
exit 0
fi
'';
name = "custom-performance";
runtimeInputs = [
"hyprland"
"gawk"
"libnotify"
];
text = ''
HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==1{print $2}')
if [ "$HYPRGAMEMODE" = 1 ] ; then
hyprctl --batch "\
keyword animations:enabled 0;\
keyword animation borderangle,0; \
keyword decoration:shadow:enabled 0;\
keyword decoration:blur:enabled 0;\
keyword decoration:fullscreen_opacity 1;\
keyword general:gaps_in 0;\
keyword general:gaps_out 0;\
keyword general:border_size 1;\
keyword decoration:rounding 0"
notify-send -u critical -t 5000 "Performance mode [ON]"
exit
else
notify-send -u critical -t 5000 "Performance mode [OFF]"
hyprctl reload
exit 0
fi
'';
}
+14 -10
View File
@@ -1,12 +1,16 @@
{ writeShellApplication, kitty, tomato-c,... }:
{
writeShellApplication,
kitty,
tomato-c,
...
}:
writeShellApplication {
name = "custom-tomato";
runtimeInputs = [
kitty
tomato-c
];
text = ''
kitty --class "custom-pomodoro" --name "custom-pomodoro" -e tomato
'';
name = "custom-tomato";
runtimeInputs = [
kitty
tomato-c
];
text = ''
kitty --class "custom-pomodoro" --name "custom-pomodoro" -e tomato
'';
}
+47 -45
View File
@@ -1,47 +1,49 @@
{ writeShellApplication, socat, swww, ... }:
let
wallpaper1 = ../../assets/wallpaper1.jpg;
wallpaper2 = ../../assets/wallpaper2.jpg;
wallpaper3 = ../../assets/wallpaper3.jpg;
wallpaper4 = ../../assets/wallpaper4.jpg;
wallpaper5 = ../../assets/wallpaper5.jpg;
{
writeShellApplication,
socat,
swww,
...
}: let
wallpaper1 = ../../assets/wallpaper1.jpg;
wallpaper2 = ../../assets/wallpaper2.jpg;
wallpaper3 = ../../assets/wallpaper3.jpg;
wallpaper4 = ../../assets/wallpaper4.jpg;
wallpaper5 = ../../assets/wallpaper5.jpg;
in
writeShellApplication {
name = "custom-wallpaper";
runtimeInputs = [
socat
swww
];
text = ''
handle() {
case $1 in
workspace*)
str=$1
i=$((''${#str}-1))
workspace="''${str:$i:1}"
case $workspace in
1 | 6)
swww img -t none ${wallpaper1}
;;
2 | 7)
swww img -t none ${wallpaper2}
;;
3 | 8)
swww img -t none ${wallpaper3}
;;
4 | 9)
swww img -t none ${wallpaper4}
;;
5 | 10 | 0)
swww img -t none ${wallpaper5}
;;
esac
;;
esac
}
writeShellApplication {
name = "custom-wallpaper";
runtimeInputs = [
socat
swww
];
text = ''
handle() {
case $1 in
workspace*)
str=$1
i=$((''${#str}-1))
workspace="''${str:$i:1}"
case $workspace in
1 | 6)
swww img -t none ${wallpaper1}
;;
2 | 7)
swww img -t none ${wallpaper2}
;;
3 | 8)
swww img -t none ${wallpaper3}
;;
4 | 9)
swww img -t none ${wallpaper4}
;;
5 | 10 | 0)
swww img -t none ${wallpaper5}
;;
esac
;;
esac
}
socat -U - UNIX-CONNECT:"$XDG_RUNTIME_DIR"/hypr/"$HYPRLAND_INSTANCE_SIGNATURE"/.socket2.sock | while read -r line; do handle "$line"; done
'';
}
socat -U - UNIX-CONNECT:"$XDG_RUNTIME_DIR"/hypr/"$HYPRLAND_INSTANCE_SIGNATURE"/.socket2.sock | while read -r line; do handle "$line"; done
'';
}
+15 -12
View File
@@ -1,14 +1,17 @@
{ writeShellApplication, curl, ... }:
{
writeShellApplication,
curl,
...
}:
writeShellApplication {
name = "custom-weather";
runtimeInputs = [
curl
];
text = ''
while true; do
curl "https://wttr.in/?0&d&q&F&lang=fr"
sleep 7200
done
'';
name = "custom-weather";
runtimeInputs = [
curl
];
text = ''
while true; do
curl "https://wttr.in/?0&d&q&F&lang=fr"
sleep 7200
done
'';
}
+21 -18
View File
@@ -1,20 +1,23 @@
{ writeShellApplication, curl, ... }:
{
writeShellApplication,
curl,
...
}:
writeShellApplication {
name = "custom-weatherwaybar";
runtimeInputs = [
curl
];
text = ''
PATTERN="C"
PATTERN2=" "
TEXT1="''$(curl -s "https://wttr.in/?format=%c")"
TEXT1=''${TEXT1/$PATTERN2/}
TEXT2="''$(curl -s "https://wttr.in/?format=%t")"
TEXT2=''${TEXT2/$PATTERN/}
TEXT3="''$(curl -s "https://wttr.in/?format=%f")"
TEXT3=''${TEXT3/$PATTERN/}
printf '{"text":" %s\\n %s\\n %s", "tooltip": false, "class": "weather"}\\n' \
"$TEXT1" "$TEXT2" "$TEXT3"
'';
name = "custom-weatherwaybar";
runtimeInputs = [
curl
];
text = ''
PATTERN="C"
PATTERN2=" "
TEXT1="''$(curl -s "https://wttr.in/?format=%c")"
TEXT1=''${TEXT1/$PATTERN2/}
TEXT2="''$(curl -s "https://wttr.in/?format=%t")"
TEXT2=''${TEXT2/$PATTERN/}
TEXT3="''$(curl -s "https://wttr.in/?format=%f")"
TEXT3=''${TEXT3/$PATTERN/}
printf '{"text":" %s\\n %s\\n %s", "tooltip": false, "class": "weather"}\\n' \
"$TEXT1" "$TEXT2" "$TEXT3"
'';
}