This commit is contained in:
2024-09-15 12:04:40 -04:00
commit f3d47705d8
32 changed files with 3414 additions and 0 deletions

400
nix/home-manager/flake.lock generated Normal file
View File

@@ -0,0 +1,400 @@
{
"nodes": {
"agenix": {
"inputs": {
"darwin": "darwin",
"home-manager": [
"home-manager"
],
"nixpkgs": [
"nixpkgs"
],
"systems": "systems"
},
"locked": {
"lastModified": 1723293904,
"narHash": "sha256-b+uqzj+Wa6xgMS9aNbX4I+sXeb5biPDi39VgvSFqFvU=",
"owner": "ryantm",
"repo": "agenix",
"rev": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41",
"type": "github"
},
"original": {
"owner": "ryantm",
"repo": "agenix",
"type": "github"
}
},
"binsider": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1726404049,
"narHash": "sha256-RXxrLtYih9jXGYOXKoFWtQRrmtw/HD5cH8FZslFsQYY=",
"owner": "orhun",
"repo": "binsider",
"rev": "fa152e84907441f64f70e7c97f79d18f6f5c9408",
"type": "github"
},
"original": {
"owner": "orhun",
"repo": "binsider",
"type": "github"
}
},
"darwin": {
"inputs": {
"nixpkgs": [
"agenix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1700795494,
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
"owner": "lnl7",
"repo": "nix-darwin",
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
"type": "github"
},
"original": {
"owner": "lnl7",
"ref": "master",
"repo": "nix-darwin",
"type": "github"
}
},
"firefox-mod-theme": {
"flake": false,
"locked": {
"lastModified": 1726262539,
"narHash": "sha256-cqV/tJ9bDionSX8KzMj1dv2LRGSXcQ/xV3CWTn/elhQ=",
"owner": "datguypiko",
"repo": "Firefox-Mod-Blur",
"rev": "cbbaa4dc54a060a01b69d096cf7039d8c7aef5f0",
"type": "github"
},
"original": {
"owner": "datguypiko",
"repo": "Firefox-Mod-Blur",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1726153070,
"narHash": "sha256-HO4zgY0ekfwO5bX0QH/3kJ/h4KvUDFZg8YpkNwIbg1U=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "bcef6817a8b2aa20a5a6dbb19b43e63c5bf8619a",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1726357542,
"narHash": "sha256-p4OrJL2weh0TRtaeu1fmNYP6+TOp/W2qdaIJxxQay4c=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "e524c57b1fa55d6ca9d8354c6ce1e538d2a1f47f",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"niri": {
"inputs": {
"flake-parts": "flake-parts",
"niri-stable": "niri-stable",
"niri-unstable": "niri-unstable",
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable",
"xwayland-satellite-stable": "xwayland-satellite-stable",
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
},
"locked": {
"lastModified": 1726404066,
"narHash": "sha256-Yt438MuAaZ3DEdRcY2qA3V/L2xCG4MoxR1ROv5PmTGU=",
"owner": "sodiboo",
"repo": "niri-flake",
"rev": "ed6c5c478bf87eddc276b192100cc16e76172383",
"type": "github"
},
"original": {
"owner": "sodiboo",
"repo": "niri-flake",
"type": "github"
}
},
"niri-stable": {
"flake": false,
"locked": {
"lastModified": 1726304152,
"narHash": "sha256-4YDrKMwXGVOBkeaISbxqf24rLuHvO98TnqxWYfgiSeg=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "6a48728ffb1e638839b07f9ab2f06b2adb41dc61",
"type": "github"
},
"original": {
"owner": "YaLTeR",
"ref": "v0.1.9",
"repo": "niri",
"type": "github"
}
},
"niri-unstable": {
"flake": false,
"locked": {
"lastModified": 1726304152,
"narHash": "sha256-4YDrKMwXGVOBkeaISbxqf24rLuHvO98TnqxWYfgiSeg=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "6a48728ffb1e638839b07f9ab2f06b2adb41dc61",
"type": "github"
},
"original": {
"owner": "YaLTeR",
"repo": "niri",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1726243404,
"narHash": "sha256-sjiGsMh+1cWXb53Tecsm4skyFNag33GPbVgCdfj3n9I=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "345c263f2f53a3710abe117f28a5cb86d0ba4059",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1725233747,
"narHash": "sha256-Ss8QWLXdr2JCBPcYChJhz4xJm+h/xjl4G0c0XlP6a74=",
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/356624c12086a18f2ea2825fed34523d60ccc4e3.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/356624c12086a18f2ea2825fed34523d60ccc4e3.tar.gz"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1726320982,
"narHash": "sha256-RuVXUwcYwaUeks6h3OLrEmg14z9aFXdWppTWPMTwdQw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "8f7492cce28977fbf8bd12c72af08b1f6c7c3e49",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"protontricks": {
"flake": false,
"locked": {
"lastModified": 1722530921,
"narHash": "sha256-t794WEMJx/JNX3gTMHfgquFWB7yXkleW07+QURm1NPM=",
"owner": "Matoking",
"repo": "protontricks",
"rev": "f7b1fa33b0438dbd72f7222703f8442e40edc510",
"type": "github"
},
"original": {
"owner": "Matoking",
"ref": "appinfo_v29",
"repo": "protontricks",
"type": "github"
}
},
"root": {
"inputs": {
"agenix": "agenix",
"binsider": "binsider",
"firefox-mod-theme": "firefox-mod-theme",
"home-manager": "home-manager",
"niri": "niri",
"nixpkgs": "nixpkgs",
"protontricks": "protontricks",
"rust-overlay": "rust-overlay",
"vdf-patch": "vdf-patch",
"zen-browser": "zen-browser"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1726382494,
"narHash": "sha256-T7W+ohiXe1IY0yf/PpS4wQItZ0SyRO+/v8kqNpMXlI4=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "ff13821613ffe5dbfeb4fe353b1f4bf291d831db",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"vdf-patch": {
"flake": false,
"locked": {
"lastModified": 1719784100,
"narHash": "sha256-OPonFrYrEFYtx0T2hvSYXl/idsm0iDPwqlnm1KbTPIo=",
"owner": "Matoking",
"repo": "vdf",
"rev": "981cad270c2558aeb8eccaf42cfcf9fabbbed199",
"type": "github"
},
"original": {
"owner": "Matoking",
"ref": "support_new_bvdf",
"repo": "vdf",
"type": "github"
}
},
"xwayland-satellite-stable": {
"flake": false,
"locked": {
"lastModified": 1718165778,
"narHash": "sha256-dwF9nI54a6Fo9XU5s4qmvMXSgCid3YQVGxch00qEMvI=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "b6d281967cb0b7bf1dfdb8d0f597b517dc4aa5c5",
"type": "github"
},
"original": {
"owner": "Supreeeme",
"ref": "v0.4",
"repo": "xwayland-satellite",
"type": "github"
}
},
"xwayland-satellite-unstable": {
"flake": false,
"locked": {
"lastModified": 1726378112,
"narHash": "sha256-OANPb73V/RQDqtpIcbzeJ93KuOHKFQv+1xXC44Ut7tY=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "b962a0f33b503aa39c9cf6919f488b664e5b79b4",
"type": "github"
},
"original": {
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"type": "github"
}
},
"zen-browser": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1726001766,
"narHash": "sha256-ADvEWfo0AuHR06ah1nnzOyhsG05/b5QpUc7vFNbiEfM=",
"owner": "MarceColl",
"repo": "zen-browser-flake",
"rev": "06505a088396e2c0b9ad100302502783a6bcdb40",
"type": "github"
},
"original": {
"owner": "MarceColl",
"repo": "zen-browser-flake",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

100
nix/home-manager/flake.nix Normal file
View File

@@ -0,0 +1,100 @@
{
description = "My nixOS flake for home-manager";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
niri = {
url = "github:sodiboo/niri-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
agenix = {
url = "github:ryantm/agenix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager";
};
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
binsider = {
url = "github:orhun/binsider";
inputs.nixpkgs.follows = "nixpkgs";
};
zen-browser = {
url = "github:MarceColl/zen-browser-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
# sources to patch protontricks as it doesn't work with latest steam beta
# https://github.com/Matoking/protontricks/issues/304#issuecomment-2280920826
protontricks = {
url = "github:Matoking/protontricks/appinfo_v29";
flake = false;
};
vdf-patch = {
url = "github:Matoking/vdf/support_new_bvdf";
flake = false;
};
firefox-mod-theme = {
url = "github:datguypiko/Firefox-Mod-Blur";
flake = false;
};
};
outputs =
{
self,
nixpkgs,
home-manager,
niri,
rust-overlay,
agenix,
...
}@inputs:
let
system = "x86_64-linux";
username = "primary";
homeDirectory = "/home/${username}";
hostname = nixpkgs.lib.strings.removeSuffix "\n" (builtins.readFile /etc/hostname);
in
{
homeConfigurations.${username} = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.${system};
extraSpecialArgs = {
inherit inputs username homeDirectory;
};
modules = [
./system-${hostname}.nix
niri.homeModules.config
agenix.homeManagerModules.age
# add declarative rust modules
(
{ pkgs, ... }:
{
nixpkgs.overlays = [ rust-overlay.overlays.default ];
# home-manager stuff
home = {
inherit username homeDirectory;
};
}
)
];
};
};
}

192
nix/home-manager/gui.nix Normal file
View File

@@ -0,0 +1,192 @@
{
pkgs,
lib,
inputs,
config,
homeDirectory,
...
}:
{
imports = [
./no-gui.nix
./progs/librewolf.nix
];
nixpkgs.config.allowUnfreePredicate =
pkg:
builtins.elem (lib.getName pkg) [
"apple_cursor"
"factorio-alpha"
];
age.secrets.factorio = {
file = ./secrets/factorio.age;
path = "${homeDirectory}/.secrets/factorio.nix";
};
home.packages = with pkgs; [
#calculator
gnome-calculator
#productivity stuff
libreoffice
hunspell # spellcheck
hunspellDicts.en_US # spellcheck dictionary
#video and audio downloading
parabolic
#soulseek client
nicotine-plus
#dark web browsing deep web browsing
tor-browser
#audio editing
audacity
#fonts
noto-fonts
noto-fonts-emoji
liberation_ttf
nerdfonts
jetbrains-mono
#for ebook reading
foliate
#audio mixer (pavucontrol but for pipewire)
pwvucontrol
#minecraft launcher
prismlauncher
mpv
mumble
system76-keyboard-configurator
mission-center
#jellyfin
finamp # music player
delfin # jellyfin client
signal-desktop
#accounting
gnucash
imagemagick
inkscape
nomacs
nautilus
darktable
lrcget
#openstreetmap contributing
josm
easyeffects
gparted
gpt4all
#small nicities
wl-clipboard # wl-copy & wl-paste
libnotify # notifications library
xdg-utils # xdg utils
gnome-disk-utility
puddletag
inputs.zen-browser.packages."${system}".specific
(factorio.override (
let
data = import "${config.age.secrets.factorio.path}";
in
{
username = data.username;
token = data.token;
}
))
];
# make chromium-based stuff use wayland
home.file.".config/chromium-flags.conf".text = "--ozone-platform-hint=auto";
#dark mode
dconf.settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
};
};
home.sessionVariables = {
TERMINAL = "alacritty";
};
#rofi for application launcher
programs.rofi = {
enable = true;
package = pkgs.rofi-wayland;
extraConfig = {
modi = "window,drun,ssh,combi";
combi-modi = "window,drun,ssh";
};
};
#Terminal emulator
programs.alacritty = {
enable = true;
package = pkgs.alacritty;
settings = import ./progs/alacritty.nix { inherit pkgs; };
};
#for trezor stuff
/*
trezor-udev-rules #trezor udev rules
trezord
trezor-suite
monero-gui
monero-cli
trezorctl
*/
#allow extra fonts to be detected by fontconfig
fonts.fontconfig.enable = true;
#gtk application theming
gtk = {
enable = true;
# make gtk3 applications look like libadwaita applications!
theme = {
package = pkgs.adw-gtk3;
name = "adw-gtk3-dark";
};
iconTheme = {
package = pkgs.adwaita-icon-theme;
name = "Adwaita";
};
};
#qt application theming
qt = {
enable = true;
style = {
name = "breeze-dark";
package = pkgs.kdePackages.breeze;
};
};
#macOS cursor!
home.pointerCursor = {
gtk.enable = true;
package = pkgs.apple-cursor;
name = "macOS";
size = 24;
};
}

175
nix/home-manager/no-gui.nix Normal file
View File

@@ -0,0 +1,175 @@
{
pkgs,
inputs,
lib,
...
}:
{
home.stateVersion = "24.11";
home.packages = with pkgs; [
#hex viewer
hexyl
#rust stuff
(rust-bin.selectLatestNightlyWith (
toolchain:
toolchain.default.override {
extensions = [
"rust-src"
"rust-analyzer"
"clippy"
"rustfmt"
"rust-std"
"cargo"
];
#thumbv7m-none-eabi target for stm32
targets = [ "thumbv7m-none-eabi" ];
}
))
#find typos in code
typos
#python formatter
ruff
#for website generation
hugo
#java development
google-java-format # formatter
jdk # java
jdt-language-server # lsp server
#for benchmaking stuff
hyperfine
#replacements for common posix tools
eza # ls replacement
bat # pretty `cat` clone
delta # viewer for `git` and `diff` output
dust # pretty `du` version
duf # better `df` clone
gping # `ping`... but with a graph!!
tldr # `man` but more straight-forward and simpler
ripgrep # grep, but written in rust, respects .gitignore, and very very fast, command is `rg`
#adds `sensors` command
lm_sensors
#rssfeed
newsboat
#HTML/CSS/JSON/ESLint language servers
vscode-langservers-extracted
just
pfetch-rs
waypipe
htop
bottom
wget
unzip
mold
gcc
compsize
killall
gnumake
sshfs
#nix formatter
nixfmt-rfc-style
#serial viewer
minicom
#"~~matt's~~ my trace route"
mtr
file
b3sum
ffmpeg-full
#microcontroller tooling
probe-rs
(python312.withPackages (
ps: with ps; [
python-lsp-server # lsp
python-lsp-ruff # ruff integration
]
))
binwalk
smartmontools
nil # nix lsp
yaml-language-server # yaml lsp
marksman # markdown lsp
#clang-format and clang-tidy
clang-tools
inputs.binsider.packages.${pkgs.system}.binsider
lldb
];
home.file.".cargo/config.toml".text = ''
[target.${lib.strings.removeSuffix "-linux" pkgs.system}-unknown-linux-gnu]
linker = "${pkgs.clang}/bin/clang"
rustflags = ["-C", "link-arg=-fuse-ld=${pkgs.mold}/bin/mold"]
'';
#default applications
home.sessionVariables = {
EDITOR = "hx";
};
#feed reader
programs.newsboat = {
enable = true;
#store rss feeds in a seperate file beacuse it's *a lot*
urls = import ./progs/rss.nix;
};
#git (self explanatory)
programs.git = {
enable = true;
package = pkgs.git;
userName = "Simon Gardling";
userEmail = "titaniumtown@proton.me";
#better way to view diffs
delta.enable = true;
#master -> main
extraConfig = {
init = {
defaultBranch = "main";
};
push.autoSetupRemote = true;
};
#gpg signing keys
signing = {
key = "9AB28AC10ECE533D";
signByDefault = true;
};
};
#fish shell!
programs.fish = import ./progs/fish.nix { inherit pkgs; };
#text editor
programs.helix = import ./progs/helix.nix { inherit pkgs; };
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
}

View File

@@ -0,0 +1,118 @@
{ pkgs }:
{
#use the fish shell
shell.program = "${pkgs.fish}/bin/fish";
#some programs can't handle alacritty
env.TERM = "xterm-256color";
window = {
#using a window manager, no decorations needed
decorations = "none";
#semi-transparent
opacity = 0.95;
#pading between the content of the terminal and the edge
padding = {
x = 10;
y = 10;
};
dimensions = {
columns = 80;
lines = 40;
};
};
scrolling = {
history = 1000;
multiplier = 3;
};
font =
let
baseFont = {
family = "JetBrains Mono Nerd Font";
style = "Regular";
};
in
{
size = 12;
normal = baseFont;
bold = baseFont // {
style = "Bold";
};
italic = baseFont // {
style = "Italic";
};
offset.y = 0;
glyph_offset.y = 0;
};
#color scheme
colors = {
primary = {
background = "0x131621";
foreground = "0xa6accd";
};
cursor = {
text = "CellBackground";
cursor = "CellForeground";
};
search = {
matches = {
foreground = "0x1b1e28";
background = "0xadd7ff";
};
focused_match = {
foreground = "0x1b1e28";
background = "0xadd7ff";
};
};
selection = {
text = "CellForeground";
background = "0x303340";
};
vi_mode_cursor = {
text = "CellBackground";
cursor = "CellForeground";
};
normal = {
black = "0x1b1e28";
red = "0xd0679d";
green = "0x5de4c7";
yellow = "0xfffac2";
blue = "#435c89";
magenta = "0xfcc5e9";
cyan = "0xadd7ff";
white = "0xffffff";
};
bright = {
black = "0xa6accd";
red = "0xd0679d";
green = "0x5de4c7";
yellow = "0xfffac2";
blue = "0xadd7ff";
magenta = "0xfae4fc";
cyan = "0x89ddff";
white = "0xffffff";
};
};
cursor = {
style = "Underline";
vi_mode_style = "Underline";
};
}

