1
1
Fork 0

Compare commits

...

8 commits

Author SHA1 Message Date
b30f6e22a6
hyprland: enable mouse refocus
Signed-off-by: Myned <dev@bjork.tech>
2024-09-12 19:43:24 -05:00
4595580e23
toggle: remove debug flag
Signed-off-by: Myned <dev@bjork.tech>
2024-09-12 19:43:24 -05:00
7361295ff1
nix: change nixpkgs-local dir
Signed-off-by: Myned <dev@bjork.tech>
2024-09-12 19:43:24 -05:00
67303011f2
hyprland: disable shadow for tiled windows
Signed-off-by: Myned <dev@bjork.tech>
2024-09-12 19:43:24 -05:00
82961fa55a
hyprland: modify binds
Signed-off-by: Myned <dev@bjork.tech>
2024-09-12 19:43:24 -05:00
c0b0163722
anyrun: fix build
Signed-off-by: Myned <dev@bjork.tech>
2024-09-12 19:43:24 -05:00
f683b90e45
boot: enable hibernation for mynix
Signed-off-by: Myned <dev@bjork.tech>
2024-09-12 19:43:24 -05:00
b2489b2e04
nix: format with alejandra
Signed-off-by: Myned <dev@bjork.tech>
2024-09-12 19:43:24 -05:00
181 changed files with 2243 additions and 2294 deletions

View file