View File

@@ -0,0 +1,39 @@
{ homeDirectory }:
{
home = {
location = {
sourceDirectories = [
"/etc/nixos"
"${homeDirectory}/.librewolf"
"${homeDirectory}/dotfiles"
"${homeDirectory}/.config/home-manager"
"${homeDirectory}/.config/Signal"
"${homeDirectory}/Documents"
"${homeDirectory}/projects"
"${homeDirectory}/Pictures"
"${homeDirectory}/school"
"${homeDirectory}/.wallpaper.png"
"${homeDirectory}/.ssh"
"${homeDirectory}/justfile"
"${homeDirectory}/.local/share/fish"
"${homeDirectory}/.gnupg"
];
excludeHomeManagerSymlinks = true;
repositories = [ "ssh://server-public/mnt/bak/laptop" ];
};
retention = {
keepHourly = 48;
keepDaily = 30;
keepWeekly = 26;
keepMonthly = 24;
keepYearly = 10;
};
storage = {
#super secret password location (maybe I should find a way to store secrets properly)
encryptionPasscommand = "cat ${homeDirectory}/Documents/secrets/borg_bak_pass";
};
};
}

View File

@@ -0,0 +1,57 @@
{ pkgs }:
{
enable = true;
interactiveShellInit = ''
#disable greeting
set fish_greeting
#fixes gnupg password entry
export GPG_TTY=(${pkgs.coreutils}/bin/tty)
#pfetch on shell start
PF_INFO="ascii title os host kernel uptime memory editor wm" ${pkgs.pfetch-rs}/bin/pfetch
'';
shellAliases = {
c = "${pkgs.cargo}/bin/cargo";
cr = "${pkgs.cargo}/bin/cargo run";
cb = "${pkgs.cargo}/bin/cargo build";
# from DistroTube's dot files: Changing "ls" to "eza"
ls = "${pkgs.eza}/bin/eza -al --color=always --group-directories-first";
la = "${pkgs.eza}/bin/eza -a --color=always --group-directories-first";
ll = "${pkgs.eza}/bin/eza -l --color=always --group-directories-first";
lt = "${pkgs.eza}/bin/eza -aT --color=always --group-directories-first";
# gets the largest files in a git repo's history
"git-size" = ''
${pkgs.git}/bin/git rev-list --objects --all |
${pkgs.git}/bin/git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' |
${pkgs.gnused}/bin/sed -n 's/^blob //p' |
${pkgs.coreutils}/bin/sort --numeric-sort --key=2 |
${pkgs.coreutils}/bin/cut -c 1-12,41- |
${pkgs.coreutils}/bin/numfmt --field=2 --to=iec-i --suffix=B --padding=7 --round=nearest'';
#aliases for (I think) macos commands
pbcopy = "${pkgs.wl-clipboard}/bin/wl-copy";
pbpaste = "${pkgs.wl-clipboard}/bin/wl-paste";
};
shellInit = ''
fish_add_path ~/.local/bin
fish_add_path ~/.cargo/bin
set hydro_color_pwd 62A
set hydro_color_error red
set hydro_color_duration yellow
set hydro_color_prompt green
set hydro_color_git blue
'';
plugins = [
{
name = "hydro";
src = pkgs.fishPlugins.hydro.src;
}
];
}