@ -3,33 +3,26 @@
inputs, inputs,
lib, lib,
... ...
}: }: {
age.secrets = let
{
age.secrets =
let
secret = filename: { secret = filename: {
file = "${inputs.self}/secrets/${filename}"; file = "${inputs.self}/secrets/${filename}";
}; };
in in {
{
"common/nix/access-tokens.conf" = secret "common/nix/access-tokens.conf"; "common/nix/access-tokens.conf" = secret "common/nix/access-tokens.conf";
}; };
### NixOS ### NixOS
nixpkgs = nixpkgs = let
let
config = { config = {
allowUnfree = true; allowUnfree = true;
allowInsecurePredicate = allowInsecurePredicate = pkg: let
pkg:
let
name = lib.getName pkg; name = lib.getName pkg;
in in
# HACK: Allow all insecure electron versions # HACK: Allow all insecure electron versions
name == "electron" name
== "electron"
# HACK: Some Matrix clients rely on libolm, which is deprecated # HACK: Some Matrix clients rely on libolm, which is deprecated
# https://github.com/NixOS/nixpkgs/pull/334638 # https://github.com/NixOS/nixpkgs/pull/334638
|| name == "cinny" || name == "cinny"
@ -38,16 +31,13 @@
|| name == "olm" || name == "olm"
|| name == "openssl"; # Cisco Packet Tracer || name == "openssl"; # Cisco Packet Tracer
}; };
in in {
{
inherit config; inherit config;
overlays = [ overlays = [
( (
final: prev: final: prev: let
let nixpkgs = branch:
nixpkgs =
branch:
import inputs."nixpkgs-${branch}" { import inputs."nixpkgs-${branch}" {
inherit config; inherit config;
system = prev.system; system = prev.system;
@ -57,8 +47,7 @@
unstable = nixpkgs "unstable"; unstable = nixpkgs "unstable";
staging-next = nixpkgs "staging-next"; staging-next = nixpkgs "staging-next";
local = nixpkgs "local"; local = nixpkgs "local";
in in {
{
# Overlay nixpkgs branches # Overlay nixpkgs branches
#?? nixpkgs.BRANCH.PACKAGE #?? nixpkgs.BRANCH.PACKAGE
inherit stable unstable staging-next; inherit stable unstable staging-next;

View file

@ -6,12 +6,10 @@
#?? nix run .#genflake flake.nix #?? nix run .#genflake flake.nix
# TODO: Remove flakegen hook when nix expressions are officially implemented # TODO: Remove flakegen hook when nix expressions are officially implemented
# https://github.com/NixOS/nix/issues/3966 # https://github.com/NixOS/nix/issues/3966
{ {
# https://wiki.nixos.org/wiki/Flakes # https://wiki.nixos.org/wiki/Flakes
# https://nix.dev/manual/nix/2.18/command-ref/new-cli/nix3-flake.html # https://nix.dev/manual/nix/2.18/command-ref/new-cli/nix3-flake.html
inputs = inputs = let
let
flake = url: {inherit url;}; flake = url: {inherit url;};
follows = input: {inputs.${input}.follows = input;}; follows = input: {inputs.${input}.follows = input;};
stable = input: {inputs.${input}.follows = "${input}-stable";}; stable = input: {inputs.${input}.follows = "${input}-stable";};
@ -21,8 +19,7 @@
inherit url; inherit url;
flake = false; flake = false;
}; };
in in {
{
#?? branch = "git+https://REPO?ref=BRANCH" #?? branch = "git+https://REPO?ref=BRANCH"
#?? commit = "git+https://REPO?ref=BRANCH&rev=COMMIT" #?? commit = "git+https://REPO?ref=BRANCH&rev=COMMIT"
#?? tag = "git+https://REPO?ref=refs/tags/TAG" #?? tag = "git+https://REPO?ref=refs/tags/TAG"
@ -62,24 +59,17 @@
fw-fanctrl = flake "github:TamtamHero/fw-fanctrl/packaging/nix" // unstable "nixpkgs"; fw-fanctrl = flake "github:TamtamHero/fw-fanctrl/packaging/nix" // unstable "nixpkgs";
hypridle = flake "github:hyprwm/hypridle" // unstable "nixpkgs"; hypridle = flake "github:hyprwm/hypridle" // unstable "nixpkgs";
#// hyprland = flake "git+https://github.com/hyprwm/Hyprland?submodules=1" // unstable "nixpkgs"; #// hyprland = flake "git+https://github.com/hyprwm/Hyprland?submodules=1" // unstable "nixpkgs";
hyprland = hyprland = flake "git+https://github.com/hyprwm/Hyprland?ref=refs/tags/v0.43.0&submodules=1" // unstable "nixpkgs";
flake "git+https://github.com/hyprwm/Hyprland?ref=refs/tags/v0.43.0&submodules=1" #// hyprland = flake "git+https://github.com/UjinT34/Hyprland?ref=vrr-cursor-fix&submodules=1" // unstable "nixpkgs";
// unstable "nixpkgs";
#// hyprland =
#// flake "git+https://github.com/UjinT34/Hyprland?ref=vrr-cursor-fix&submodules=1"
#// // unstable "nixpkgs";
hyprland-contrib = flake "github:hyprwm/contrib" // unstable "nixpkgs"; hyprland-contrib = flake "github:hyprwm/contrib" // unstable "nixpkgs";
hyprland-plugins = hyprland-plugins = flake "github:hyprwm/hyprland-plugins" // unstable "nixpkgs" // follows "hyprland";
flake "github:hyprwm/hyprland-plugins" // unstable "nixpkgs" // follows "hyprland";
hyprlock = flake "github:hyprwm/hyprlock" // unstable "nixpkgs"; hyprlock = flake "github:hyprwm/hyprlock" // unstable "nixpkgs";
hyprpaper = flake "github:hyprwm/hyprpaper" // unstable "nixpkgs"; hyprpaper = flake "github:hyprwm/hyprpaper" // unstable "nixpkgs";
hyprpicker = flake "github:hyprwm/hyprpicker" // unstable "nixpkgs"; hyprpicker = flake "github:hyprwm/hyprpicker" // unstable "nixpkgs";
nix-flatpak = flake "github:gmodena/nix-flatpak?ref=v0.4.1"; nix-flatpak = flake "github:gmodena/nix-flatpak?ref=v0.4.1";
nix-vscode-extensions = flake "github:nix-community/nix-vscode-extensions" // unstable "nixpkgs"; nix-vscode-extensions = flake "github:nix-community/nix-vscode-extensions" // unstable "nixpkgs";
nixd = flake "github:nix-community/nixd" // unstable "nixpkgs"; nixd = flake "github:nix-community/nixd" // unstable "nixpkgs";
xdg-desktop-portal-hyprland = xdg-desktop-portal-hyprland = flake "github:hyprwm/xdg-desktop-portal-hyprland" // unstable "nixpkgs";
flake "github:hyprwm/xdg-desktop-portal-hyprland"
// unstable "nixpkgs";
# Server flakes # Server flakes
conduwuit = flake "github:Myned/conduwuit" // unstable "nixpkgs"; conduwuit = flake "github:Myned/conduwuit" // unstable "nixpkgs";
@ -88,8 +78,8 @@
nixpkgs-staging-next = flake "github:NixOS/nixpkgs/staging-next"; nixpkgs-staging-next = flake "github:NixOS/nixpkgs/staging-next";
### Development ### Development
nixpkgs-local = flake "git+file:///home/myned/.dev/nixpkgs?ref=7849cd48822de4dc0515c787b20dc85de30acdca"; nixpkgs-local = flake "git+file:///home/myned/SYNC/dev/repo/nixpkgs";
#// hyprland = flake "git+file:///home/myned/.dev/Hyprland?submodules=1"; #// hyprland = flake "git+file:///home/myned/SYNC/dev/repo/Hyprland?submodules=1";
### Source code ### Source code
firefox-gnome-theme = source "github:rafaelmardojai/firefox-gnome-theme/v128"; firefox-gnome-theme = source "github:rafaelmardojai/firefox-gnome-theme/v128";
@ -106,35 +96,34 @@
# https://github.com/kamadorueda/alejandra/blob/main/STYLE.md # https://github.com/kamadorueda/alejandra/blob/main/STYLE.md
formatter.x86_64-linux = inputs.nixpkgs-unstable.legacyPackages.x86_64-linux.alejandra; formatter.x86_64-linux = inputs.nixpkgs-unstable.legacyPackages.x86_64-linux.alejandra;
nixosConfigurations = nixosConfigurations = let
let
# TODO: Use inline modules instead of specialArgs # TODO: Use inline modules instead of specialArgs
# https://jade.fyi/blog/flakes-arent-real#nixos-modules # https://jade.fyi/blog/flakes-arent-real#nixos-modules
# Boilerplate systems with global imports # Boilerplate systems with global imports
#!! There is no default nixpkgs, inputs.<nixpkgs|home-manager>-BRANCH must exist #!! There is no default nixpkgs, inputs.<nixpkgs|home-manager>-BRANCH must exist
#?? branch = common "BRANCH" "ARCHITECTURE" [ MODULES ] #?? branch = common "BRANCH" "ARCHITECTURE" [ MODULES ]
common = common = branch: arch: modules:
branch: arch: modules:
inputs."nixpkgs-${branch}".lib.nixosSystem { inputs."nixpkgs-${branch}".lib.nixosSystem {
system = arch; system = arch;
specialArgs = {inherit inputs;};
specialArgs = {
inherit inputs;
};
# TODO: Clean up optional attributes with each new release # TODO: Clean up optional attributes with each new release
#!! Options will diverge between branches over time #!! Options will diverge between branches over time
#?? with lib; optionalAttrs (versionAtLeast version "VERSION") { ... }; #?? with lib; optionalAttrs (versionAtLeast version "VERSION") { ... };
modules = modules ++ [ modules =
modules
++ [
./options ./options
./configuration.nix ./configuration.nix
#!! Avoid globally importing modules that are not guarded by .enable #!! Avoid globally importing modules that are not guarded by .enable
# https://github.com/NixOS/nixpkgs/issues/137168 # https://github.com/NixOS/nixpkgs/issues/137168
( (
{ config, inputs, ... }:
{ {
config,
inputs,
...
}: {
imports = [ imports = [
inputs."aagl-gtk-on-nix-${branch}".nixosModules.default inputs."aagl-gtk-on-nix-${branch}".nixosModules.default
inputs."home-manager-${branch}".nixosModules.home-manager inputs."home-manager-${branch}".nixosModules.home-manager
@ -157,39 +146,16 @@
#?? system = branch "ARCHITECTURE" [ MODULES ] #?? system = branch "ARCHITECTURE" [ MODULES ]
stable = arch: modules: common "stable" "${arch}-linux" modules; stable = arch: modules: common "stable" "${arch}-linux" modules;
unstable = arch: modules: common "unstable" "${arch}-linux" modules; unstable = arch: modules: common "unstable" "${arch}-linux" modules;
in in {
{
### Stable ### Stable
myarm = stable "aarch64" [ myarm = stable "aarch64" [./profiles/server ./machines/myarm];
./profiles/server myne = stable "x86_64" [./profiles/server ./machines/myne];
./machines/myarm mypi3 = stable "aarch64" [./profiles/sbc ./machines/mypi3];
];
myne = stable "x86_64" [
./profiles/server
./machines/myne
];
mypi3 = stable "aarch64" [
./profiles/sbc
./machines/mypi3
];
### Unstable ### Unstable
myeck = unstable "x86_64" [ myeck = unstable "x86_64" [./profiles/console ./machines/myeck];
./profiles/console mynix = unstable "x86_64" [./profiles/desktop ./machines/mynix];
./machines/myeck myork = unstable "x86_64" [./profiles/laptop ./machines/myork];
];
mynix = unstable "x86_64" [
./profiles/desktop
./machines/mynix
];
myork = unstable "x86_64" [
./profiles/laptop
./machines/myork
];
}; };
}; };
} }

View file

@ -113,7 +113,7 @@
url = "github:nix-community/nixd"; url = "github:nix-community/nixd";
}; };
nixos-hardware.url = "github:NixOS/nixos-hardware"; nixos-hardware.url = "github:NixOS/nixos-hardware";
nixpkgs-local.url = "git+file:///home/myned/.dev/nixpkgs?ref=7849cd48822de4dc0515c787b20dc85de30acdca"; nixpkgs-local.url = "git+file:///home/myned/SYNC/dev/repo/nixpkgs";
nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-24.05"; nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-24.05";
nixpkgs-staging-next.url = "github:NixOS/nixpkgs/staging-next"; nixpkgs-staging-next.url = "github:NixOS/nixpkgs/staging-next";
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";

View file

@ -7,9 +7,7 @@
pkgs, pkgs,
modulesPath, modulesPath,
... ...
}: }: {
{
imports = [(modulesPath + "/profiles/qemu-guest.nix")]; imports = [(modulesPath + "/profiles/qemu-guest.nix")];
boot.initrd.availableKernelModules = [ boot.initrd.availableKernelModules = [

View file

@ -7,9 +7,7 @@
pkgs, pkgs,
modulesPath, modulesPath,
... ...
}: }: {
{
imports = [(modulesPath + "/installer/scan/not-detected.nix")]; imports = [(modulesPath + "/installer/scan/not-detected.nix")];
boot.initrd.availableKernelModules = [ boot.initrd.availableKernelModules = [

View file

@ -7,9 +7,7 @@
pkgs, pkgs,
modulesPath, modulesPath,
... ...
}: }: {
{
imports = [(modulesPath + "/profiles/qemu-guest.nix")]; imports = [(modulesPath + "/profiles/qemu-guest.nix")];
boot.initrd.availableKernelModules = [ boot.initrd.availableKernelModules = [

View file

@ -10,10 +10,20 @@
height = 1440; height = 1440;
}; };
boot.kernelParams = [ boot = {
# Enable hibernation with a swapfile on btrfs
# https://wiki.archlinux.org/title/Power_management/Suspend_and_hibernate#Hibernation_into_swap_file
#?? findmnt -no UUID -T /swap/swapfile
resumeDevice = "/dev/disk/by-uuid/5df5028b-a3ba-4f07-80ef-fd5abd542a81";
kernelParams = [
#?? sudo btrfs inspect-internal map-swapfile -r /swap/swapfile
"resume_offset=533760"
# https://gitlab.freedesktop.org/drm/amd/-/issues/2516#note_2119750 # https://gitlab.freedesktop.org/drm/amd/-/issues/2516#note_2119750
#// "gpu_sched.sched_policy=0" # Attempt to fix stutter #// "gpu_sched.sched_policy=0" # Attempt to fix stutter
]; ];
};
# _._ _,-'""`-._ # _._ _,-'""`-._
# (,-.`._,'( |\`-/| # (,-.`._,'( |\`-/|

View file

@ -7,9 +7,7 @@
pkgs, pkgs,
modulesPath, modulesPath,
... ...
}: }: {
{
imports = [(modulesPath + "/installer/scan/not-detected.nix")]; imports = [(modulesPath + "/installer/scan/not-detected.nix")];
boot.initrd.availableKernelModules = [ boot.initrd.availableKernelModules = [

View file

@ -4,12 +4,9 @@
lib, lib,
pkgs, pkgs,
... ...
}: }: let
let
brightnessctl = "${pkgs.brightnessctl}/bin/brightnessctl"; brightnessctl = "${pkgs.brightnessctl}/bin/brightnessctl";
in in {
{
imports = [ imports = [
inputs.nixos-hardware.nixosModules.framework-13-7040-amd inputs.nixos-hardware.nixosModules.framework-13-7040-amd
@ -55,14 +52,14 @@ in
services.keyd.keyboards.default.settings.main.rightcontrol = "layer(altgr)"; # No Ctrl_R services.keyd.keyboards.default.settings.main.rightcontrol = "layer(altgr)"; # No Ctrl_R
boot = {
# Enable hibernation with a swapfile on btrfs # Enable hibernation with a swapfile on btrfs
# https://wiki.archlinux.org/title/Power_management/Suspend_and_hibernate#Hibernation_into_swap_file # https://wiki.archlinux.org/title/Power_management/Suspend_and_hibernate#Hibernation_into_swap_file
#?? findmnt -no UUID -T /swap/swapfile #?? findmnt -no UUID -T /swap/swapfile
#?? sudo btrfs inspect-internal map-swapfile -r /swap/swapfile
boot = {
resumeDevice = "/dev/disk/by-uuid/f9416347-eff5-45d5-8dc3-93414c11ba6f"; resumeDevice = "/dev/disk/by-uuid/f9416347-eff5-45d5-8dc3-93414c11ba6f";
kernelParams = [ kernelParams = [
#?? sudo btrfs inspect-internal map-swapfile -r /swap/swapfile
"resume_offset=533760" "resume_offset=533760"
# Fix battery drain with suspend-then-hibernate # Fix battery drain with suspend-then-hibernate

View file

@ -7,9 +7,7 @@
pkgs, pkgs,
modulesPath, modulesPath,
... ...
}: }: {
{
imports = [(modulesPath + "/installer/scan/not-detected.nix")]; imports = [(modulesPath + "/installer/scan/not-detected.nix")];
boot.initrd.availableKernelModules = [ boot.initrd.availableKernelModules = [

View file

@ -7,9 +7,7 @@
pkgs, pkgs,
modulesPath, modulesPath,
... ...
}: }: {
{
imports = [(modulesPath + "/installer/scan/not-detected.nix")]; imports = [(modulesPath + "/installer/scan/not-detected.nix")];
boot.initrd.availableKernelModules = []; boot.initrd.availableKernelModules = [];

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom;
in {
options.custom = { options.custom = {
### Profiles ### Profiles
default = mkOption {default = true;}; default = mkOption {default = true;};

View file

@ -1,7 +1,8 @@
{ config, lib, ... }:
with lib;
{ {
config,
lib,
...
}:
with lib; {
config.custom.desktops.hyprland.enable = config.custom.full; config.custom.desktops.hyprland.enable = config.custom.full;
} }

View file

@ -4,13 +4,9 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.desktops.gnome; cfg = config.custom.desktops.gnome;
in in {
{
options.custom.desktops.gnome = { options.custom.desktops.gnome = {
enable = mkOption {default = false;}; enable = mkOption {default = false;};
gdm = mkOption {default = true;}; gdm = mkOption {default = true;};

View file

@ -114,7 +114,7 @@ in {
(key "Backspace" "Super" "changegroupactive" "f") (key "Backspace" "Super" "changegroupactive" "f")
(key "Backspace" "Super+Ctrl" "togglegroup" null) (key "Backspace" "Super+Ctrl" "togglegroup" null)
(key "Backspace" "Super+Ctrl+Shift" "lockactivegroup" "toggle") (key "Backspace" "Super+Ctrl+Shift" "lockactivegroup" "toggle")
(key "Backspace" "Super+Shift" "changegroupactive" "b") (key "Backspace" "Super+Shift" "movegroupwindow" null)
(key "Bracketleft" "Super" "layoutmsg" "orientationprev") (key "Bracketleft" "Super" "layoutmsg" "orientationprev")
(key "Bracketleft" "Super+Shift" "splitratio" "-0.1") (key "Bracketleft" "Super+Shift" "splitratio" "-0.1")
(key "Bracketright" "Super" "layoutmsg" "orientationnext") (key "Bracketright" "Super" "layoutmsg" "orientationnext")
@ -124,12 +124,14 @@ in {
#// (key "Delete" "Super" "exec" "left") #// (key "Delete" "Super" "exec" "left")
(key "Delete" "Super+Shift" "exec" "vrr") (key "Delete" "Super+Shift" "exec" "vrr")
(key "Down" "Super" "movewindoworgroup" "d") (key "Down" "Super" "movewindow" "d")
(key "Down" "Super+Shift" "movewindoworgroup" "d")
(key "Equal" "Super" "exec" "audio Normalizer") (key "Equal" "Super" "exec" "audio Normalizer")
(key "Escape" "Super" "togglefloating" null) (key "Escape" "Super" "togglefloating" null)
(key "Escape" "Super+Alt" "exec" "lifx state --color red") (key "Escape" "Super+Alt" "exec" "lifx state --color red")
(key "Escape" "Super+Shift" "centerwindow" null) (key "Escape" "Super+Shift" "centerwindow" null)
(key "Left" "Super" "movewindoworgroup" "l") (key "Left" "Super" "movewindow" "l")
(key "Left" "Super+Shift" "movewindoworgroup" "l")
(key "Minus" "Super" "exec" "audio") (key "Minus" "Super" "exec" "audio")
(key "Print" "Shift" "exec" "screenshot -d") (key "Print" "Shift" "exec" "screenshot -d")
(key "Print" "Super" "exec" "screenshot -e") (key "Print" "Super" "exec" "screenshot -e")
@ -137,7 +139,8 @@ in {
(key "Print" null "exec" "screenshot") (key "Print" null "exec" "screenshot")
(key "Return" "Super" "fullscreen" "1") # Maximize (key "Return" "Super" "fullscreen" "1") # Maximize
(key "Return" "Super+Shift" "fullscreen" "0") # Fullscreen (key "Return" "Super+Shift" "fullscreen" "0") # Fullscreen
(key "Right" "Super" "movewindoworgroup" "r") (key "Right" "Super" "movewindow" "r")
(key "Right" "Super+Shift" "movewindoworgroup" "r")
(key "Space" "Ctrl" "exec" (concatStringsSep " " [ (key "Space" "Ctrl" "exec" (concatStringsSep " " [
"toggle" "toggle"
"--focus" "--focus"
@ -155,56 +158,57 @@ in {
"--workspace special:pip" "--workspace special:pip"
])) ]))
(key "Space" "Super" "togglespecialworkspace" "scratchpad") (key "Space" "Super" "togglespecialworkspace" "scratchpad")
(key "Space" "Super+Ctrl" "movetoworkspacesilent" "special:scratchpad") (key "Space" "Super+Shift" "movetoworkspacesilent" "special:scratchpad")
(key "Tab" "Super" "cyclenext" "tiled") (key "Tab" "Super" "cyclenext" "tiled")
(key "Tab" "Super+Shift" "alterzorder" "top") (key "Tab" "Super+Shift" "alterzorder" "top")
(key "Tab" "Super+Shift" "cyclenext" "floating") (key "Tab" "Super+Shift" "cyclenext" "floating")
(key "Up" "Super" "movewindoworgroup" "u") (key "Up" "Super" "movewindow" "u")
(key "Up" "Super+Shift" "movewindoworgroup" "u")
(key "0" "Super" "workspace" "10") (key "0" "Super" "workspace" "10")
(key "0" "Super+Ctrl" "movetoworkspacesilent" "10") (key "0" "Super+Shift" "movetoworkspacesilent" "10")
(key "1" "Ctrl+Alt" "exec" "lifx state --brightness 0.01") (key "1" "Ctrl+Alt" "exec" "lifx state --brightness 0.01")
(key "1" "Super" "workspace" "1") (key "1" "Super" "workspace" "1")
(key "1" "Super+Alt" "exec" "lifx state --kelvin 1500") (key "1" "Super+Alt" "exec" "lifx state --kelvin 1500")
(key "1" "Super+Ctrl" "movetoworkspacesilent" "1") (key "1" "Super+Shift" "movetoworkspacesilent" "1")
(key "2" "Ctrl+Alt" "exec" "lifx state --brightness 0.25") (key "2" "Ctrl+Alt" "exec" "lifx state --brightness 0.25")
(key "2" "Super" "workspace" "2") (key "2" "Super" "workspace" "2")
(key "2" "Super+Alt" "exec" "lifx state --kelvin 2500") (key "2" "Super+Alt" "exec" "lifx state --kelvin 2500")
(key "2" "Super+Ctrl" "movetoworkspacesilent" "2") (key "2" "Super+Shift" "movetoworkspacesilent" "2")
(key "3" "Ctrl+Alt" "exec" "lifx state --brightness 0.50") (key "3" "Ctrl+Alt" "exec" "lifx state --brightness 0.50")
(key "3" "Super" "workspace" "3") (key "3" "Super" "workspace" "3")
(key "3" "Super+Alt" "exec" "lifx state --kelvin 3000") (key "3" "Super+Alt" "exec" "lifx state --kelvin 3000")
(key "3" "Super+Ctrl" "movetoworkspacesilent" "3") (key "3" "Super+Shift" "movetoworkspacesilent" "3")
(key "4" "Ctrl+Alt" "exec" "lifx state --brightness 0.75") (key "4" "Ctrl+Alt" "exec" "lifx state --brightness 0.75")
(key "4" "Super" "workspace" "4") (key "4" "Super" "workspace" "4")
(key "4" "Super+Alt" "exec" "lifx state --kelvin 4000") (key "4" "Super+Alt" "exec" "lifx state --kelvin 4000")
(key "4" "Super+Ctrl" "movetoworkspacesilent" "4") (key "4" "Super+Shift" "movetoworkspacesilent" "4")
(key "5" "Ctrl+Alt" "exec" "lifx state --brightness 1.00") (key "5" "Ctrl+Alt" "exec" "lifx state --brightness 1.00")
(key "5" "Super" "workspace" "5") (key "5" "Super" "workspace" "5")
(key "5" "Super+Alt" "exec" "lifx state --kelvin 5000") (key "5" "Super+Alt" "exec" "lifx state --kelvin 5000")
(key "5" "Super+Ctrl" "movetoworkspacesilent" "5") (key "5" "Super+Shift" "movetoworkspacesilent" "5")
(key "6" "Super" "workspace" "6") (key "6" "Super" "workspace" "6")
(key "6" "Super+Ctrl" "movetoworkspacesilent" "6") (key "6" "Super+Shift" "movetoworkspacesilent" "6")
(key "7" "Super" "workspace" "7") (key "7" "Super" "workspace" "7")
(key "7" "Super+Ctrl" "movetoworkspacesilent" "7") (key "7" "Super+Shift" "movetoworkspacesilent" "7")
(key "8" "Super" "workspace" "8") (key "8" "Super" "workspace" "8")
(key "8" "Super+Ctrl" "movetoworkspacesilent" "8") (key "8" "Super+Shift" "movetoworkspacesilent" "8")
(key "9" "Super" "workspace" "9") (key "9" "Super" "workspace" "9")
(key "9" "Super+Ctrl" "movetoworkspacesilent" "9") (key "9" "Super+Shift" "movetoworkspacesilent" "9")
(key "A" "Ctrl+Alt" "exec" "${waydroid} session stop") (key "A" "Ctrl+Alt" "exec" "${waydroid} session stop")
(key "A" "Super" "togglespecialworkspace" "android") (key "A" "Super" "togglespecialworkspace" "android")
(key "A" "Super+Ctrl" "movetoworkspacesilent" "android") (key "A" "Super+Shift" "movetoworkspacesilent" "android")
(key "B" "Super" "exec" "[group new lock; tile] ${firefox-esr}") (key "B" "Super" "exec" "[group new lock; tile] ${firefox-esr}")
(key "C" "Super" "exec" codium) (key "C" "Super" "exec" codium)
(key "E" "Super" "exec" gnome-text-editor) (key "E" "Super" "exec" gnome-text-editor)
(key "F" "Super" "exec" nautilus) (key "F" "Super" "exec" nautilus)
(key "G" "Super" "workspace" "name:game") (key "G" "Super" "workspace" "name:game")
(key "G" "Super+Alt" "workspace" "name:gamescope") (key "G" "Super+Alt" "workspace" "name:gamescope")
(key "G" "Super+Ctrl" "movetoworkspacesilent" "name:game") (key "G" "Super+Shift" "movetoworkspacesilent" "name:game")
(key "G" "Super+Ctrl+Alt" "exec" "${pkill} gamescope") (key "G" "Super+Ctrl+Alt" "exec" "${pkill} gamescope")
(key "K" "Super" "exec" obsidian) (key "K" "Super" "exec" obsidian)
(key "M" "Super" "togglespecialworkspace" "music") (key "M" "Super" "togglespecialworkspace" "music")
(key "M" "Super+Ctrl" "movetoworkspacesilent" "music") (key "M" "Super+Shift" "movetoworkspacesilent" "music")
(key "O" "Super" "togglespecialworkspace" "office") (key "O" "Super" "togglespecialworkspace" "office")
(key "P" "Super" "exec" "${hyprpicker} --autocopy") (key "P" "Super" "exec" "${hyprpicker} --autocopy")
(key "P" "Super+Shift" "exec" "${hyprpicker} --autocopy --format rgb") (key "P" "Super+Shift" "exec" "${hyprpicker} --autocopy --format rgb")
@ -213,11 +217,11 @@ in {
(key "Q" "Super" "killactive" null) (key "Q" "Super" "killactive" null)
(key "S" "Ctrl+Alt" "exec" "${pkill} steam") (key "S" "Ctrl+Alt" "exec" "${pkill} steam")
(key "S" "Super" "togglespecialworkspace" "steam") (key "S" "Super" "togglespecialworkspace" "steam")
(key "S" "Super+Ctrl" "movetoworkspacesilent" "steam") (key "S" "Super+Shift" "movetoworkspacesilent" "steam")
(key "S" "Super+Shift" "exec" steam) (key "S" "Super+Shift" "exec" steam)
(key "T" "Ctrl+Alt" "exec" "${pkill} kitty") (key "T" "Ctrl+Alt" "exec" "${pkill} kitty")
(key "T" "Super" "togglespecialworkspace" "terminal") (key "T" "Super" "togglespecialworkspace" "terminal")
(key "T" "Super+Ctrl" "movetoworkspacesilent" "terminal") (key "T" "Super+Shift" "movetoworkspacesilent" "terminal")
(key "T" "Super+Shift" "exec" kitty) (key "T" "Super+Shift" "exec" kitty)
(key "V" "Super" "exec" "${kitty} --app-id clipboard --override font_size=12 ${clipse}") (key "V" "Super" "exec" "${kitty} --app-id clipboard --override font_size=12 ${clipse}")
(key "V" "Super+Shift" "exec" "${clipse} -clear && ${notify-send} clipse 'Clipboard cleared' --urgency low") (key "V" "Super+Shift" "exec" "${clipse} -clear && ${notify-send} clipse 'Clipboard cleared' --urgency low")
@ -227,12 +231,12 @@ in {
then "/scale:140 +f" then "/scale:140 +f"
else "" else ""
}") }")
(key "W" "Super+Ctrl" "movetoworkspacesilent" "vm") (key "W" "Super+Shift" "movetoworkspacesilent" "vm")
(key "W" "Super+Ctrl+Shift" "exec" "vm ${virt-manager} --show-domain-console myndows") (key "W" "Super+Ctrl+Shift" "exec" "vm ${virt-manager} --show-domain-console myndows")
(key "X" "Super" "workspace" "+1") (key "X" "Super" "workspace" "+1")
(key "X" "Super+Ctrl" "movetoworkspacesilent" "+1") (key "X" "Super+Shift" "movetoworkspacesilent" "+1")
(key "Z" "Super" "workspace" "-1") (key "Z" "Super" "workspace" "-1")
(key "Z" "Super+Ctrl" "movetoworkspacesilent" "-1") (key "Z" "Super+Shift" "movetoworkspacesilent" "-1")
]; ];
}; };
}; };

View file

@ -4,13 +4,9 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.desktops.hyprland; cfg = config.custom.desktops.hyprland;
in in {
{
options.custom.desktops.hyprland.enable = mkOption {default = false;}; options.custom.desktops.hyprland.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -4,15 +4,11 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
hyprctl = "${pkgs.hyprland}/bin/hyprctl"; hyprctl = "${pkgs.hyprland}/bin/hyprctl";
cfg = config.custom.desktops.hyprland.plugins; cfg = config.custom.desktops.hyprland.plugins;
in in {
{
options.custom.desktops.hyprland.plugins.enable = mkOption {default = false;}; options.custom.desktops.hyprland.plugins.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -167,6 +167,7 @@ in {
flatten [ flatten [
### Defaults ### Defaults
(class ".*" ["float" "suppressevent maximize" "syncfullscreen"]) (class ".*" ["float" "suppressevent maximize" "syncfullscreen"])
(floating false ["noshadow"])
(floating true ["bordercolor rgb(073642)"]) (floating true ["bordercolor rgb(073642)"])
(fullscreen true ["idleinhibit focus"]) (fullscreen true ["idleinhibit focus"])
(pinned true ["bordercolor rgb(073642) rgb(073642)"]) (pinned true ["bordercolor rgb(073642) rgb(073642)"])

View file

@ -4,10 +4,7 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
clipse = "${pkgs.clipse}/bin/clipse"; clipse = "${pkgs.clipse}/bin/clipse";
firefox-esr = "${ firefox-esr = "${
config.home-manager.users.${config.custom.username}.programs.firefox.finalPackage config.home-manager.users.${config.custom.username}.programs.firefox.finalPackage
@ -22,8 +19,7 @@ let
}/bin/waybar"; }/bin/waybar";
cfg = config.custom.desktops.hyprland.settings; cfg = config.custom.desktops.hyprland.settings;
in in {
{
options.custom.desktops.hyprland.settings.enable = mkOption {default = false;}; options.custom.desktops.hyprland.settings.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
@ -51,12 +47,14 @@ in
#?? envd = VARIABLE, VALUE #?? envd = VARIABLE, VALUE
# HACK: Mapped home-manager variables to envd in lieu of upstream fix # HACK: Mapped home-manager variables to envd in lieu of upstream fix
# https://github.com/nix-community/home-manager/issues/2659 # https://github.com/nix-community/home-manager/issues/2659
envd = envd = with builtins;
with builtins; attrValues
attrValues ( (
mapAttrs ( mapAttrs
(
name: value: "${name}, ${toString value}" name: value: "${name}, ${toString value}"
) config.home-manager.users.${config.custom.username}.home.sessionVariables )
config.home-manager.users.${config.custom.username}.home.sessionVariables
) )
++ [ ++ [
"EDITOR, gnome-text-editor" "EDITOR, gnome-text-editor"
@ -66,7 +64,8 @@ in
#// exec = [ ]; #// exec = [ ];
# https://wiki.hyprland.org/Configuring/Keywords/#executing # https://wiki.hyprland.org/Configuring/Keywords/#executing
exec-once = [ exec-once =
[
"${rm} ~/.config/qalculate/qalc.dmenu.history" # Clear calc history "${rm} ~/.config/qalculate/qalc.dmenu.history" # Clear calc history
"${clipse} -clear" # Clear clipboard history "${clipse} -clear" # Clear clipboard history
"${clipse} -listen" # Monitor clipboard "${clipse} -listen" # Monitor clipboard
@ -143,7 +142,10 @@ in
"col.inactive" = "rgba(6c71c440)"; "col.inactive" = "rgba(6c71c440)";
"col.locked_active" = "rgb(d33682)"; "col.locked_active" = "rgb(d33682)";
"col.locked_inactive" = "rgba(d3368240)"; "col.locked_inactive" = "rgba(d3368240)";
font_size = if config.custom.hidpi then 16 else 10; font_size =
if config.custom.hidpi
then 16
else 10;
height = 5; height = 5;
render_titles = false; render_titles = false;
text_color = "rgb(93a1a1)"; text_color = "rgb(93a1a1)";
@ -181,7 +183,7 @@ in
float_switch_override_focus = 0; # Disable float to tile hover focus float_switch_override_focus = 0; # Disable float to tile hover focus
focus_on_close = 1; # Focus window under mouse focus_on_close = 1; # Focus window under mouse
follow_mouse = 1; # Hover focus follow_mouse = 1; # Hover focus
mouse_refocus = false; #// mouse_refocus = false;
repeat_delay = 300; repeat_delay = 300;
repeat_rate = 40; repeat_rate = 40;
sensitivity = 0.5; sensitivity = 0.5;

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.desktops.kde;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.desktops.kde;
in {
options.custom.desktops.kde.enable = mkOption {default = false;}; options.custom.desktops.kde.enable = mkOption {default = false;};
config = mkIf cfg.enable {services.desktopManager.plasma6.enable = true;}; config = mkIf cfg.enable {services.desktopManager.plasma6.enable = true;};

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.files.agenix;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.files.agenix;
in {
# https://wiki.nixos.org/wiki/Agenix # https://wiki.nixos.org/wiki/Agenix
# https://github.com/ryantm/agenix # https://github.com/ryantm/agenix
options.custom.files.agenix.enable = mkOption {default = false;}; options.custom.files.agenix.enable = mkOption {default = false;};

View file

@ -1,8 +1,9 @@
{ config, lib, ... }:
with lib;
{ {
config,
lib,
...
}:
with lib; {
config.custom.files = mkIf config.custom.default { config.custom.files = mkIf config.custom.default {
agenix.enable = true; agenix.enable = true;
dev.enable = true; dev.enable = true;

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.files.dev;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.files.dev;
in {
options.custom.files.dev.enable = mkOption {default = false;}; options.custom.files.dev.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.files.mnt;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.files.mnt;
in {
options.custom.files.mnt.enable = mkOption {default = false;}; options.custom.files.mnt.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.files.nixos;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.files.nixos;
in {
options.custom.files.nixos.enable = mkOption {default = false;}; options.custom.files.nixos.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.adb;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.adb;
in {
options.custom.programs.adb.enable = mkOption {default = false;}; options.custom.programs.adb.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -4,13 +4,9 @@
lib, lib,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.ags; cfg = config.custom.programs.ags;
in in {
{
options.custom.programs.ags.enable = mkOption {default = false;}; options.custom.programs.ags.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.alacritty;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.alacritty;
in {
options.custom.programs.alacritty.enable = mkOption {default = false;}; options.custom.programs.alacritty.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.anime-game-launcher;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.anime-game-launcher;
in {
options.custom.programs.anime-game-launcher.enable = mkOption {default = false;}; options.custom.programs.anime-game-launcher.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -5,17 +5,13 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.anyrun; cfg = config.custom.programs.anyrun;
in in {
{
options.custom.programs.anyrun.enable = mkOption {default = false;}; options.custom.programs.anyrun.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
imports = [ inputs.anyrun.home-managerModules.default ]; imports = [inputs.anyrun.homeManagerModules.default];
# https://github.com/Kirottu/anyrun # https://github.com/Kirottu/anyrun
programs.anyrun = { programs.anyrun = {
@ -27,8 +23,7 @@ in
applications applications
dictionary dictionary
#// kidex # File search #// kidex # File search
#// randr # Hyprland only\{ #// randr # Hyprland only
rink # Calculator rink # Calculator
shell shell
#// stdin # Entries from input, aka dmenu #// stdin # Entries from input, aka dmenu

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.appimage;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.appimage;
in {
options.custom.programs.appimage.enable = mkOption {default = false;}; options.custom.programs.appimage.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -1,13 +1,13 @@
{ config, lib, ... }: {
config,
with lib; lib,
...
let }:
with lib; let
wofi = "${config.home-manager.users.${config.custom.username}.programs.wofi.package}/bin/wofi"; wofi = "${config.home-manager.users.${config.custom.username}.programs.wofi.package}/bin/wofi";
cfg = config.custom.programs.bitwarden-menu; cfg = config.custom.programs.bitwarden-menu;
in in {
{
options.custom.programs.bitwarden-menu.enable = mkOption {default = false;}; options.custom.programs.bitwarden-menu.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.chromium;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.chromium;
in {
options.custom.programs.chromium.enable = mkOption {default = false;}; options.custom.programs.chromium.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -4,13 +4,9 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.clipse; cfg = config.custom.programs.clipse;
in in {
{
options.custom.programs.clipse.enable = mkOption {default = false;}; options.custom.programs.clipse.enable = mkOption {default = false;};
config = { config = {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.dconf;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.dconf;
in {
options.custom.programs.dconf.enable = mkOption {default = false;}; options.custom.programs.dconf.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -1,8 +1,9 @@
{ config, lib, ... }:
with lib;
{ {
config,
lib,
...
}:
with lib; {
config.custom.programs = mkMerge [ config.custom.programs = mkMerge [
(mkIf config.custom.default { (mkIf config.custom.default {
direnv.enable = true; direnv.enable = true;

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.direnv;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.direnv;
in {
options.custom.programs.direnv.enable = mkOption {default = false;}; options.custom.programs.direnv.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.discord;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.discord;
in {
options.custom.programs.discord.enable = mkOption {default = false;}; options.custom.programs.discord.enable = mkOption {default = false;};
config.home-manager.users.myned = mkIf cfg.enable { config.home-manager.users.myned = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.element-desktop;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.element-desktop;
in {
options.custom.programs.element-desktop.enable = mkOption {default = false;}; options.custom.programs.element-desktop.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -4,15 +4,11 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
fastfetch = "${pkgs.fastfetch}/bin/fastfetch"; fastfetch = "${pkgs.fastfetch}/bin/fastfetch";
cfg = config.custom.programs.fastfetch; cfg = config.custom.programs.fastfetch;
in in {
{
options.custom.programs.fastfetch = { options.custom.programs.fastfetch = {
enable = mkOption {default = false;}; enable = mkOption {default = false;};
greet = mkOption {default = false;}; greet = mkOption {default = false;};

View file

@ -5,13 +5,9 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.firefox; cfg = config.custom.programs.firefox;
in in {
{
options.custom.programs.firefox.enable = mkOption {default = false;}; options.custom.programs.firefox.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
@ -116,8 +112,7 @@ in
# https://mozilla.github.io/policy-templates/#extensionsettings # https://mozilla.github.io/policy-templates/#extensionsettings
#?? https://addons.mozilla.org/en-US/firefox #?? https://addons.mozilla.org/en-US/firefox
#?? about:support#addons #?? about:support#addons
ExtensionSettings = ExtensionSettings = let
let
extension = id: { extension = id: {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/${id}/latest.xpi"; install_url = "https://addons.mozilla.org/firefox/downloads/latest/${id}/latest.xpi";
installation_mode = "normal_installed"; installation_mode = "normal_installed";
@ -194,14 +189,12 @@ in
#!! Only certain preferences are supported via policies #!! Only certain preferences are supported via policies
# https://mozilla.github.io/policy-templates/#preferences # https://mozilla.github.io/policy-templates/#preferences
#?? about:config #?? about:config
Preferences = Preferences = let
let
locked = value: { locked = value: {
Value = value; Value = value;
Status = "locked"; Status = "locked";
}; };
in in {
{
"accessibility.browsewithcaret" = locked false; "accessibility.browsewithcaret" = locked false;
"accessibility.typeaheadfind" = locked false; "accessibility.typeaheadfind" = locked false;
"browser.aboutConfig.showWarning" = locked false; "browser.aboutConfig.showWarning" = locked false;

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.fish;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.fish;
in {
options.custom.programs.fish.enable = mkOption {default = false;}; options.custom.programs.fish.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.foot;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.foot;
in {
options.custom.programs.foot.enable = mkOption {default = false;}; options.custom.programs.foot.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.fuzzel;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.fuzzel;
in {
options.custom.programs.fuzzel.enable = mkOption {default = false;}; options.custom.programs.fuzzel.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.gamemode;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.gamemode;
in {
options.custom.programs.gamemode.enable = mkOption {default = false;}; options.custom.programs.gamemode.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.gamescope;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.gamescope;
in {
options.custom.programs.gamescope.enable = mkOption {default = false;}; options.custom.programs.gamescope.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.git;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.git;
in {
options.custom.programs.git.enable = mkOption {default = false;}; options.custom.programs.git.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -4,13 +4,9 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.gnome-shell; cfg = config.custom.programs.gnome-shell;
in in {
{
options.custom.programs.gnome-shell.enable = mkOption {default = false;}; options.custom.programs.gnome-shell.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
@ -18,8 +14,7 @@ in
programs.gnome-shell = { programs.gnome-shell = {
enable = true; enable = true;
extensions = extensions = with pkgs.gnomeExtensions;
with pkgs.gnomeExtensions;
optionals config.custom.default [ optionals config.custom.default [
{package = appindicator;} # https://github.com/ubuntu/gnome-shell-extension-appindicator {package = appindicator;} # https://github.com/ubuntu/gnome-shell-extension-appindicator
] ]

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.gnome-terminal;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.gnome-terminal;
in {
options.custom.programs.gnome-terminal.enable = mkOption {default = false;}; options.custom.programs.gnome-terminal.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.gpg;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.gpg;
in {
options.custom.programs.gpg.enable = mkOption {default = false;}; options.custom.programs.gpg.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.htop;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.htop;
in {
options.custom.programs.htop.enable = mkOption {default = false;}; options.custom.programs.htop.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.hyprlock;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.hyprlock;
in {
options.custom.programs.hyprlock.enable = mkOption {default = false;}; options.custom.programs.hyprlock.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.kdeconnect;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.kdeconnect;
in {
options.custom.programs.kdeconnect.enable = mkOption {default = false;}; options.custom.programs.kdeconnect.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.kitty;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.kitty;
in {
options.custom.programs.kitty.enable = mkOption {default = false;}; options.custom.programs.kitty.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -4,13 +4,9 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.libreoffice; cfg = config.custom.programs.libreoffice;
in in {
{
options.custom.programs.libreoffice = { options.custom.programs.libreoffice = {
enable = mkOption {default = false;}; enable = mkOption {default = false;};
package = mkOption {default = pkgs.libreoffice-fresh;}; package = mkOption {default = pkgs.libreoffice-fresh;};

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.librewolf;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.librewolf;
in {
options.custom.programs.librewolf.enable = mkOption {default = false;}; options.custom.programs.librewolf.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,15 +1,16 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.localsend;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.localsend;
in {
options.custom.programs.localsend.enable = mkOption {default = false;}; options.custom.programs.localsend.enable = mkOption {default = false;};
config = config =
if (versionAtLeast version "24.11") then if (versionAtLeast version "24.11")
then
(mkIf cfg.enable { (mkIf cfg.enable {
# https://github.com/localsend/localsend # https://github.com/localsend/localsend
programs.localsend = { programs.localsend = {
@ -17,6 +18,5 @@ in
openFirewall = true; openFirewall = true;
}; };
}) })
else else {};
{ };
} }

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.logseq;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.logseq;
in {
options.custom.programs.logseq.enable = mkOption {default = false;}; options.custom.programs.logseq.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.man;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.man;
in {
options.custom.programs.man.enable = mkOption {default = false;}; options.custom.programs.man.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -4,13 +4,9 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.mangohud; cfg = config.custom.programs.mangohud;
in in {
{
options.custom.programs.mangohud.enable = mkOption {default = false;}; options.custom.programs.mangohud.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.mosh;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.mosh;
in {
options.custom.programs.mosh.enable = mkOption {default = false;}; options.custom.programs.mosh.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.nano;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.nano;
in {
options.custom.programs.nano.enable = mkOption {default = false;}; options.custom.programs.nano.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -4,13 +4,9 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.nautilus; cfg = config.custom.programs.nautilus;
in in {
{
options.custom.programs.nautilus.enable = mkOption {default = false;}; options.custom.programs.nautilus.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.networkmanager-dmenu;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.networkmanager-dmenu;
in {
options.custom.programs.networkmanager-dmenu.enable = mkOption {default = false;}; options.custom.programs.networkmanager-dmenu.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
@ -13,11 +13,9 @@ in
# https://github.com/firecat53/networkmanager-dmenu/blob/main/config.ini.example # https://github.com/firecat53/networkmanager-dmenu/blob/main/config.ini.example
#!! Option not available, files written directly #!! Option not available, files written directly
# FIXME: active_chars does not take effect # FIXME: active_chars does not take effect
home.file.".config/networkmanager-dmenu/config.ini".text = home.file.".config/networkmanager-dmenu/config.ini".text = let
let
wofi = "${config.home-manager.users.${config.custom.username}.programs.wofi.package}/bin/wofi"; wofi = "${config.home-manager.users.${config.custom.username}.programs.wofi.package}/bin/wofi";
in in ''
''
[dmenu] [dmenu]
dmenu_command = ${wofi} --dmenu --lines 11 dmenu_command = ${wofi} --dmenu --lines 11
active_chars = > active_chars = >

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.nh;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.nh;
in {
options.custom.programs.nh.enable = mkOption {default = false;}; options.custom.programs.nh.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
@ -16,7 +16,11 @@ in
clean = { clean = {
enable = true; enable = true;
extraArgs = "--keep-since ${if config.custom.minimal then "7" else "30"}d"; extraArgs = "--keep-since ${
if config.custom.minimal
then "7"
else "30"
}d";
}; };
}; };
}; };

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.nheko;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.nheko;
in {
options.custom.programs.nheko.enable = mkOption {default = false;}; options.custom.programs.nheko.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.nix-index;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.nix-index;
in {
options.custom.programs.nix-index.enable = mkOption {default = false;}; options.custom.programs.nix-index.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.nix-ld;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.nix-ld;
in {
options.custom.programs.nix-ld.enable = mkOption {default = false;}; options.custom.programs.nix-ld.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.nushell;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.nushell;
in {
options.custom.programs.nushell.enable = mkOption {default = false;}; options.custom.programs.nushell.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.nvtop;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.nvtop;
in {
options.custom.programs.nvtop.enable = mkOption {default = false;}; options.custom.programs.nvtop.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.obs-studio;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.obs-studio;
in {
options.custom.programs.obs-studio.enable = mkOption {default = false;}; options.custom.programs.obs-studio.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.onedrive;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.onedrive;
in {
options.custom.programs.onedrive.enable = mkOption {default = false;}; options.custom.programs.onedrive.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -4,13 +4,9 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.path-of-building; cfg = config.custom.programs.path-of-building;
in in {
{
options.custom.programs.path-of-building.enable = mkOption {default = false;}; options.custom.programs.path-of-building.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -4,13 +4,9 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.rbw; cfg = config.custom.programs.rbw;
in in {
{
options.custom.programs.rbw.enable = mkOption {default = false;}; options.custom.programs.rbw.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.rofi-rbw;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.rofi-rbw;
in {
options.custom.programs.rofi-rbw.enable = mkOption {default = false;}; options.custom.programs.rofi-rbw.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -4,13 +4,9 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.rofi; cfg = config.custom.programs.rofi;
in in {
{
options.custom.programs.rofi.enable = mkOption {default = false;}; options.custom.programs.rofi.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.seahorse;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.seahorse;
in {
options.custom.programs.seahorse.enable = mkOption {default = false;}; options.custom.programs.seahorse.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.slurp;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.slurp;
in {
options.custom.programs.slurp.enable = mkOption {default = false;}; options.custom.programs.slurp.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.ssh;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.ssh;
in {
options.custom.programs.ssh.enable = mkOption {default = false;}; options.custom.programs.ssh.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -4,13 +4,9 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.steam; cfg = config.custom.programs.steam;
in in {
{
# https://wiki.nixos.org/wiki/Steam # https://wiki.nixos.org/wiki/Steam
# https://store.steampowered.com # https://store.steampowered.com
options.custom.programs.steam = { options.custom.programs.steam = {
@ -19,7 +15,8 @@ in
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
programs.steam = { programs.steam =
{
enable = true; enable = true;
extest.enable = cfg.extest; # Work around invisible cursor on Wayland extest.enable = cfg.extest; # Work around invisible cursor on Wayland
extraCompatPackages = [pkgs.proton-ge-bin]; extraCompatPackages = [pkgs.proton-ge-bin];
@ -31,6 +28,7 @@ in
# "--fullscreen" # "--fullscreen"
# ]; # ];
}; };
} // optionalAttrs (versionAtLeast version "24.11") { protontricks.enable = true; }; }
// optionalAttrs (versionAtLeast version "24.11") {protontricks.enable = true;};
}; };
} }

View file

@ -4,13 +4,9 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.swaylock; cfg = config.custom.programs.swaylock;
in in {
{
options.custom.programs.swaylock.enable = mkOption {default = false;}; options.custom.programs.swaylock.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -5,13 +5,9 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.thunderbird; cfg = config.custom.programs.thunderbird;
in in {
{
options.custom.programs.thunderbird.enable = mkOption {default = false;}; options.custom.programs.thunderbird.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.tio;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.tio;
in {
options.custom.programs.tio.enable = mkOption {default = false;}; options.custom.programs.tio.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.tmux;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.tmux;
in {
options.custom.programs.tmux.enable = mkOption {default = false;}; options.custom.programs.tmux.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -5,13 +5,9 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.vscode; cfg = config.custom.programs.vscode;
in in {
{
options.custom.programs.vscode.enable = mkOption {default = false;}; options.custom.programs.vscode.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -4,6 +4,7 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib; let with lib; let
bash = "${pkgs.bash}/bin/bash"; bash = "${pkgs.bash}/bin/bash";
blueberry = "${pkgs.blueberry}/bin/blueberry"; blueberry = "${pkgs.blueberry}/bin/blueberry";
@ -32,6 +33,8 @@ with lib; let
wttrbar = "${pkgs.wttrbar}/bin/wttrbar"; wttrbar = "${pkgs.wttrbar}/bin/wttrbar";
cfg = config.custom.programs.waybar; cfg = config.custom.programs.waybar;
in {
options.custom.programs.waybar.enable = mkOption {default = false;};
in { in {
options.custom.programs.waybar.enable = mkOption {default = false;}; options.custom.programs.waybar.enable = mkOption {default = false;};
@ -46,6 +49,52 @@ in {
### SETTINGS ### ### SETTINGS ###
# https://github.com/Alexays/Waybar/wiki/Configuration # https://github.com/Alexays/Waybar/wiki/Configuration
#?? pkill -SIGUSR2 -x waybar #?? pkill -SIGUSR2 -x waybar
settings = let
## INHERIT ##
#!! Module defaults are not accurate to documentation
# TODO: Submit pull request to fix in addition to inconsistent hyphen vs underscore
# https://github.com/Alexays/Waybar/wiki/Module:-Cava
cava-config = {
cava_config = null; # Default: null?
framerate = 30; # Default: 30?
autosens = 1; # Default: 1
# sensitivity = 0; # Default: 100?
bars = 16; # Default: 2
lower_cutoff_freq = 50; # Default: 50?
higher_cutoff_freq = 10000; # Default: 10000?
sleep_timer = 5; # Default: 0
hide_on_silence = true; # Default: false
method = "pipewire"; # Default: pulse
source = "auto"; # Default: auto?
sample_rate = 44100; # Default: 44100?
sample_bits = 16; # Default: 16?
stereo = false; # Default: true
reverse = false; # Default: false
bar_delimiter = 32; # ASCII code for space, default: 59 or ;
monstercat = true; # Default: false?
waves = true; # Default: false?
noise_reduction = 0.2; # Default: 0.77?
input_delay = 1; # Default: 4
format-icons = [
""
""
""
""
""
""
""
""
]; # !! Required
on-click = easyeffects;
on-scroll-up = "${swayosd-client} --output-volume raise";
on-scroll-down = "${swayosd-client} --output-volume lower";
rotate = 180;
};
in {
status = {
## GLOBAL ##
layer = "top";
position = "bottom";
settings = let settings = let
## INHERIT ## ## INHERIT ##
#!! Module defaults are not accurate to documentation #!! Module defaults are not accurate to documentation
@ -93,6 +142,26 @@ in {
layer = "top"; layer = "top";
position = "bottom"; position = "bottom";
## POSITION ##
modules-left = [
"custom/power"
"custom/inhibitor"
"custom/vpn"
"custom/vm"
"hyprland/workspaces"
];
modules-center = [
"clock"
"custom/weather"
];
modules-right = [
"mpris"
"tray"
"wireplumber"
"bluetooth"
"network"
"battery"
];
## POSITION ## ## POSITION ##
modules-left = [ modules-left = [
"custom/power" "custom/power"
@ -114,6 +183,14 @@ in {
"battery" "battery"
]; ];
## MODULES ##
# https://github.com/Alexays/Waybar/wiki/Module:-Custom
"custom/power" = {
format = "";
on-click = "${systemctl} poweroff";
on-click-right = "${systemctl} reboot";
on-click-middle = "${loginctl} terminate-session ''";
};
## MODULES ## ## MODULES ##
# https://github.com/Alexays/Waybar/wiki/Module:-Custom # https://github.com/Alexays/Waybar/wiki/Module:-Custom
"custom/power" = { "custom/power" = {
@ -123,12 +200,26 @@ in {
on-click-middle = "${loginctl} terminate-session ''"; on-click-middle = "${loginctl} terminate-session ''";
}; };
"custom/inhibitor" = {
interval = 5;
exec = "~/.config/waybar/scripts/inhibitor.sh";
on-click = "~/.local/bin/inhibit";
};
"custom/inhibitor" = { "custom/inhibitor" = {
interval = 5; interval = 5;
exec = "~/.config/waybar/scripts/inhibitor.sh"; exec = "~/.config/waybar/scripts/inhibitor.sh";
on-click = "~/.local/bin/inhibit"; on-click = "~/.local/bin/inhibit";
}; };
"custom/vm" = {
interval = 5;
exec = "~/.config/waybar/scripts/vm.sh";
on-click = "~/.local/bin/vm -x ${
if config.custom.hidpi
then "/scale:140"
else ""
}";
};
"custom/vm" = { "custom/vm" = {
interval = 5; interval = 5;
exec = "~/.config/waybar/scripts/vm.sh"; exec = "~/.config/waybar/scripts/vm.sh";
@ -139,12 +230,27 @@ in {
}"; }";
}; };
"custom/vpn" = {
interval = 5;
exec = "~/.config/waybar/scripts/vpn.sh";
on-click = "~/.local/bin/vpn mypi3";
};
"custom/vpn" = { "custom/vpn" = {
interval = 5; interval = 5;
exec = "~/.config/waybar/scripts/vpn.sh"; exec = "~/.config/waybar/scripts/vpn.sh";
on-click = "~/.local/bin/vpn mypi3"; on-click = "~/.local/bin/vpn mypi3";
}; };
# https://github.com/Alexays/Waybar/wiki/Module:-Idle-Inhibitor
# FIXME: Not currently usable
# https://github.com/Alexays/Waybar/issues/690
idle_inhibitor = {
format = "{icon}";
format-icons = {
activated = "󰅶";
deactivated = "󰾪";
};
};
# https://github.com/Alexays/Waybar/wiki/Module:-Idle-Inhibitor # https://github.com/Alexays/Waybar/wiki/Module:-Idle-Inhibitor
# FIXME: Not currently usable # FIXME: Not currently usable
# https://github.com/Alexays/Waybar/issues/690 # https://github.com/Alexays/Waybar/issues/690
@ -156,8 +262,17 @@ in {
}; };
}; };
# https://github.com/Alexays/Waybar/wiki/Module:-Hyprland
# https://github.com/Alexays/Waybar/wiki/Module:-Hyprland # https://github.com/Alexays/Waybar/wiki/Module:-Hyprland
# https://www.nerdfonts.com/cheat-sheet # https://www.nerdfonts.com/cheat-sheet
"hyprland/workspaces" = {
show-special = true;
format = "{icon}";
format-icons = {
android = "";
dropdown = "󰞷";
game = "󰊴";
music = "󰝚";
"hyprland/workspaces" = { "hyprland/workspaces" = {
show-special = true; show-special = true;
format = "{icon}"; format = "{icon}";
@ -168,6 +283,7 @@ in {
music = "󰝚"; music = "󰝚";
office = "󰈙"; office = "󰈙";
pip = "󰹙"; pip = "󰹙";
pip = "󰹙";
scratchpad = ""; scratchpad = "";
steam = "󰓓"; steam = "󰓓";
terminal = ""; terminal = "";
@ -175,9 +291,28 @@ in {
wallpaper = "󰏩"; wallpaper = "󰏩";
}; };
}; };
steam = "󰓓";
terminal = "";
vm = "󰢹";
wallpaper = "󰏩";
};
};
cava = cava-config;
cava = cava-config; cava = cava-config;
# https://github.com/Alexays/Waybar/wiki/Module:-Clock
clock = {
# https://fmt.dev/latest/syntax.html#chrono-specs
format = "{:%a %b %d %I:%M %p}"; # Mon Jan 01 12:00 AM
tooltip-format = "{calendar}";
calendar.format = {
months = "<span color='#eee8d5'>{}</span>";
weeks = "<span color='#eee8d5'>{}</span>";
weekdays = "<span color='#93a1a1'>{}</span>";
days = "<span color='#586e75'>{}</span>";
today = "<span color='#eee8d5'>{}</span>";
};
# https://github.com/Alexays/Waybar/wiki/Module:-Clock # https://github.com/Alexays/Waybar/wiki/Module:-Clock
clock = { clock = {
# https://fmt.dev/latest/syntax.html#chrono-specs # https://fmt.dev/latest/syntax.html#chrono-specs
@ -198,7 +333,19 @@ in {
on-scroll-up = "${swayosd-client} --output-volume raise"; on-scroll-up = "${swayosd-client} --output-volume raise";
on-scroll-down = "${swayosd-client} --output-volume lower"; on-scroll-down = "${swayosd-client} --output-volume lower";
}; };
# FIXME: Click release event sends to incorrect layer without sleeping
# https://github.com/hyprwm/Hyprland/issues/1348
on-click = "${swaync-client} --toggle-panel";
# on-click-right = easyeffects;
on-scroll-up = "${swayosd-client} --output-volume raise";
on-scroll-down = "${swayosd-client} --output-volume lower";
};
# https://github.com/bjesus/wttrbar
"custom/weather" = {
format = "{}°";
interval = 60 * 60;
return-type = "json";
# https://github.com/bjesus/wttrbar # https://github.com/bjesus/wttrbar
"custom/weather" = { "custom/weather" = {
format = "{}°"; format = "{}°";
@ -211,9 +358,13 @@ in {
"--fahrenheit" "--fahrenheit"
"--hide-conditions" "--hide-conditions"
"--main-indicator temp_F" "--main-indicator temp_F"
"--location 'Cedar Falls Iowa'"
]; ];
}; };
"cava#reverse" =
cava-config
// {
"cava#reverse" = "cava#reverse" =
cava-config cava-config
// { // {
@ -236,7 +387,37 @@ in {
on-scroll-up = "${swayosd-client} --output-volume raise"; on-scroll-up = "${swayosd-client} --output-volume raise";
on-scroll-down = "${swayosd-client} --output-volume lower"; on-scroll-down = "${swayosd-client} --output-volume lower";
}; };
# https://github.com/Alexays/Waybar/wiki/Module:-MPRIS
mpris = {
format = "{player_icon} {dynamic}";
format-paused = "{status_icon} {dynamic}";
dynamic-len = 50;
dynamic-order = [
"title"
"artist"
];
dynamic-separator = " 󰧟 ";
player-icons.default = "󰎈";
status-icons.paused = "";
on-click-middle = ""; # TODO: Close music player
on-scroll-up = "${swayosd-client} --output-volume raise";
on-scroll-down = "${swayosd-client} --output-volume lower";
};
# https://github.com/Alexays/Waybar/wiki/Module:-WirePlumber
wireplumber = {
format = "{icon} {volume}%";
format-muted = "󰸈";
format-icons = [
"󰕿"
"󰖀"
"󰕾"
];
on-click = easyeffects;
on-click-right = "${swayosd-client} --output-volume mute-toggle";
on-scroll-up = "${swayosd-client} --output-volume raise";
on-scroll-down = "${swayosd-client} --output-volume lower";
};
# https://github.com/Alexays/Waybar/wiki/Module:-WirePlumber # https://github.com/Alexays/Waybar/wiki/Module:-WirePlumber
wireplumber = { wireplumber = {
format = "{icon} {volume}%"; format = "{icon} {volume}%";
@ -252,6 +433,16 @@ in {
on-scroll-down = "${swayosd-client} --output-volume lower"; on-scroll-down = "${swayosd-client} --output-volume lower";
}; };
# https://github.com/Alexays/Waybar/wiki/Module:-Bluetooth
bluetooth = {
format-disabled = "󰂲";
format-off = "󰂲";
format-on = "󰂯";
format-connected = "󰂱";
on-click = blueberry;
on-click-right = "${bluetoothctl} disconnect";
on-click-middle = "${rfkill} toggle bluetooth"; # Toggle bluetooth on/off
};
# https://github.com/Alexays/Waybar/wiki/Module:-Bluetooth # https://github.com/Alexays/Waybar/wiki/Module:-Bluetooth
bluetooth = { bluetooth = {
format-disabled = "󰂲"; format-disabled = "󰂲";
@ -263,6 +454,22 @@ in {
on-click-middle = "${rfkill} toggle bluetooth"; # Toggle bluetooth on/off on-click-middle = "${rfkill} toggle bluetooth"; # Toggle bluetooth on/off
}; };
# https://github.com/Alexays/Waybar/wiki/Module:-Network
network = {
format = "{icon}";
format-icons = {
disabled = "";
disconnected = "";
ethernet = "󰈀";
linked = "";
wifi = [
"󰤯"
"󰤟"
"󰤢"
"󰤥"
"󰤨"
];
};
# https://github.com/Alexays/Waybar/wiki/Module:-Network # https://github.com/Alexays/Waybar/wiki/Module:-Network
network = { network = {
format = "{icon}"; format = "{icon}";
@ -283,7 +490,31 @@ in {
on-click = nm-connection-editor; on-click = nm-connection-editor;
on-click-right = "~/.local/bin/network"; # Toggle networking on/off on-click-right = "~/.local/bin/network"; # Toggle networking on/off
}; };
on-click = nm-connection-editor;
on-click-right = "~/.local/bin/network"; # Toggle networking on/off
};
# https://github.com/Alexays/Waybar/wiki/Module:-Battery
"battery" = {
format = "{icon} {power:.0f}W";
format-icons = [
"󰂃"
"󰁺"
"󰁻"
"󰁼"
"󰁽"
"󰁾"
"󰁿"
"󰂀"
"󰂁"
"󰂂"
"󰁹"
];
interval = 5;
states = {
critical = 15;
warning = 30;
};
# https://github.com/Alexays/Waybar/wiki/Module:-Battery # https://github.com/Alexays/Waybar/wiki/Module:-Battery
"battery" = { "battery" = {
format = "{icon} {power:.0f}W"; format = "{icon} {power:.0f}W";
@ -310,6 +541,10 @@ in {
}; };
}; };
}; };
on-click = "~/.local/bin/power"; # Toggle power-saver mode
};
};
};
}; };
# TODO: Convert to writeShellApplication # TODO: Convert to writeShellApplication

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.wezterm;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.wezterm;
in {
options.custom.programs.wezterm.enable = mkOption {default = false;}; options.custom.programs.wezterm.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.wireshark;
in
{ {
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.custom.programs.wireshark;
in {
options.custom.programs.wireshark.enable = mkOption {default = false;}; options.custom.programs.wireshark.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.wofi;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.wofi;
in {
options.custom.programs.wofi.enable = mkOption {default = false;}; options.custom.programs.wofi.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.wpaperd;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.wpaperd;
in {
options.custom.programs.wpaperd.enable = mkOption {default = false;}; options.custom.programs.wpaperd.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -4,19 +4,14 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
# Use packages from local derivation # Use packages from local derivation
git = config.home-manager.users.${config.custom.username}.programs.git.package; git = config.home-manager.users.${config.custom.username}.programs.git.package;
hyprland = hyprland =
config.home-manager.users.${config.custom.username}.wayland.windowManager.hyprland.finalPackage; config.home-manager.users.${config.custom.username}.wayland.windowManager.hyprland.finalPackage;
wofi = config.home-manager.users.${config.custom.username}.programs.wofi.package; wofi = config.home-manager.users.${config.custom.username}.programs.wofi.package;
in in {
{ config.home-manager.users.${config.custom.username}.home.file = let
config.home-manager.users.${config.custom.username}.home.file =
let
# Place script.ext in the same directory as this file # Place script.ext in the same directory as this file
#?? pkg = (SHELL "NAME" [ DEPENDENCIES ]) #?? pkg = (SHELL "NAME" [ DEPENDENCIES ])
# https://nixos.org/manual/nixpkgs/unstable/#trivial-builder-writeShellApplication # https://nixos.org/manual/nixpkgs/unstable/#trivial-builder-writeShellApplication
@ -172,7 +167,6 @@ in
swww swww
tailscale tailscale
]) ])
] ]
++ (with pkgs.python3Packages; [ ++ (with pkgs.python3Packages; [
# Python files with extension .py # Python files with extension .py

View file

@ -1,7 +1,5 @@
#! /usr/bin/env bash #! /usr/bin/env bash
set -x
# Toggle pinned window, launch if needed # Toggle pinned window, launch if needed
#?? toggle --type TYPE --expression EXPRESSION --workspace WORKSPACE [COMMAND] #?? toggle --type TYPE --expression EXPRESSION --workspace WORKSPACE [COMMAND]
#!! Regex may need to be double-escaped #!! Regex may need to be double-escaped

View file

@ -4,16 +4,12 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cat = "${pkgs.coreutils}/bin/cat"; cat = "${pkgs.coreutils}/bin/cat";
sed = "${pkgs.gnused}/bin/sed"; sed = "${pkgs.gnused}/bin/sed";
cfg = config.custom.services.agenix; cfg = config.custom.services.agenix;
in in {
{
options.custom.services.agenix.enable = mkOption {default = false;}; options.custom.services.agenix.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.services.auto-cpufreq;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.services.auto-cpufreq;
in {
options.custom.services.auto-cpufreq = { options.custom.services.auto-cpufreq = {
enable = mkOption {default = false;}; enable = mkOption {default = false;};

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.services.avizo;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.services.avizo;
in {
options.custom.services.avizo.enable = mkOption {default = false;}; options.custom.services.avizo.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.services.blueman-applet;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.services.blueman-applet;
in {
options.custom.services.blueman-applet.enable = mkOption {default = false;}; options.custom.services.blueman-applet.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {

View file

@ -1,11 +1,11 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.services.blueman;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.services.blueman;
in {
options.custom.services.blueman.enable = mkOption {default = false;}; options.custom.services.blueman.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

View file

@ -5,15 +5,11 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cat = "${pkgs.coreutils}/bin/cat"; cat = "${pkgs.coreutils}/bin/cat";
cfg = config.custom.services.borgmatic; cfg = config.custom.services.borgmatic;
in in {
{
# https://wiki.nixos.org/wiki/Borg_backup # https://wiki.nixos.org/wiki/Borg_backup
# https://github.com/borgmatic-collective/borgmatic # https://github.com/borgmatic-collective/borgmatic
#!! Imperative initialization #!! Imperative initialization
@ -68,11 +64,9 @@ in
}; };
}; };
age.secrets = age.secrets = let
let
secret = filename: {file = "${inputs.self}/secrets/${filename}";}; secret = filename: {file = "${inputs.self}/secrets/${filename}";};
in in {
{
"${config.custom.profile}/borgmatic/borgbase.${config.custom.hostname}" = secret "${config.custom.profile}/borgmatic/borgbase.${config.custom.hostname}"; "${config.custom.profile}/borgmatic/borgbase.${config.custom.hostname}" = secret "${config.custom.profile}/borgmatic/borgbase.${config.custom.hostname}";
}; };
}; };

View file

@ -4,25 +4,19 @@
lib, lib,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.services.caddy; cfg = config.custom.services.caddy;
in in {
{
options.custom.services.caddy.enable = mkOption {default = false;}; options.custom.services.caddy.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
age.secrets = age.secrets = let
let
secret = filename: { secret = filename: {
file = "${inputs.self}/secrets/${filename}"; file = "${inputs.self}/secrets/${filename}";
owner = "caddy"; owner = "caddy";
group = "caddy"; group = "caddy";
}; };
in in {
{
"${config.custom.profile}/caddy/Caddyfile" = secret "${config.custom.profile}/caddy/Caddyfile"; "${config.custom.profile}/caddy/Caddyfile" = secret "${config.custom.profile}/caddy/Caddyfile";
}; };

View file

@ -1,13 +1,13 @@
{ config, lib, ... }: {
config,
with lib; lib,
...
let }:
with lib; let
wofi = "${config.home-manager.users.${config.custom.username}.programs.wofi.package}/bin/wofi"; wofi = "${config.home-manager.users.${config.custom.username}.programs.wofi.package}/bin/wofi";
cfg = config.custom.services.clipcat; cfg = config.custom.services.clipcat;
in in {
{
options.custom.services.clipcat.enable = mkOption {default = false;}; options.custom.services.clipcat.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {

Some files were not shown because too many files have changed in this diff Show more