View File

@@ -0,0 +1,288 @@
{ pkgs }:
{
enable = true;
package = pkgs.helix;
settings = {
theme = "my_theme";
editor = {
cursor-shape = {
insert = "bar";
normal = "block";
select = "underline";
};
file-picker = {
hidden = false;
};
#wrapping!!
soft-wrap.enable = true;
};
};
languages = {
language = [
{
name = "rust";
auto-format = true;
}
];
};
themes = {
#modified fleet_dark theme
my_theme =
let
white = "#ffffff";
gray-120 = "#d1d1d1";
gray-110 = "#c2c2c2";
gray-100 = "#a0a0a0";
gray-90 = "#898989";
gray-80 = "#767676";
gray-70 = "#5d5d5d";
gray-60 = "#484848";
gray-50 = "#383838";
gray-40 = "#333333";
gray-30 = "#2d2d2d";
gray-20 = "#292929";
gray-15 = "#1F1F1F";
gray-10 = "#181818";
black = "#000000";
blue-110 = "#6daaf7";
blue-100 = "#4d9bf8";
blue-90 = "#3691f9";
blue-80 = "#1a85f6";
blue-70 = "#0273eb";
blue-60 = "#0c6ddd";
blue-50 = "#195eb5";
blue-40 = "#194176";
blue-30 = "#163764";
blue-20 = "#132c4f";
blue-10 = "#0b1b32";
red-80 = "#ec7388";
red-70 = "#ea4b67";
red-60 = "#d93953";
red-50 = "#ce364d";
red-40 = "#c03248";
red-30 = "#a72a3f";
red-20 = "#761b2d";
red-10 = "#390813";
green-50 = "#4ca988";
green-40 = "#3ea17f";
green-30 = "#028764";
green-20 = "#134939";
green-10 = "#081f19";
yellow-60 = "#f8ab17";
yellow-50 = "#e1971b";
yellow-40 = "#b5791f";
yellow-30 = "#7c511a";
yellow-20 = "#5a3a14";
yellow-10 = "#281806";
purple-20 = "#c07bf3";
purple-10 = "#b35def";
blue = "#87C3FF";
blue-light = "#ADD1DE";
coral = "#CC7C8A";
cyan = "#82D2CE";
cyan-dark = "#779E9E";
lime = "#A8CC7C";
orange = "#E09B70";
pink = "#E394DC";
violet = "#AF9CFF";
yellow = "#EBC88D";
in
{
"attribute" = lime;
"type" = blue;
"type.return" = blue-light;
"type.parameter" = blue-light;
"constructor" = yellow;
"constant" = violet;
"constant.builtin.boolean" = cyan;
"constant.character" = yellow;
"constant.character.escape" = cyan;
"constant.numeric" = yellow;
"string" = pink;
"string.regexp" = cyan;
"string.special" = {
fg = yellow;
modifiers = [ "underlined" ];
}; # .path / .url / .symbol
"comment" = gray-90; # .line
# "comment.block" = {} # .documentation
"variable" = gray-120; # .builtin
"variable.builtin" = {
fg = coral;
};
# "variable.other" = {} # .member
"variable.other.member" = violet;
"label" = yellow;
"keyword" = cyan; # .operator / .directive / .function
"function" = yellow;
"function.declaration" = "#EFEFEF";
"function.macro" = lime;
"function.builtin" = lime;
"function.special" = lime;
#"function.declaration.method" = { fg = "lightest", modifiers = ["bold"] } #depends on #4892
"tag" = blue;
"special" = lime;
"namespace" = blue;
# used in theming
# "markup" = {} # .normal / .quote / .raw
# "markup.normal" = {} # .completion / .hover
"markup.bold" = {
modifiers = [ "bold" ];
};
"markup.italic" = {
modifiers = [ "italic" ];
};
"markup.strikethrough" = {
modifiers = [ "crossed_out" ];
};
"markup.heading" = {
fg = cyan;
modifiers = [ "bold" ];
}; # .marker / .1 / .2 / .3 / .4 / .5 / .6
"markup.list" = pink; # .unnumbered / .numbered
"markup.list.numbered" = cyan;
"markup.list.unnumbered" = cyan;
# "markup.link" = "green"
"markup.link.url" = {
fg = pink;
modifiers = [
"italic"
"underlined"
];
};
"markup.link.text" = cyan;
"markup.link.label" = purple-20;
"markup.quote" = pink;
"markup.raw" = pink;
"markup.raw.inline" = cyan; # .completion / .hover
"markup.raw.block" = "#EB83E2";
"diff.plus" = green-50;
"diff.minus" = red-50;
"diff.delta" = blue-80;
# ui specific
# "ui.background" = { bg = gray-10; }; # .separator
"ui.background" = { };
"ui.statusline" = {
fg = gray-120;
bg = gray-20;
}; # .inactive / .normal / .insert / .select
"ui.statusline.normal" = {
fg = gray-120;
bg = gray-20;
};
"ui.statusline.inactive" = {
fg = gray-90;
};
"ui.statusline.insert" = {
fg = gray-20;
bg = blue-90;
};
"ui.statusline.select" = {
fg = gray-20;
bg = yellow-60;
};
"ui.cursor" = {
modifiers = [ "reversed" ];
}; # .insert / .select / .match / .primary
"ui.cursor.match" = {
bg = blue-30;
}; # .insert / .select / .match / .primary
"ui.selection" = {
bg = gray-50;
}; # .primary
"ui.selection.primary" = {
bg = blue-40;
};
"ui.cursorline" = {
bg = gray-15;
};
"ui.linenr" = gray-70;
"ui.linenr.selected" = gray-110;
"ui.popup" = {
fg = gray-120;
bg = gray-20;
}; # .info
"ui.window" = {
fg = gray-50;
};
"ui.help" = {
fg = gray-120;
bg = gray-20;
};
"ui.menu" = {
fg = gray-120;
bg = gray-20;
}; # .selected
"ui.menu.selected" = {
fg = white;
bg = blue-40;
}; # .selected
# Calculated as #ffffff with 30% opacity
"ui.menu.scroll" = {
fg = "#dfdfdf";
};
"ui.text" = gray-120; # .focus / .info
"ui.text.focus" = {
fg = white;
bg = blue-40;
};
"ui.virtual" = gray-90; # .whitespace
"ui.virtual.inlay-hint" = {
fg = gray-70;
};
"ui.virtual.ruler" = {
bg = gray-20;
};
"hint" = gray-80;
"info" = "#A366C4";
"warning" = "#FACb66";
"error" = "#FF5269";
"diagnostic.hint" = {
underline = {
color = gray-80;
style = "line";
};
};
"diagnostic.info" = {
underline = {
color = "#A366C4";
style = "line";
};
};
"diagnostic.warning" = {
underline = {
color = "#FACB66";
style = "line";
};
};
"diagnostic.error" = {
underline = {
color = "#FF5269";
style = "line";
};
};
"diagnostic.unnecessary" = {
modifiers = [ "dim" ];
};
"diagnostic.deprecated" = {
modifiers = [ "crossed_out" ];
};
};
};
}

View File

@@ -0,0 +1,77 @@
{ pkgs, inputs, ... }:
{
home.packages = with pkgs; [ librewolf ];
programs.librewolf = {
enable = true;
settings = {
"webgl.disabled" = false;
"privacy.resistFingerprinting" = false;
"privacy.clearOnShutdown.history" = false;
"privacy.clearOnShutdown.cookies" = false;
"network.cookie.lifetimePolicy" = 0;
"general.useragent.compatMode.firefox" = true;
"identity.fxaccounts.enabled" = true;
"services.sync.prefs.sync.privacy.clearOnShutdown.cookies" = false;
"services.sync.prefs.sync.privacy.clearOnShutdown_v2.cookiesAndStorage" = false;
"general.useragent.override" = "Mozilla/5.0 (X11; Linux x86_64; rv:${pkgs.firefox.version}) Gecko/20100101 Firefox/${pkgs.firefox.version}";
"extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
# For themeing
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
"browser.tabs.drawInTitlebar" = true;
"svg.context-properties.content.enabled" = true;
#fake location, FIT (just about)
"geo.provider.network.url" =
"data:application/json,"
+ builtins.toJSON {
location = {
lat = 28.0749;
lng = -80.6302;
};
accuracy = 1.0;
};
};
};
home.file =
let
chromeTheme = ".librewolf/tckj7njq.default-release/chrome";
firefoxThemeFile = file: src: {
target = "${chromeTheme}/${file}";
source = "${inputs.firefox-mod-theme}/${src}/${file}";
recursive = true;
};
baseThemeFile = {
file = "";
src = "";
};
modThemeFiles = [
{
file = "userChrome.css";
}
{
file = "userContent.css";
}
{
file = "ASSETS";
}
];
in
builtins.listToAttrs (
map (f: {
name = "firefox-theme-${f.file}";
value = firefoxThemeFile f.file f.src;
}) (map (f: baseThemeFile // f) modThemeFiles)
);
home.sessionVariables = {
BROWSER = "librewolf";
};
}

View File

@@ -0,0 +1,167 @@
{
config,
pkgs,
homeDirectory,
}:
{
prefer-no-csd = true;
spawn-at-startup = [
#waybar
{ command = [ "${pkgs.waybar}/bin/waybar" ]; }
#swaybg works on more than just sway (sets a wallpaper)
{
command = [
"${pkgs.swaybg}/bin/swaybg"
"-m"
"center"
"-i"
"${homeDirectory}/.wallpaper.png"
];
}
];
window-rules = [
{ draw-border-with-background = false; }
{
geometry-corner-radius = {
top-left = 10.0;
top-right = 10.0;
bottom-right = 10.0;
bottom-left = 10.0;
};
}
{ clip-to-geometry = true; }
];
binds = with config.lib.niri.actions; {
#application launcher
"Mod+Space".action = spawn [
"rofi"
"-show"
"combi"
];
#open a terminal
"Mod+T".action = spawn "${pkgs.alacritty}/bin/alacritty";
#lock the screen
"Mod+X".action = spawn "${pkgs.swaylock}/bin/swaylock";
#screenshotting
"Print".action = screenshot;
"Ctrl+Print".action = screenshot-screen;
"Alt+Print".action = screenshot-window;
#Volume control
"XF86AudioRaiseVolume".action = spawn [
"${pkgs.avizo}/bin/volumectl"
"-u"
"up"
];
"XF86AudioLowerVolume".action = spawn [
"${pkgs.avizo}/bin/volumectl"
"-u"
"down"
];
"XF86AudioMute".action = spawn [
"${pkgs.avizo}/bin/volumectl"
"toggle-mute"
];
"XF86AudioMicMute".action = spawn [
"${pkgs.avizo}/bin/volumectl"
"-m"
"toggle-mute"
];
#Display Brightness control
"XF86MonBrightnessUp".action = spawn [
"${pkgs.avizo}/bin/lightctl"
"up"
];
"XF86MonBrightnessDown".action = spawn [
"${pkgs.avizo}/bin/lightctl"
"down"
];
#Force close a window
"Mod+Q".action = close-window;
"Mod+Shift+Q".action = quit;
#bindings for like window management ig
"Mod+Left".action = focus-column-left;
"Mod+Down".action = focus-window-down;
"Mod+Up".action = focus-window-up;
"Mod+Right".action = focus-column-right;
"Mod+H".action = focus-column-left;
"Mod+J".action = focus-window-down;
"Mod+K".action = focus-window-up;
"Mod+L".action = focus-column-right;
"Mod+Ctrl+Left".action = move-column-left;
"Mod+Ctrl+Down".action = move-window-down;
"Mod+Ctrl+Up".action = move-window-up;
"Mod+Ctrl+Right".action = move-column-right;
"Mod+Ctrl+H".action = move-column-left;
"Mod+Ctrl+J".action = move-window-down;
"Mod+Ctrl+K".action = move-window-up;
"Mod+Ctrl+L".action = move-column-right;
#fine adjustments to height and width of window
"Mod+Minus".action = set-column-width "-10%";
"Mod+Equal".action = set-column-width "+10%";
"Mod+Shift+Minus".action = set-window-height "-10%";
"Mod+Shift+Equal".action = set-window-height "+10%";
"Mod+Home".action = focus-column-first;
"Mod+End".action = focus-column-last;
"Mod+Ctrl+Home".action = move-column-to-first;
"Mod+Ctrl+End".action = move-column-to-last;
"Mod+Shift+Left".action = focus-monitor-left;
"Mod+Shift+Down".action = focus-monitor-down;
"Mod+Shift+Up".action = focus-monitor-up;
"Mod+Shift+Right".action = focus-monitor-right;
"Mod+Shift+H".action = focus-monitor-left;
"Mod+Shift+J".action = focus-monitor-down;
"Mod+Shift+K".action = focus-monitor-up;
"Mod+Shift+L".action = focus-monitor-right;
"Mod+Shift+Ctrl+Left".action = move-column-to-monitor-left;
"Mod+Shift+Ctrl+Down".action = move-column-to-monitor-down;
"Mod+Shift+Ctrl+Up".action = move-column-to-monitor-up;
"Mod+Shift+Ctrl+Right".action = move-column-to-monitor-right;
"Mod+Shift+Ctrl+H".action = move-column-to-monitor-left;
"Mod+Shift+Ctrl+J".action = move-column-to-monitor-down;
"Mod+Shift+Ctrl+K".action = move-column-to-monitor-up;
"Mod+Shift+Ctrl+L".action = move-column-to-monitor-right;
"Mod+Page_Down".action = focus-workspace-down;
"Mod+Page_Up".action = focus-workspace-up;
"Mod+U".action = focus-workspace-down;
"Mod+I".action = focus-workspace-up;
#move a window up and down workspaces
"Mod+Ctrl+Page_Down".action = move-column-to-workspace-down;
"Mod+Ctrl+Page_Up".action = move-column-to-workspace-up;
"Mod+Ctrl+U".action = move-column-to-workspace-down;
"Mod+Ctrl+I".action = move-column-to-workspace-up;
#does little squeeze thing into the left or right position with another window
"Mod+BracketLeft".action = consume-or-expel-window-left;
"Mod+BracketRight".action = consume-or-expel-window-right;
"Mod+R".action = switch-preset-column-width;
"Mod+F".action = maximize-column;
"Mod+Shift+F".action = fullscreen-window;
"Mod+C".action = center-column;
};
}

View File

@@ -0,0 +1,91 @@
[
{
title = "Stratechery";
url = "https://stratechery.passport.online/feed/rss/2gi1tPZ8Ta36Tsx7rDLM5P";
}
{
title = "Factorio Blog";
url = "https://www.factorio.com/blog/rss";
}
{
title = "Firefox Nightly News";
url = "https://blog.nightly.mozilla.org/feed/";
}
{
title = "Servo Blog";
url = "https://servo.org/blog/feed.xml";
}
{
title = "Alyssa Rosenzweig";
url = "https://rosenzweig.io/feed.xml";
}
{
title = "Marc's Blog";
url = "https://brooker.co.za/blog/rss.xml";
}
{
title = "Fabien Sanglard";
url = "https://fabiensanglard.net/rss.xml";
}
{
title = "Xuanwo's Blog";
url = "https://xuanwo.io/index.xml";
}
{
title = "Carlos Galdino";
url = "https://blog.carlosgaldino.com/atom.xml";
}
{
title = "soatok";
url = "https://soatok.blog/feed/";
}
{
title = "Jack Garbus";
url = "https://jarbus.net/index.xml";
}
{
title = "Terence Eden";
url = "https://shkspr.mobi/blog/feed/atom/";
}
{
title = "GioCities";
url = "https://blog.giovanh.com/feeds/atom.xml";
}
{
title = "mcyoung";
url = "https://mcyoung.xyz/atom.xml";
}
{
title = "Embrace the Red";
url = "https://embracethered.com/blog/index.xml";
}
{
title = "Chips and Cheese";
url = "https://chipsandcheese.com/feed/";
}
{
title = "System5";
url = "https://blogsystem5.substack.com/feed";
}
{
title = "lwn";
url = "https://lwn.net/headlines/Features";
}
]

View File

@@ -0,0 +1,31 @@
{
color = "24273a";
bs-hl-color = "f4dbd6";
caps-lock-bs-hl-color = "f4dbd6";
caps-lock-key-hl-color = "a6da95";
inside-color = 0;
inside-clear-color = 0;
inside-caps-lock-color = 0;
inside-ver-color = 0;
inside-wrong-color = 0;
key-hl-color = "a6da95";
layout-bg-color = 0;
layout-border-color = 0;
layout-text-color = "cad3f5";
line-color = 0;
line-clear-color = 0;
line-caps-lock-color = 0;
line-ver-color = 0;
line-wrong-color = 0;
ring-color = "b7bdf8";
ring-clear-color = "f4dbd6";
ring-caps-lock-color = "f5a97f";
ring-ver-color = "8aadf4";
ring-wrong-color = "ee99a0";
separator-color = 0;
text-color = "cad3f5";
text-clear-color = "f4dbd6";
text-caps-lock-color = "f5a97f";
text-ver-color = "8aadf4";
text-wrong-color = "ee99a0";
}

View File

@@ -0,0 +1,253 @@
{ pkgs }:
{
enable = true;
settings.mainBar = {
layer = "top";
position = "top";
# mod = "dock";
# exclusive = true;
# gtk-layer-shell = true;
margin-bottom = -1;
# passthrough = false;
height = 32;
modules-left =
[
];
modules-center = [ "clock" ];
modules-right = [
"cpu"
"memory"
"tray"
"pulseaudio"
"network"
"battery"
];
cpu = {
interval = 5;
format = " {usage}%";
max-length = 10;
};
memory = {
interval = 10;
format = " {percentage}%";
max-length = 10;
tooltip = true;
tooltip-format = "RAM - {used:0.1f}GiB used";
};
tray = {
icon-size = 18;
spacing = 3;
};
clock = {
format = " {:%R\n %d.%m.%Y}";
tooltip-format = "<tt><small>{calendar}</small></tt>";
calendar = {
mode = "year";
mode-mon-col = 3;
weeks-pos = "right";
on-scroll = 1;
on-click-right = "mode";
format = {
months = "<span color='#ffead3'><b>{}</b></span>";
days = "<span color='#ecc6d9'><b>{}</b></span>";
weeks = "<span color='#99ffdd'><b>W{}</b></span>";
weekdays = "<span color='#ffcc66'><b>{}</b></span>";
today = "<span color='#ff6699'><b><u>{}</u></b></span>";
};
};
actions = {
on-click-right = "mode";
on-click-forward = "tz_up";
on-click-backward = "tz_down";
on-scroll-up = "shift_up";
on-scroll-down = "shift_down";
};
};
network = {
format-wifi = " {icon}";
format-ethernet = " ";
format-disconnected = "󰌙 ";
format-icons = [
"󰤯 "
"󰤟 "
"󰤢 "
"󰤢 "
"󰤨 "
];
};
battery = {
states = {
good = 95;
warning = 30;
critical = 20;
};
format = " {icon} {capacity}%";
format-charging = " {capacity}%";
format-plugged = " {capacity}%";
format-alt = "{time} {icon}";
format-icons = [
"󰂎"
"󰁺"
"󰁻"
"󰁼"
"󰁽"
"󰁾"
"󰁿"
"󰂀"
"󰂁"
"󰂂"
"󰁹"
];
};
# not actually pulseaudio-specific
pulseaudio = {
max-volume = 100;
scroll-step = 10;
format = "{icon}";
tooltip-format = "{volume}%";
format-muted = "🔇";
format-icons = {
default = [
" "
" "
" "
];
};
on-click = "${pkgs.pwvucontrol}/bin/pwvucontrol";
};
};
style = ''
/*base background color*/
@define-color bg_main rgba(25, 25, 25, 1.0);
@define-color bg_main_tooltip rgba(0, 0, 0, 0.7);
/*base background color of selections */
@define-color bg_hover rgba(200, 200, 200, 0.3);
/*base background color of active elements */
@define-color bg_active rgba(100, 100, 100, 0.5);
/*base border color*/
@define-color border_main rgba(255, 255, 255, 0.2);
/*text color for entries, views and content in general */
@define-color content_main white;
/*text color for entries that are unselected */
@define-color content_inactive rgba(255, 255, 255, 0.25);
* {
text-shadow: none;
box-shadow: none;
border: none;
border-radius: 0;
font-family: "Segoe UI", "Ubuntu";
font-weight: 600;
font-size: 12.7px;
}
window#waybar {
background: @bg_main;
border-top: 0;
color: @content_main;
}
tooltip {
background: @bg_main_tooltip;
border-radius: 5px;
border-width: 1px;
border-style: solid;
border-color: @border_main;
}
tooltip label {
color: @content_main;
}
#taskbar {
}
#taskbar button {
min-width: 130px;
border-bottom: 3px solid rgba(255, 255, 255, 0.3);
margin-left: 2px;
margin-right: 2px;
padding-left: 8px;
padding-right: 8px;
color: white;
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
}
#taskbar button.active {
border-bottom: 3px solid white;
background: @bg_active;
}
#taskbar button:hover {
border-bottom: 3px solid white;
background: @bg_hover;
color: @content_main;
}
#cpu, #memory {
padding:3px;
}
#window {
border-radius: 10px;
margin-left: 20px;
margin-right: 20px;
}
#tray {
margin-left: 5px;
margin-right: 5px;
}
#tray > .passive {
border-bottom: none;
}
#tray > .active {
border-bottom: 3px solid white;
}
#tray > .needs-attention {
border-bottom: 3px solid @warning_color;
}
#tray > widget {
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
}
#tray > widget:hover {
background: @bg_hover;
}
#pulseaudio {
font-family: "JetBrainsMono Nerd Font";
padding-left: 3px;
padding-right: 3px;
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
}
#pulseaudio:hover {
background: @bg_hover;
}
#network {
padding-left: 3px;
padding-right: 3px;
}
#clock {
padding-right: 5px;
padding-left: 5px;
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
}
#clock:hover {
background: @bg_hover;
}
'';
}

Binary file not shown.

View File

@@ -0,0 +1,10 @@
let
laptop = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4jL6gYOunUlUtPvGdML0cpbKSsPNqQ1jit4E7U1RyH";
desktop = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBJjT5QZ3zRDb+V6Em20EYpSEgPW5e/U+06uQGJdraxi";
in
{
"factorio.age".publicKeys = [
laptop
desktop
];
}

View File

@@ -0,0 +1,161 @@
{
config,
pkgs,
lib,
homeDirectory,
...
}:
{
imports = [ ./gui.nix ];
home.packages = with pkgs; [
wdisplays
intel-gpu-tools
swaylock
#manage bluetooth devices
blueman
];
#bluetooth manager
services.blueman-applet.enable = true;
#notification daemon
services.dunst = {
enable = true;
package = pkgs.dunst;
};
#window manager
programs.niri = {
settings = import ./progs/niri.nix { inherit config pkgs homeDirectory; };
};
programs.swaylock = {
enable = true;
settings = import ./progs/swaylock.nix;
};
#waybar for status bar
programs.waybar = import ./progs/waybar.nix { inherit pkgs; };
#backup utility
programs.borgmatic = {
enable = true;
package = pkgs.borgmatic;
backups = import ./progs/borg.nix { inherit homeDirectory; };
};
# https://community.frame.work/t/speakers-sound-quality/1078/83
# Filter: ON HPQ Fc 100.0 Hz Gain 0.0 dB Q 1.0
# Filter: ON PK Fc 150.0 Hz Gain 4.02 dB Q 3.0
# Filter: ON PK Fc 600.0 Hz Gain -5.07 dB Q 4.000000000000008
# Filter: ON PK Fc 1200.0 Hz Gain -3.49 dB Q 4.17
# Filter: ON PK Fc 2000.0 Hz Gain 1.43 dB Q 4.0
# Filter: ON PK Fc 5300.0 Hz Gain 3.84 dB Q 2.64
# Filter: ON HSC Fc 6000.0 Hz Gain 4.02 dB Q 4.36
# Filter: ON PK Fc 7500.0 Hz Gain -2.09 dB Q 3.0
# Filter: ON PK Fc 8000.0 Hz Gain 2.01 dB Q 4.36
# Filter: ON PK Fc 900.0 Hz Gain -4.12 dB Q 5.909999999999967
home.file.".config/easyeffects/output/framework.json".text =
let
baseBand = {
mode = "RLC (BT)";
mute = false;
solo = false;
slope = "1x";
type = "Bell";
};
bandList = [
{
frequency = 100.0;
gain = 0.0;
q = 1.0;
slope = "x4";
type = "Hi-pass";
}
{
frequency = 150.0;
gain = 4.02;
q = 3.0;
}
{
frequency = 600.0;
gain = -5.07;
q = 4.000000000000008;
}
{
frequency = 1200.0;
gain = -3.49;
q = 4.17;
}
{
frequency = 2000.0;
gain = 1.43;
q = 4.0;
}
{
frequency = 5300.0;
gain = 3.84;
q = 2.64;
}
{
frequency = 6000.0;
gain = 4.02;
q = 4.36;
type = "Hi-shelf";
}
{
frequency = 7500.0;
gain = -2.09;
q = 3.0;
}
{
frequency = 8000.0;
gain = 2.01;
q = 4.36;
}
{
frequency = 900.0;
gain = -4.12;
q = 5.909999999999967;
}
];
bands = builtins.listToAttrs (
map (f: {
name = "band${toString f.snd}";
value = baseBand // f.fst;
}) (lib.lists.zipLists bandList (lib.range 0 (lib.length (bandList))))
);
in
builtins.toJSON {
output = {
blocklist = [ ];
equalizer = {
balance = 0.0;
bypass = false;
input-gain = 0.0;
left = bands;
right = bands;
mode = "IIR";
num-bands = 10;
output-gain = -1.5;
pitch-left = 0.0;
pitch-right = 0.0;
split-channels = false;
};
plugins_order = [
"equalizer"
];
};
};
services.easyeffects = {
enable = true;
package = pkgs.easyeffects;
preset = "framework";
};
}

View File

@@ -0,0 +1,45 @@
{
pkgs,
inputs,
lib,
...
}:
{
imports = [ ./gui.nix ];
nixpkgs.config.allowUnfree = true;
nixpkgs.overlays = [
# Add a protontricks-beta package so we can use protontricks with latest steam beta
# https://github.com/Matoking/protontricks/issues/304#issuecomment-2280920826
(
final: prev:
let
ps = prev.python312Packages;
in
{
vdf-patch = ps.vdf.overrideAttrs (oldAttrs: {
src = inputs.vdf-patch;
});
protontricks-beta = prev.protontricks.overrideAttrs (oldAttrs: {
src = inputs.protontricks;
propagatedBuildInputs = [
ps.setuptools # implicit dependency, used to find data/icon_placeholder.png
final.vdf-patch
ps.pillow
];
});
}
)
];
home.packages = with pkgs; [
protontricks-beta
beatsabermodmanager
protonup-qt
];
programs.alacritty.settings = {
window.decorations = lib.mkForce "full";
window.opacity = lib.mkForce 1.0;
};
}