feat: add nix code formatter

This commit is contained in:
matt1432 2023-11-22 15:33:16 -05:00
parent 231fd16756
commit 1fae0a73d3
52 changed files with 702 additions and 609 deletions

View file

@ -1,4 +1,4 @@
{ ... }: { {...}: {
nix = { nix = {
settings = { settings = {
substituters = [ substituters = [

View file

@ -1,16 +1,17 @@
{ config {
, home-manager config,
, lib home-manager,
, nixpkgs lib,
, nixpkgs-wayland nixpkgs,
, nix-index-database nixpkgs-wayland,
, nh nix-index-database,
, nur nh,
, nix-melt nur,
, nurl nix-melt,
, coc-stylelintplus nurl,
, pkgs coc-stylelintplus,
, ... pkgs,
...
}: { }: {
imports = [ imports = [
./cachix.nix ./cachix.nix
@ -29,7 +30,7 @@
nix = { nix = {
# Edit nix.conf # Edit nix.conf
settings = { settings = {
experimental-features = [ "nix-command" "flakes" ]; experimental-features = ["nix-command" "flakes"];
keep-outputs = true; keep-outputs = true;
keep-derivations = true; keep-derivations = true;
auto-optimise-store = true; auto-optimise-store = true;
@ -83,36 +84,34 @@
./home/tmux.nix ./home/tmux.nix
./device-vars.nix ./device-vars.nix
({ osConfig, ... }: { ({osConfig, ...}: {
services.device-vars = osConfig.services.device-vars; services.device-vars = osConfig.services.device-vars;
}) })
]; ];
home.packages = [ home.packages =
nix-melt.packages.x86_64-linux.default [
nurl.packages.x86_64-linux.default nix-melt.packages.x86_64-linux.default
] ++ nurl.packages.x86_64-linux.default
]
(with config.nur.repos.rycee; [ ++ (with config.nur.repos.rycee; [
mozilla-addons-to-nix mozilla-addons-to-nix
]) ++ ])
++ (with pkgs.nodePackages; [
(with pkgs.nodePackages; [ undollar
undollar ])
]) ++ ++ (with pkgs; [
dracula-theme
(with pkgs; [ neofetch
dracula-theme progress
neofetch wget
progress tree
wget mosh
tree rsync
mosh killall
rsync imagemagick
killall usbutils
imagemagick ]);
usbutils
]);
home.stateVersion = lib.mkDefault "23.05"; home.stateVersion = lib.mkDefault "23.05";
}; };

View file

@ -1,10 +1,10 @@
{ lib, ... }: { {lib, ...}: {
options.services.device-vars = with lib; { options.services.device-vars = with lib; {
username = mkOption { username = mkOption {
description = '' description = ''
Username that was defined at the initial setup process Username that was defined at the initial setup process
''; '';
type = types.nullOr types.str; type = types.nullOr types.str;
}; };
configDir = mkOption { configDir = mkOption {

View file

@ -1,15 +1,18 @@
{ config, lib, ... }: { {
config,
lib,
...
}: {
imports = [ imports = [
./programs.nix ./programs.nix
]; ];
programs = { programs = {
starship = let starship = let
textColor = "#e3e5e5"; textColor = "#e3e5e5";
firstColor = "#bd93f9"; firstColor = "#bd93f9";
secondColor = "#715895"; secondColor = "#715895";
thirdColor = "#382c4a"; thirdColor = "#382c4a";
fourthColor = "#120e18"; fourthColor = "#120e18";
in { in {
enable = true; enable = true;
@ -93,10 +96,10 @@
enable = true; enable = true;
enableCompletion = true; enableCompletion = true;
historyFile = "\$HOME/.cache/.bash_history"; historyFile = "\$HOME/.cache/.bash_history";
historyFileSize = 100000; # default historyFileSize = 100000; # default
historySize = 10000; # default historySize = 10000; # default
historyControl = [ historyControl = [
"erasedups" "erasedups"
"ignorespace" "ignorespace"
]; ];
@ -119,29 +122,29 @@
]; ];
shellAliases = { shellAliases = {
sudo = "sudo "; sudo = "sudo ";
frick = "sudo $(fc -ln -1)"; frick = "sudo $(fc -ln -1)";
nivm = "nvim"; nivm = "nvim";
nivim = "nvim"; nivim = "nvim";
tmux = "tmux -2"; tmux = "tmux -2";
ls = "ls -lah --color=auto"; ls = "ls -lah --color=auto";
tree = "tree -a -I node_modules"; tree = "tree -a -I node_modules";
cp = "cp -r"; cp = "cp -r";
chore = "(cd ~/.nix; git add flake.lock; git commit -m 'chore: update flake.lock'; git push)"; chore = "(cd ~/.nix; git add flake.lock; git commit -m 'chore: update flake.lock'; git push)";
tup = "tailscale up --login-server https://headscale.nelim.org"; tup = "tailscale up --login-server https://headscale.nelim.org";
pc = "mosh matt@binto -- tmux -2u new -At laptop"; pc = "mosh matt@binto -- tmux -2u new -At laptop";
oksys = "mosh matt@oksys -- tmux -2u new -At laptop"; oksys = "mosh matt@oksys -- tmux -2u new -At laptop";
pve = "mosh matt@pve -- tmux -2u new -At laptop"; pve = "mosh matt@pve -- tmux -2u new -At laptop";
mc = "mosh mc@mc -- tmux -2u new -At laptop"; mc = "mosh mc@mc -- tmux -2u new -At laptop";
pod = "mosh matt@pve -- ssh -t -p 6768 matt@10.0.0.122 'tmux -2u new -At laptop'"; pod = "mosh matt@pve -- ssh -t -p 6768 matt@10.0.0.122 'tmux -2u new -At laptop'";
jelly = "mosh matt@pve -- ssh -t matt@10.0.0.123 'tmux -2u new -At laptop'"; jelly = "mosh matt@pve -- ssh -t matt@10.0.0.123 'tmux -2u new -At laptop'";
qbit = "mosh matt@pve -- ssh -t matt@10.0.0.128 'tmux -2u new -At laptop'"; qbit = "mosh matt@pve -- ssh -t matt@10.0.0.128 'tmux -2u new -At laptop'";
}; };
sessionVariables = { sessionVariables = {
# FIXME: why is this not set by home-manager? # FIXME: why is this not set by home-manager?

View file

@ -1,4 +1,4 @@
{ pkgs, ... }: { {pkgs, ...}: {
programs = { programs = {
fzf = { fzf = {
enable = true; enable = true;

View file

@ -1,6 +1,5 @@
{ pkgs, ... }: { {pkgs, ...}: {
programs = { programs = {
git = { git = {
enable = true; enable = true;
lfs.enable = true; lfs.enable = true;
@ -9,7 +8,7 @@
userEmail = "matt@nelim.org"; userEmail = "matt@nelim.org";
includes = [ includes = [
{ path = "${pkgs.dracula-theme}/git-colors"; } {path = "${pkgs.dracula-theme}/git-colors";}
]; ];
delta = { delta = {
@ -24,11 +23,11 @@
extraConfig.pager = let extraConfig.pager = let
cmd = "LESS='LRc --mouse' ${pkgs.delta}/bin/delta"; cmd = "LESS='LRc --mouse' ${pkgs.delta}/bin/delta";
in { in {
diff = cmd; diff = cmd;
show = cmd; show = cmd;
stash = cmd; stash = cmd;
log = cmd; log = cmd;
reflog = cmd; reflog = cmd;
}; };
}; };
}; };

View file

@ -0,0 +1,2 @@
-- Add `:Format` command to format current buffer
vim.api.nvim_create_user_command("Format", "call CocAction('format')", {})

View file

@ -1,28 +1,32 @@
{ pkgs, lib, ... }: let {
pkgs,
lib,
...
}: let
# installs a vim plugin from git with a given tag / branch # installs a vim plugin from git with a given tag / branch
plugin = owner: repo: rev: hash: pkgs.vimUtils.buildVimPlugin { plugin = owner: repo: rev: hash:
pname = "${lib.strings.sanitizeDerivationName repo}"; pkgs.vimUtils.buildVimPlugin {
version = rev; pname = "${lib.strings.sanitizeDerivationName repo}";
src = pkgs.fetchFromGitHub { version = rev;
inherit rev owner repo hash; src = pkgs.fetchFromGitHub {
inherit rev owner repo hash;
};
}; };
};
fileContents = lib.strings.fileContents; fileContents = lib.strings.fileContents;
in { in {
# TODO: make a gradle module and have java in device-vars.nix # TODO: make a gradle module and have java in device-vars.nix
xdg.dataFile = { xdg.dataFile = {
".gradle/gradle.properties".source = ".gradle/gradle.properties".source = pkgs.writeText "gradle.properties" ''
pkgs.writeText "gradle.properties" '' org.gradle.java.home = ${pkgs.temurin-bin-17}
org.gradle.java.home = ${pkgs.temurin-bin-17} '';
'';
}; };
home.packages = with pkgs; [ home.packages = with pkgs; [
gradle gradle
gradle-completion # FIXME: not working gradle-completion # FIXME: not working
alejandra
]; ];
programs = { programs = {
java = { java = {
enable = true; enable = true;
package = pkgs.temurin-bin-17; package = pkgs.temurin-bin-17;
@ -95,8 +99,13 @@ in {
languageserver = { languageserver = {
nix = { nix = {
command = "nil"; command = "nil";
filetypes = [ "nix" ]; filetypes = ["nix"];
rootPatterns = [ "flake.nix" ]; rootPatterns = ["flake.nix"];
settings = {
nil = {
formatting = {command = ["alejandra"];};
};
};
}; };
}; };
@ -107,6 +116,7 @@ in {
}; };
extraConfig = fileContents ./base.vim; extraConfig = fileContents ./base.vim;
extraLuaConfig = fileContents ./base.lua;
plugins = with pkgs.vimPlugins; [ plugins = with pkgs.vimPlugins; [
# Coc configured # Coc configured
@ -173,9 +183,10 @@ in {
config = fileContents ./plugins/treesitter.vim; config = fileContents ./plugins/treesitter.vim;
} }
{ {
plugin = (plugin "lukas-reineke" "indent-blankline.nvim" plugin =
"046e2cf04e08ece927bacbfb87c5b35c0b636546" plugin "lukas-reineke" "indent-blankline.nvim"
"sha256-bhoep8aTYje5K/dZ/XmpwBPn4PBEMPrmw33QJdfFe6M="); "046e2cf04e08ece927bacbfb87c5b35c0b636546"
"sha256-bhoep8aTYje5K/dZ/XmpwBPn4PBEMPrmw33QJdfFe6M=";
type = "lua"; type = "lua";
config = fileContents ./plugins/indent.lua; config = fileContents ./plugins/indent.lua;
} }

View file

@ -1,4 +1,4 @@
{ pkgs, ... }: { {pkgs, ...}: {
programs = { programs = {
tmux = { tmux = {
enable = true; enable = true;

View file

@ -1,25 +1,27 @@
{ pkgs, ... }: { {pkgs, ...}: {
fonts = { fonts = {
fontconfig = { fontconfig = {
enable = true; enable = true;
defaultFonts = { defaultFonts = {
emoji = [ "Noto Color Emoji" ]; emoji = ["Noto Color Emoji"];
monospace = [ "Noto Nerd Font" ]; monospace = ["Noto Nerd Font"];
sansSerif = [ "Noto Nerd Font" ]; sansSerif = ["Noto Nerd Font"];
serif = [ "Noto Nerd Font" ]; serif = ["Noto Nerd Font"];
}; };
}; };
packages = with pkgs; [ packages = with pkgs; [
(nerdfonts.override { fonts = [ (nerdfonts.override {
"JetBrainsMono" fonts = [
"Go-Mono" "JetBrainsMono"
"Iosevka" "Go-Mono"
"NerdFontsSymbolsOnly" "Iosevka"
"SpaceMono" "NerdFontsSymbolsOnly"
"Ubuntu" "SpaceMono"
"Noto" "Ubuntu"
]; }) "Noto"
];
})
noto-fonts noto-fonts
noto-fonts-cjk noto-fonts-cjk
noto-fonts-emoji noto-fonts-emoji

View file

@ -1,6 +1,5 @@
{ pkgs, ... }: { {pkgs, ...}: {
services = { services = {
fwupd.enable = true; fwupd.enable = true;
upower.enable = true; upower.enable = true;

View file

@ -1,10 +1,14 @@
final: prev: { final: prev: {
blueberry = prev.blueberry.overrideAttrs (o: { blueberry = prev.blueberry.overrideAttrs (o: {
patches = (o.patches or [ ]) ++ [ patches =
./patches/wayland.patch (o.patches or [])
]; ++ [
buildInputs = (o.buildInputs or [ ]) ++ [ ./patches/wayland.patch
prev.libappindicator ];
]; buildInputs =
(o.buildInputs or [])
++ [
prev.libappindicator
];
}); });
} }

View file

@ -1,4 +1,4 @@
{ neovim-flake, ... }: { {neovim-flake, ...}: {
imports = [ imports = [
./dracula-theme.nix ./dracula-theme.nix
./regreet.nix ./regreet.nix

View file

@ -1,4 +1,4 @@
{ pkgs, ... }: let {pkgs, ...}: let
plymouth = pkgs.fetchFromGitHub { plymouth = pkgs.fetchFromGitHub {
owner = "dracula"; owner = "dracula";
repo = "plymouth"; repo = "plymouth";
@ -27,74 +27,75 @@
hash = "sha256-f9FwSOSvqTeDj4bOjYUQ6TM+/carCD9o5dhg/MnP/lk="; hash = "sha256-f9FwSOSvqTeDj4bOjYUQ6TM+/carCD9o5dhg/MnP/lk=";
}; };
in { in {
nixpkgs.overlays = [ (final: prev: { nixpkgs.overlays = [
dracula-theme = prev.dracula-theme.overrideAttrs (oldAttrs: rec { (final: prev: {
dracula-theme = prev.dracula-theme.overrideAttrs (oldAttrs: rec {
src = prev.fetchFromGitHub {
owner = "dracula";
repo = "gtk";
rev = "84dd7a3021938ceec8a0ee292a8561f8a6d47ebe";
hash = "sha256-xHf+f0RGMtbprJX+3c0cmp5LKkf0V7BHKcoiAW60du8=";
};
src = prev.fetchFromGitHub { installPhase = ''
owner = "dracula"; runHook preInstall
repo = "gtk";
rev = "84dd7a3021938ceec8a0ee292a8561f8a6d47ebe";
hash = "sha256-xHf+f0RGMtbprJX+3c0cmp5LKkf0V7BHKcoiAW60du8=";
};
installPhase = '' # Git colors
runHook preInstall cp -a ${git-colors}/config/gitconfig ./git-colors
chmod 777 ./git-colors
# Git colors line=$(grep -n 'Dracula Dark Theme' ./git-colors | cut -d: -f1)
cp -a ${git-colors}/config/gitconfig ./git-colors sed -i "1,$((line-1))d" ./git-colors
chmod 777 ./git-colors
line=$(grep -n 'Dracula Dark Theme' ./git-colors | cut -d: -f1) mkdir -p $out
sed -i "1,$((line-1))d" ./git-colors cp -a ./git-colors $out
mkdir -p $out # Bat colors
cp -a ./git-colors $out mkdir -p ./bat $out/bat
cp -a ${bat-theme}/Dracula.tmTheme ./bat/dracula-bat.tmTheme
chmod 777 ./bat/dracula-bat.tmTheme
# Bat colors cp -a ./bat/dracula-bat.tmTheme $out/bat
mkdir -p ./bat $out/bat
cp -a ${bat-theme}/Dracula.tmTheme ./bat/dracula-bat.tmTheme
chmod 777 ./bat/dracula-bat.tmTheme
cp -a ./bat/dracula-bat.tmTheme $out/bat # Plymouth
cp -a ${plymouth}/dracula ./dracula
chmod 777 ./dracula
# Plymouth rm ./dracula/dracula.script
cp -a ${plymouth}/dracula ./dracula cp -a ${dracula-script} ./dracula/dracula.script
chmod 777 ./dracula
rm ./dracula/dracula.script sed -i "s@\/usr\/@$out\/@" ./dracula/dracula.plymouth
cp -a ${dracula-script} ./dracula/dracula.script
sed -i "s@\/usr\/@$out\/@" ./dracula/dracula.plymouth mkdir -p $out/share/plymouth/themes
cp -a ./dracula $out/share/plymouth/themes/
mkdir -p $out/share/plymouth/themes # Wallpapers
cp -a ./dracula $out/share/plymouth/themes/ cp -a ${wallpaper} ./waves.png
# Wallpapers mkdir -p $out/wallpapers
cp -a ${wallpaper} ./waves.png cp -a ./waves.png $out/wallpapers/
mkdir -p $out/wallpapers
cp -a ./waves.png $out/wallpapers/
# ------------------------------------------- # -------------------------------------------
mkdir -p $out/share/themes/Dracula mkdir -p $out/share/themes/Dracula
cp -a {assets,cinnamon,gnome-shell,gtk-2.0,gtk-3.0,gtk-3.20,gtk-4.0,index.theme,metacity-1,unity,xfwm4} $out/share/themes/Dracula cp -a {assets,cinnamon,gnome-shell,gtk-2.0,gtk-3.0,gtk-3.20,gtk-4.0,index.theme,metacity-1,unity,xfwm4} $out/share/themes/Dracula
cp -a kde/{color-schemes,plasma} $out/share/ cp -a kde/{color-schemes,plasma} $out/share/
cp -a kde/kvantum $out/share/Kvantum cp -a kde/kvantum $out/share/Kvantum
mkdir -p $out/share/aurorae/themes mkdir -p $out/share/aurorae/themes
cp -a kde/aurorae/* $out/share/aurorae/themes/ cp -a kde/aurorae/* $out/share/aurorae/themes/
mkdir -p $out/share/sddm/themes mkdir -p $out/share/sddm/themes
cp -a kde/sddm/* $out/share/sddm/themes/ cp -a kde/sddm/* $out/share/sddm/themes/
mkdir -p $out/share/icons/Dracula-cursors mkdir -p $out/share/icons/Dracula-cursors
mv kde/cursors/Dracula-cursors/index.theme $out/share/icons/Dracula-cursors/cursor.theme mv kde/cursors/Dracula-cursors/index.theme $out/share/icons/Dracula-cursors/cursor.theme
mv kde/cursors/Dracula-cursors/cursors $out/share/icons/Dracula-cursors/cursors mv kde/cursors/Dracula-cursors/cursors $out/share/icons/Dracula-cursors/cursors
runHook postInstall runHook postInstall
''; '';
}); });
}) ]; })
];
} }

View file

@ -1,12 +1,11 @@
{ python3Packages }: {python3Packages}:
python3Packages.buildPythonPackage rec { python3Packages.buildPythonPackage rec {
pname = "coloryou"; pname = "coloryou";
version = "0.0.1"; version = "0.0.1";
src = ./.; src = ./.;
propagatedBuildInputs = with python3Packages; [ utils material-color-utilities ]; propagatedBuildInputs = with python3Packages; [utils material-color-utilities];
postInstall = '' postInstall = ''
mv -v $out/bin/coloryou.py $out/bin/coloryou mv -v $out/bin/coloryou.py $out/bin/coloryou

View file

@ -1,8 +1,7 @@
with import <nixpkgs> {}; with import <nixpkgs> {};
with pkgs.python311Packages; with pkgs.python311Packages;
buildPythonPackage rec {
buildPythonPackage rec { name = "coloryou";
name = "coloryou"; src = ./.;
src = ./.; propagatedBuildInputs = [material-color-utilities utils];
propagatedBuildInputs = [ material-color-utilities utils ]; }
}

View file

@ -1,12 +1,12 @@
{ stdenv {
, meson stdenv,
, ninja meson,
, pkg-config ninja,
, cmake pkg-config,
, bash-completion cmake,
, fetchFromGitHub bash-completion,
fetchFromGitHub,
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "input-emulator"; pname = "input-emulator";
version = "6c35040e6fc4f65ce0519ee76d00d60490bcb987"; version = "6c35040e6fc4f65ce0519ee76d00d60490bcb987";

View file

@ -1,17 +1,17 @@
{ stdenv {
, meson stdenv,
, ninja meson,
, pkg-config ninja,
, glib pkg-config,
, libfprint glib,
, polkit libfprint,
, dbus polkit,
, systemd dbus,
, pam systemd,
, libpam-wrapper pam,
, fetchFromGitLab libpam-wrapper,
fetchFromGitLab,
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "pam-fprint-grosshack"; pname = "pam-fprint-grosshack";
version = "v0.3.0"; version = "v0.3.0";

View file

@ -1,5 +1,4 @@
# https://github.com/NixOS/nixpkgs/blob/77b27fdb6a9ba01f60b8f5c48038938cf14b7d2f/pkgs/applications/audio/spotifywm/default.nix # https://github.com/NixOS/nixpkgs/blob/77b27fdb6a9ba01f60b8f5c48038938cf14b7d2f/pkgs/applications/audio/spotifywm/default.nix
{ {
lib, lib,
stdenv, stdenv,
@ -8,8 +7,7 @@
makeBinaryWrapper, makeBinaryWrapper,
spotify, spotify,
symlinkJoin, symlinkJoin,
}: }: let
let
spotifywm = stdenv.mkDerivation { spotifywm = stdenv.mkDerivation {
pname = "spotifywm"; pname = "spotifywm";
version = "unstable-2022-10-25"; version = "unstable-2022-10-25";
@ -34,31 +32,31 @@ let
''; '';
}; };
in in
symlinkJoin { symlinkJoin {
inherit (spotifywm) name; inherit (spotifywm) name;
nativeBuildInputs = [ nativeBuildInputs = [
makeBinaryWrapper makeBinaryWrapper
]; ];
paths = [ paths = [
spotify spotify
spotifywm spotifywm
]; ];
postBuild = '' postBuild = ''
wrapProgram $out/bin/spotify \ wrapProgram $out/bin/spotify \
--suffix LD_PRELOAD : "$out/lib/spotifywm.so" --suffix LD_PRELOAD : "$out/lib/spotifywm.so"
ln -sf $out/bin/spotify $out/bin/spotifywm ln -sf $out/bin/spotify $out/bin/spotifywm
''; '';
meta = { meta = {
homepage = "https://github.com/dasJ/spotifywm"; homepage = "https://github.com/dasJ/spotifywm";
description = "Wrapper around Spotify that correctly sets class name before opening the window"; description = "Wrapper around Spotify that correctly sets class name before opening the window";
license = lib.licenses.mit; license = lib.licenses.mit;
platforms = lib.platforms.linux; platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ jqueiroz the-argus ]; maintainers = with lib.maintainers; [jqueiroz the-argus];
mainProgram = "spotify"; mainProgram = "spotify";
}; };
} }

View file

@ -1,4 +1,4 @@
{ pkgs, ... }: { {pkgs, ...}: {
programs.regreet = { programs.regreet = {
package = pkgs.greetd.regreet.overrideAttrs (self: super: rec { package = pkgs.greetd.regreet.overrideAttrs (self: super: rec {
version = "0.1.1-patched"; version = "0.1.1-patched";

View file

@ -1,7 +1,9 @@
final: prev: { final: prev: {
squeekboard = prev.squeekboard.overrideAttrs (o: { squeekboard = prev.squeekboard.overrideAttrs (o: {
patches = (o.patches or [ ]) ++ [ patches =
./patches/remove-panel.patch (o.patches or [])
]; ++ [
./patches/remove-panel.patch
];
}); });
} }

View file

@ -1,4 +1,4 @@
{ ... }: { {...}: {
imports = [ imports = [
./hardware-configuration.nix ./hardware-configuration.nix
@ -32,7 +32,6 @@
}; };
home-manager.users = { home-manager.users = {
matt = { matt = {
imports = [ imports = [
../../home/alacritty.nix ../../home/alacritty.nix
../../home/dconf.nix ../../home/dconf.nix

View file

@ -1,21 +1,27 @@
{ config, lib, modulesPath, pkgs, ... }: { {
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; config,
lib,
modulesPath,
pkgs,
...
}: {
imports = [(modulesPath + "/installer/scan/not-detected.nix")];
boot = { boot = {
kernelPackages = pkgs.linuxPackages_xanmod_latest; kernelPackages = pkgs.linuxPackages_xanmod_latest;
kernelModules = [ "kvm-amd" ]; kernelModules = ["kvm-amd"];
extraModulePackages = with config.boot.kernelPackages; [ extraModulePackages = with config.boot.kernelPackages; [
v4l2loopback v4l2loopback
]; ];
supportedFilesystems = [ "ntfs" ]; supportedFilesystems = ["ntfs"];
consoleLogLevel = 0; consoleLogLevel = 0;
initrd = { initrd = {
verbose = false; verbose = false;
systemd.enable = true; systemd.enable = true;
availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; availableKernelModules = ["nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod"];
}; };
loader = { loader = {
@ -35,10 +41,10 @@
}; };
fileSystems = { fileSystems = {
"/" ={ "/" = {
device = "/dev/disk/by-uuid/560976b6-85e0-44ca-bb73-e15a78e9c449"; device = "/dev/disk/by-uuid/560976b6-85e0-44ca-bb73-e15a78e9c449";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@" ]; options = ["subvol=@"];
}; };
"/boot" = { "/boot" = {

View file

@ -1,4 +1,4 @@
{ ... }: { {...}: {
# Disable compositor in X11 for best performance # Disable compositor in X11 for best performance
# TODO: add mic sound # TODO: add mic sound
xdg.configFile."gpu-screen-recorder.env".text = '' xdg.configFile."gpu-screen-recorder.env".text = ''
@ -21,7 +21,7 @@
icon = "com.github.iwalton3.jellyfin-media-player"; icon = "com.github.iwalton3.jellyfin-media-player";
terminal = false; terminal = false;
type = "Application"; type = "Application";
categories = [ "AudioVideo" "Video" "Player" "TV" ]; categories = ["AudioVideo" "Video" "Player" "TV"];
settings = { settings = {
Version = "1.0"; Version = "1.0";
StartupWMClass = "jellyfin-media-player"; StartupWMClass = "jellyfin-media-player";

View file

@ -1,4 +1,8 @@
{ pkgs, lib, ... }: { {
pkgs,
lib,
...
}: {
programs.dconf.enable = true; programs.dconf.enable = true;
services = { services = {

View file

@ -1,19 +1,25 @@
{ pkgs, lib, ... }: let {
gsr = (pkgs.gpu-screen-recorder.overrideAttrs (o: { pkgs,
lib,
...
}: let
gsr = pkgs.gpu-screen-recorder.overrideAttrs (o: {
src = pkgs.fetchgit { src = pkgs.fetchgit {
url = "https://repo.dec05eba.com/gpu-screen-recorder"; url = "https://repo.dec05eba.com/gpu-screen-recorder";
rev = "1ac862d155e10f050e6f6cca5381f9f5a3528d98"; rev = "1ac862d155e10f050e6f6cca5381f9f5a3528d98";
hash = "sha256-wLiBn4VIi+IWY4qVkdFzkHhECTFH97snogVTEwM5yx8="; hash = "sha256-wLiBn4VIi+IWY4qVkdFzkHhECTFH97snogVTEwM5yx8=";
}; };
buildInputs = (o.buildInputs or [ ]) ++ (with pkgs; [ buildInputs =
wayland (o.buildInputs or [])
wayland-protocols ++ (with pkgs; [
libdrm wayland
libva wayland-protocols
xorg.libXrandr libdrm
libglvnd libva
]); xorg.libXrandr
libglvnd
]);
postPatch = ""; postPatch = "";
@ -30,7 +36,7 @@
pkgs.libglvnd pkgs.libglvnd
]}" ]}"
''; '';
})); });
in { in {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
pulseaudio # for getting audio sink pulseaudio # for getting audio sink

View file

@ -1,4 +1,8 @@
{ nix-gaming, pkgs, ... }: { {
nix-gaming,
pkgs,
...
}: {
imports = [ imports = [
nix-gaming.nixosModules.steamCompat nix-gaming.nixosModules.steamCompat
]; ];

View file

@ -1,5 +1,4 @@
{ config, ... }: {config, ...}: {
{
# Enable OpenGL # Enable OpenGL
hardware.opengl = { hardware.opengl = {
enable = true; enable = true;
@ -11,7 +10,6 @@
services.xserver.videoDrivers = ["nvidia"]; services.xserver.videoDrivers = ["nvidia"];
hardware.nvidia = { hardware.nvidia = {
# Modesetting is required. # Modesetting is required.
modesetting.enable = true; modesetting.enable = true;
@ -23,15 +21,15 @@
# Use the NVidia open source kernel module (not to be confused with the # Use the NVidia open source kernel module (not to be confused with the
# independent third-party "nouveau" open source driver). # independent third-party "nouveau" open source driver).
# Support is limited to the Turing and later architectures. Full list of # Support is limited to the Turing and later architectures. Full list of
# supported GPUs is at: # supported GPUs is at:
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
# Only available from driver 515.43.04+ # Only available from driver 515.43.04+
# Do not disable this unless your GPU is unsupported or if you have a good reason to. # Do not disable this unless your GPU is unsupported or if you have a good reason to.
open = true; open = true;
# Enable the Nvidia settings menu, # Enable the Nvidia settings menu,
# accessible via `nvidia-settings`. # accessible via `nvidia-settings`.
nvidiaSettings = true; nvidiaSettings = true;
# Optionally, you may need to select the appropriate driver version for your specific GPU. # Optionally, you may need to select the appropriate driver version for your specific GPU.

View file

@ -1,4 +1,4 @@
{ ... }: { {...}: {
imports = [ imports = [
./hardware-configuration.nix ./hardware-configuration.nix

View file

@ -1,10 +1,15 @@
{ config, modulesPath, pkgs, ... }: { {
config,
modulesPath,
pkgs,
...
}: {
nixpkgs.hostPlatform = "x86_64-linux"; nixpkgs.hostPlatform = "x86_64-linux";
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; imports = [(modulesPath + "/installer/scan/not-detected.nix")];
boot = { boot = {
kernelPackages = pkgs.linuxPackages_latest; kernelPackages = pkgs.linuxPackages_latest;
kernelModules = [ "kvm-amd" ]; kernelModules = ["kvm-amd"];
extraModulePackages = with config.boot.kernelPackages; [ extraModulePackages = with config.boot.kernelPackages; [
v4l2loopback v4l2loopback
]; ];
@ -19,7 +24,7 @@
initrd = { initrd = {
verbose = false; verbose = false;
systemd.enable = true; systemd.enable = true;
availableKernelModules = [ "nvme" "xhci_pci" "usb_storage" "sd_mod" ]; availableKernelModules = ["nvme" "xhci_pci" "usb_storage" "sd_mod"];
luks.devices."root" = { luks.devices."root" = {
device = "/dev/disk/by-uuid/ab82b477-2477-453f-b95f-28e5553ad10d"; device = "/dev/disk/by-uuid/ab82b477-2477-453f-b95f-28e5553ad10d";

View file

@ -1,23 +1,26 @@
{ config, pkgs, ... }: let {
config,
pkgs,
...
}: let
configDir = config.services.device-vars.configDir; configDir = config.services.device-vars.configDir;
symlink = config.lib.file.mkOutOfStoreSymlink; symlink = config.lib.file.mkOutOfStoreSymlink;
in in {
{
xdg.configFile = { xdg.configFile = {
"gtklock/config.ini".source = pkgs.writeText "config.ini" '' "gtklock/config.ini".source = pkgs.writeText "config.ini" ''
[main] [main]
modules=${builtins.concatStringsSep ";" [ modules=${builtins.concatStringsSep ";" [
"${pkgs.gtklock-powerbar-module}/lib/gtklock/powerbar-module.so" "${pkgs.gtklock-powerbar-module}/lib/gtklock/powerbar-module.so"
"${pkgs.gtklock-playerctl-module}/lib/gtklock/playerctl-module.so" "${pkgs.gtklock-playerctl-module}/lib/gtklock/playerctl-module.so"
]} ]}
''; '';
"gtklock/style.css".source = symlink "${configDir}/gtklock/style.css"; "gtklock/style.css".source = symlink "${configDir}/gtklock/style.css";
"dolphinrc".source = symlink "${configDir}/dolphinrc"; "dolphinrc".source = symlink "${configDir}/dolphinrc";
"kdeglobals".source = symlink "${configDir}/kdeglobals"; "kdeglobals".source = symlink "${configDir}/kdeglobals";
"kiorc".source = symlink "${configDir}/kiorc"; "kiorc".source = symlink "${configDir}/kiorc";
"mimeapps.list".source = symlink "${configDir}/mimeapps.list"; "mimeapps.list".source = symlink "${configDir}/mimeapps.list";
"neofetch".source = symlink "${configDir}/neofetch"; "neofetch".source = symlink "${configDir}/neofetch";
"swappy".source = symlink "${configDir}/swappy"; "swappy".source = symlink "${configDir}/swappy";
}; };
} }

View file

@ -1,4 +1,12 @@
{ pkgs, config, hyprland, hyprgrass, ags, osConfig, ... }: let {
pkgs,
config,
hyprland,
hyprgrass,
ags,
osConfig,
...
}: let
configDir = config.services.device-vars.configDir; configDir = config.services.device-vars.configDir;
symlink = config.lib.file.mkOutOfStoreSymlink; symlink = config.lib.file.mkOutOfStoreSymlink;
@ -13,7 +21,7 @@ in {
enable = true; enable = true;
configDir = symlink "${configDir}/ags"; configDir = symlink "${configDir}/ags";
package = ags.packages.x86_64-linux.default; package = ags.packages.x86_64-linux.default;
extraPackages = [ pkgs.libgudev ]; extraPackages = [pkgs.libgudev];
}; };
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
@ -43,7 +51,7 @@ in {
"swww init --no-cache && swww img -t none ${pkgs.dracula-theme}/wallpapers/waves.png" "swww init --no-cache && swww img -t none ${pkgs.dracula-theme}/wallpapers/waves.png"
]; ];
source = [ "~/.config/hypr/main.conf" ]; source = ["~/.config/hypr/main.conf"];
}; };
}; };
@ -68,7 +76,6 @@ in {
networkmanagerapplet # TODO: replace with ags widget networkmanagerapplet # TODO: replace with ags widget
blueberry # TODO: replace with ags widget blueberry # TODO: replace with ags widget
# Hyprland # Hyprland
swww swww
swayidle swayidle

View file

@ -1,8 +1,11 @@
{ pkgs, nixpkgs-wayland, ... }: let {
pkgs,
nixpkgs-wayland,
...
}: let
waypkgs = nixpkgs-wayland.packages.x86_64-linux; waypkgs = nixpkgs-wayland.packages.x86_64-linux;
in { in {
programs = { programs = {
obs-studio = { obs-studio = {
enable = true; enable = true;
plugins = with waypkgs; [ plugins = with waypkgs; [
@ -13,76 +16,74 @@ in {
btop.enable = true; btop.enable = true;
}; };
home.packages = (with pkgs.python311Packages; [ home.packages =
python (with pkgs.python311Packages; [
pyclip python
]) ++ pyclip
])
++ (with pkgs.plasma5Packages; [
polkit-kde-agent
ark
kcharselect
kdenlive
okular
(with pkgs.plasma5Packages; [ # Dolphin & co
polkit-kde-agent dolphin
ark dolphin-plugins
kcharselect kdegraphics-thumbnailers
kdenlive ffmpegthumbs
okular kio
kio-admin # needs to be both here and in system pkgs
kio-extras
kmime
])
++ (with pkgs.gnome; [
gnome-calculator
seahorse
])
++ (with pkgs; [
# School
virt-manager
bluej
#camunda-modeler
# Dolphin & co # Misc Apps
dolphin thunderbird # TODO: use programs.thunderbird
dolphin-plugins spotifywm
kdegraphics-thumbnailers zeal
ffmpegthumbs libreoffice-fresh # TODO: add spelling stuff and declarative conf?
kio photoqt
kio-admin # needs to be both here and in system pkgs gimp-with-plugins # TODO: set plugins using nix
kio-extras vlc
kmime nextcloud-client
]) ++ jellyfin-media-player
xournalpp
(pkgs.discord.override {
withOpenASAR = true;
withVencord = true;
})
prismlauncher-qt5
(with pkgs.gnome; [ # Misc CLI
gnome-calculator acpi
seahorse alsa-utils
]) ++ fontfor
(with pkgs; [ (writeShellScriptBin "Gparted" ''
# School (
virt-manager sleep 1.5
bluej while killall -r -0 ksshaskpass > /dev/null 2>&1
#camunda-modeler do
sleep 0.1
# Misc Apps if [[ $(hyprctl activewindow | grep Ksshaskpass) == "" ]]; then
thunderbird # TODO: use programs.thunderbird killall -r ksshaskpass
spotifywm fi
zeal done
libreoffice-fresh # TODO: add spelling stuff and declarative conf? ) &
photoqt exec env SUDO_ASKPASS=${pkgs.plasma5Packages.ksshaskpass}/bin/${pkgs.plasma5Packages.ksshaskpass.pname} sudo -k -EA "${gparted}/bin/${gparted.pname}" "$@"
gimp-with-plugins # TODO: set plugins using nix '')
vlc ]);
nextcloud-client
jellyfin-media-player
xournalpp
(pkgs.discord.override {
withOpenASAR = true;
withVencord = true;
})
prismlauncher-qt5
# Misc CLI
acpi
alsa-utils
fontfor
(writeShellScriptBin "Gparted" ''
(
sleep 1.5
while killall -r -0 ksshaskpass > /dev/null 2>&1
do
sleep 0.1
if [[ $(hyprctl activewindow | grep Ksshaskpass) == "" ]]; then
killall -r ksshaskpass
fi
done
) &
exec env SUDO_ASKPASS=${pkgs.plasma5Packages.ksshaskpass}/bin/${pkgs.plasma5Packages.ksshaskpass.pname} sudo -k -EA "${gparted}/bin/${gparted.pname}" "$@"
'')
]);
xdg.desktopEntries.gparted = { xdg.desktopEntries.gparted = {
name = "GParted"; name = "GParted";
@ -92,7 +93,7 @@ in {
icon = "gparted"; icon = "gparted";
terminal = false; terminal = false;
type = "Application"; type = "Application";
categories = [ "GNOME" "System" "Filesystem" ]; categories = ["GNOME" "System" "Filesystem"];
startupNotify = true; startupNotify = true;
settings = { settings = {
Keywords = "Partition"; Keywords = "Partition";

View file

@ -1,4 +1,8 @@
{ hyprland, pkgs, ... }: { {
hyprland,
pkgs,
...
}: {
programs.dconf.enable = true; programs.dconf.enable = true;
services = { services = {

View file

@ -1,11 +1,13 @@
{ pkgs, lib, ... }:
{ {
pkgs,
lib,
...
}: {
services.fprintd.enable = true; services.fprintd.enable = true;
# https://www.reddit.com/r/NixOS/comments/z7i83r/fingertip_tip_start_fprintd_at_boot_for_a_quick/ # https://www.reddit.com/r/NixOS/comments/z7i83r/fingertip_tip_start_fprintd_at_boot_for_a_quick/
systemd.services.fprintd = { systemd.services.fprintd = {
wantedBy = [ "multi-user.target" ]; wantedBy = ["multi-user.target"];
serviceConfig.Type = "simple"; serviceConfig.Type = "simple";
}; };
@ -16,11 +18,10 @@
''; '';
security.pam.services = { security.pam.services = {
gtklock = {}; gtklock = {};
# all the changes in /etc/pam.d/* # all the changes in /etc/pam.d/*
sddm.text = lib.mkBefore '' sddm.text = lib.mkBefore ''
auth [success=1 new_authtok_reqd=1 default=ignore] pam_unix.so try_first_pass likeauth nullok auth [success=1 new_authtok_reqd=1 default=ignore] pam_unix.so try_first_pass likeauth nullok
auth sufficient ${pkgs.fprintd}/lib/security/pam_fprintd.so auth sufficient ${pkgs.fprintd}/lib/security/pam_fprintd.so
''; '';

BIN
flake.nix

Binary file not shown.

View file

@ -1,4 +1,4 @@
{ config, ... }: { {config, ...}: {
programs.alacritty = { programs.alacritty = {
enable = true; enable = true;
settings = { settings = {

View file

@ -1,4 +1,4 @@
{ ... }: { {...}: {
dconf.settings = { dconf.settings = {
"org/virt-manager/virt-manager/connections" = { "org/virt-manager/virt-manager/connections" = {
autoconnect = ["qemu:///system"]; autoconnect = ["qemu:///system"];
@ -6,7 +6,7 @@
}; };
"apps/seahorse/listing" = { "apps/seahorse/listing" = {
keyrings-selected = [ "gnupg://" ]; keyrings-selected = ["gnupg://"];
}; };
"org/gtk/settings/file-chooser" = { "org/gtk/settings/file-chooser" = {

View file

@ -1,16 +1,25 @@
{ fetchurl, lib, stdenv }@args: {
fetchurl,
let lib,
stdenv,
buildFirefoxXpiAddon = lib.makeOverridable ({ stdenv ? args.stdenv } @ args: let
, fetchurl ? args.fetchurl, pname, version, addonId, url, sha256, meta, ... buildFirefoxXpiAddon = lib.makeOverridable ({
}: stdenv ? args.stdenv,
fetchurl ? args.fetchurl,
pname,
version,
addonId,
url,
sha256,
meta,
...
}:
stdenv.mkDerivation { stdenv.mkDerivation {
name = "${pname}-${version}"; name = "${pname}-${version}";
inherit meta; inherit meta;
src = fetchurl { inherit url sha256; }; src = fetchurl {inherit url sha256;};
preferLocalBuild = true; preferLocalBuild = true;
allowSubstitutes = true; allowSubstitutes = true;
@ -25,23 +34,25 @@ let
packages = import ./generated-firefox-addons.nix { packages = import ./generated-firefox-addons.nix {
inherit buildFirefoxXpiAddon fetchurl lib stdenv; inherit buildFirefoxXpiAddon fetchurl lib stdenv;
}; };
in
packages
// {
inherit buildFirefoxXpiAddon;
in packages // { seventv = let
inherit buildFirefoxXpiAddon; version = "v3.0.10.1000";
in
seventv = let buildFirefoxXpiAddon {
version = "v3.0.10.1000"; pname = "seventv";
in buildFirefoxXpiAddon { inherit version;
pname = "seventv"; addonId = "moz-addon@7tv.app";
inherit version; url = "https://extension.7tv.gg/${version}/ext.xpi";
addonId = "moz-addon@7tv.app"; sha256 = "sha256-dZyjFayvnLebSZHjMTTQFjcsxxpmc1aL5q17mLF3kG8=";
url = "https://extension.7tv.gg/${version}/ext.xpi"; meta = with lib; {
sha256 = "sha256-dZyjFayvnLebSZHjMTTQFjcsxxpmc1aL5q17mLF3kG8="; homepage = "https://7tv.app/";
meta = with lib; { description = "The Web Extension for 7TV, bringing new features, emotes, vanity and performance to Twitch, Kick & YouTube";
homepage = "https://7tv.app/"; license = licenses.asl20;
description = "The Web Extension for 7TV, bringing new features, emotes, vanity and performance to Twitch, Kick & YouTube"; platforms = platforms.all;
license = licenses.asl20; };
platforms = platforms.all; };
}; }
};
}

View file

@ -1,105 +1,104 @@
{ buildFirefoxXpiAddon, fetchurl, lib, stdenv }: {
{ buildFirefoxXpiAddon,
"600-sound-volume" = buildFirefoxXpiAddon { fetchurl,
pname = "600-sound-volume"; lib,
version = "1.5.3"; stdenv,
addonId = "{c4b582ec-4343-438c-bda2-2f691c16c262}"; }: {
url = "https://addons.mozilla.org/firefox/downloads/file/4133303/600_sound_volume-1.5.3.xpi"; "600-sound-volume" = buildFirefoxXpiAddon {
sha256 = "7045a812608338f95181459ae3e518bb51c8dc9a724a4083afb687d14075c304"; pname = "600-sound-volume";
meta = with lib; version = "1.5.3";
{ addonId = "{c4b582ec-4343-438c-bda2-2f691c16c262}";
homepage = "http://resourcefulman.net/"; url = "https://addons.mozilla.org/firefox/downloads/file/4133303/600_sound_volume-1.5.3.xpi";
description = "Up to 600% volume boost"; sha256 = "7045a812608338f95181459ae3e518bb51c8dc9a724a4083afb687d14075c304";
license = licenses.mpl20; meta = with lib; {
mozPermissions = [ "<all_urls>" "tabs" "activeTab" "storage" ]; homepage = "http://resourcefulman.net/";
platforms = platforms.all; description = "Up to 600% volume boost";
}; license = licenses.mpl20;
}; mozPermissions = ["<all_urls>" "tabs" "activeTab" "storage"];
"checkmarks-web-ext" = buildFirefoxXpiAddon { platforms = platforms.all;
pname = "checkmarks-web-ext"; };
version = "1.6.1"; };
addonId = "{bd97f89b-17ba-4539-9fec-06852d07f917}"; "checkmarks-web-ext" = buildFirefoxXpiAddon {
url = "https://addons.mozilla.org/firefox/downloads/file/3594420/checkmarks_web_ext-1.6.1.xpi"; pname = "checkmarks-web-ext";
sha256 = "c3ccf4b302ee96c9b883c4a1f7d26395ab4e276b976cab2d65c9cd898964e4f0"; version = "1.6.1";
meta = with lib; addonId = "{bd97f89b-17ba-4539-9fec-06852d07f917}";
{ url = "https://addons.mozilla.org/firefox/downloads/file/3594420/checkmarks_web_ext-1.6.1.xpi";
homepage = "https://github.com/tanwald/checkmarks"; sha256 = "c3ccf4b302ee96c9b883c4a1f7d26395ab4e276b976cab2d65c9cd898964e4f0";
description = "Checks, sorts, formats bookmarks and loads favicons."; meta = with lib; {
license = licenses.gpl3; homepage = "https://github.com/tanwald/checkmarks";
mozPermissions = [ description = "Checks, sorts, formats bookmarks and loads favicons.";
"<all_urls>" license = licenses.gpl3;
"bookmarks" mozPermissions = [
"browsingData" "<all_urls>"
"storage" "bookmarks"
"tabs" "browsingData"
"webNavigation" "storage"
"webRequest" "tabs"
"webRequestBlocking" "webNavigation"
]; "webRequest"
platforms = platforms.all; "webRequestBlocking"
}; ];
}; platforms = platforms.all;
"google-container" = buildFirefoxXpiAddon { };
pname = "google-container"; };
version = "1.5.4"; "google-container" = buildFirefoxXpiAddon {
addonId = "@contain-google"; pname = "google-container";
url = "https://addons.mozilla.org/firefox/downloads/file/3736912/google_container-1.5.4.xpi"; version = "1.5.4";
sha256 = "47a7c0e85468332a0d949928d8b74376192cde4abaa14280002b3aca4ec814d0"; addonId = "@contain-google";
meta = with lib; url = "https://addons.mozilla.org/firefox/downloads/file/3736912/google_container-1.5.4.xpi";
{ sha256 = "47a7c0e85468332a0d949928d8b74376192cde4abaa14280002b3aca4ec814d0";
homepage = "https://github.com/containers-everywhere/contain-google"; meta = with lib; {
description = "THIS IS NOT AN OFFICIAL ADDON FROM MOZILLA!\nIt is a fork of the Facebook Container addon.\n\nPrevent Google from tracking you around the web. The Google Container extension helps you take control and isolate your web activity from Google."; homepage = "https://github.com/containers-everywhere/contain-google";
license = licenses.mpl20; description = "THIS IS NOT AN OFFICIAL ADDON FROM MOZILLA!\nIt is a fork of the Facebook Container addon.\n\nPrevent Google from tracking you around the web. The Google Container extension helps you take control and isolate your web activity from Google.";
mozPermissions = [ license = licenses.mpl20;
"<all_urls>" mozPermissions = [
"contextualIdentities" "<all_urls>"
"cookies" "contextualIdentities"
"management" "cookies"
"tabs" "management"
"webRequestBlocking" "tabs"
"webRequest" "webRequestBlocking"
"storage" "webRequest"
]; "storage"
platforms = platforms.all; ];
}; platforms = platforms.all;
}; };
"opera-gx-witchcraft-purple" = buildFirefoxXpiAddon { };
pname = "opera-gx-witchcraft-purple"; "opera-gx-witchcraft-purple" = buildFirefoxXpiAddon {
version = "2.0"; pname = "opera-gx-witchcraft-purple";
addonId = "{bf197856-a3c2-4280-84c5-9b556379b706}"; version = "2.0";
url = "https://addons.mozilla.org/firefox/downloads/file/3522842/opera_gx_witchcraft_purple-2.0.xpi"; addonId = "{bf197856-a3c2-4280-84c5-9b556379b706}";
sha256 = "aa3c6377b8571c42a3988de042694be70ec6a250a9aea7ae1cc262acdc9374eb"; url = "https://addons.mozilla.org/firefox/downloads/file/3522842/opera_gx_witchcraft_purple-2.0.xpi";
meta = with lib; sha256 = "aa3c6377b8571c42a3988de042694be70ec6a250a9aea7ae1cc262acdc9374eb";
{ meta = with lib; {
description = "inspired by Opera GX"; description = "inspired by Opera GX";
license = licenses.cc-by-sa-30; license = licenses.cc-by-sa-30;
mozPermissions = []; mozPermissions = [];
platforms = platforms.all; platforms = platforms.all;
}; };
}; };
"ttv-lol-pro" = buildFirefoxXpiAddon { "ttv-lol-pro" = buildFirefoxXpiAddon {
pname = "ttv-lol-pro"; pname = "ttv-lol-pro";
version = "2.2.1"; version = "2.2.1";
addonId = "{76ef94a4-e3d0-4c6f-961a-d38a429a332b}"; addonId = "{76ef94a4-e3d0-4c6f-961a-d38a429a332b}";
url = "https://addons.mozilla.org/firefox/downloads/file/4179399/ttv_lol_pro-2.2.1.xpi"; url = "https://addons.mozilla.org/firefox/downloads/file/4179399/ttv_lol_pro-2.2.1.xpi";
sha256 = "83d012878021fb5fe25bee1101a7a760974ae9e2949b80fd99b73d3da48b1f99"; sha256 = "83d012878021fb5fe25bee1101a7a760974ae9e2949b80fd99b73d3da48b1f99";
meta = with lib; meta = with lib; {
{ homepage = "https://github.com/younesaassila/ttv-lol-pro";
homepage = "https://github.com/younesaassila/ttv-lol-pro"; description = "TTV LOL PRO removes most livestream ads from Twitch.";
description = "TTV LOL PRO removes most livestream ads from Twitch."; license = licenses.gpl3;
license = licenses.gpl3; mozPermissions = [
mozPermissions = [ "proxy"
"proxy" "storage"
"storage" "webRequest"
"webRequest" "webRequestBlocking"
"webRequestBlocking" "https://*.ttvnw.net/*"
"https://*.ttvnw.net/*" "https://*.twitch.tv/*"
"https://*.twitch.tv/*" "https://perfprod.com/ttvlolpro/telemetry"
"https://perfprod.com/ttvlolpro/telemetry" "https://www.twitch.tv/*"
"https://www.twitch.tv/*" "https://m.twitch.tv/*"
"https://m.twitch.tv/*" ];
]; platforms = platforms.all;
platforms = platforms.all; };
}; };
}; }
}

View file

@ -1,14 +1,17 @@
{ config, pkgs, ... }: let {
firefox-addons = pkgs.recurseIntoAttrs (pkgs.callPackage ./addons { }); config,
pkgs,
...
}: let
firefox-addons = pkgs.recurseIntoAttrs (pkgs.callPackage ./addons {});
sound-volume = firefox-addons."600-sound-volume"; sound-volume = firefox-addons."600-sound-volume";
firefox-gx = pkgs.callPackage ./firefox-gx { }; firefox-gx = pkgs.callPackage ./firefox-gx {};
in in {
{
home.file = { home.file = {
".mozilla/firefox/matt/chrome/components".source = "${firefox-gx}/chrome/components"; ".mozilla/firefox/matt/chrome/components".source = "${firefox-gx}/chrome/components";
".mozilla/firefox/matt/chrome/icons".source = "${firefox-gx}/chrome/icons"; ".mozilla/firefox/matt/chrome/icons".source = "${firefox-gx}/chrome/icons";
".mozilla/firefox/matt/chrome/images".source = "${firefox-gx}/chrome/images"; ".mozilla/firefox/matt/chrome/images".source = "${firefox-gx}/chrome/images";
".mozilla/firefox/matt/chrome/userContent.css".source = "${firefox-gx}/chrome/userContent.css"; ".mozilla/firefox/matt/chrome/userContent.css".source = "${firefox-gx}/chrome/userContent.css";
}; };
@ -76,69 +79,89 @@ in
force = true; force = true;
engines = { engines = {
"Nix Packages" = { "Nix Packages" = {
urls = [{ urls = [
template = "https://search.nixos.org/packages"; {
params = [ template = "https://search.nixos.org/packages";
{ name = "type"; value = "packages"; } params = [
{ name = "query"; value = "{searchTerms}"; } {
]; name = "type";
}]; value = "packages";
}
{
name = "query";
value = "{searchTerms}";
}
];
}
];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake-white.svg"; icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake-white.svg";
definedAliases = [ "@np" ]; definedAliases = ["@np"];
}; };
"NixOS Wiki" = { "NixOS Wiki" = {
urls = [{ template = urls = [
"https://nixos.wiki/index.php?search={searchTerms}"; {
}]; template = "https://nixos.wiki/index.php?search={searchTerms}";
}
];
iconUpdateURL = "https://nixos.wiki/favicon.png"; iconUpdateURL = "https://nixos.wiki/favicon.png";
updateInterval = 24 * 60 * 60 * 1000; # every day updateInterval = 24 * 60 * 60 * 1000; # every day
definedAliases = [ "@nw" ]; definedAliases = ["@nw"];
}; };
"MyNixos" = { "MyNixos" = {
urls = [{ template = urls = [
"https://mynixos.com/search?q={searchTerms}"; {
}]; template = "https://mynixos.com/search?q={searchTerms}";
}
];
iconUpdateURL = "https://mynixos.com/favicon.ico"; iconUpdateURL = "https://mynixos.com/favicon.ico";
updateInterval = 24 * 60 * 60 * 1000; # every day updateInterval = 24 * 60 * 60 * 1000; # every day
definedAliases = [ "@mn" ]; definedAliases = ["@mn"];
}; };
"Noogle" = { "Noogle" = {
urls = [{ template = urls = [
"https://noogle.dev/?term={searchTerms}"; {
}]; template = "https://noogle.dev/?term={searchTerms}";
}
];
iconUpdateURL = "https://noogle.dev/favicon.ico"; iconUpdateURL = "https://noogle.dev/favicon.ico";
updateInterval = 24 * 60 * 60 * 1000; # every day updateInterval = 24 * 60 * 60 * 1000; # every day
definedAliases = [ "@ng" ]; definedAliases = ["@ng"];
}; };
"Firefox Add-ons" = { "Firefox Add-ons" = {
urls = [{ template = urls = [
"https://addons.mozilla.org/en-US/firefox/search/?q={searchTerms}"; {
}]; template = "https://addons.mozilla.org/en-US/firefox/search/?q={searchTerms}";
}
];
iconUpdateURL = "https://addons.mozilla.org/favicon.ico"; iconUpdateURL = "https://addons.mozilla.org/favicon.ico";
updateInterval = 24 * 60 * 60 * 1000; # every day updateInterval = 24 * 60 * 60 * 1000; # every day
definedAliases = [ "@fa" ]; definedAliases = ["@fa"];
}; };
"ProtonDB" = { "ProtonDB" = {
urls = [{ template = urls = [
"https://www.protondb.com/search?q={searchTerms}"; {
}]; template = "https://www.protondb.com/search?q={searchTerms}";
}
];
iconUpdateURL = "https://www.protondb.com/favicon.ico"; iconUpdateURL = "https://www.protondb.com/favicon.ico";
updateInterval = 24 * 60 * 60 * 1000; # every day updateInterval = 24 * 60 * 60 * 1000; # every day
definedAliases = [ "@pdb" ]; definedAliases = ["@pdb"];
}; };
"YouTube" = { "YouTube" = {
urls = [{ template = urls = [
"https://www.youtube.com/results?search_query={searchTerms}"; {
}]; template = "https://www.youtube.com/results?search_query={searchTerms}";
}
];
iconUpdateURL = "https://www.youtube.com/favicon.ico"; iconUpdateURL = "https://www.youtube.com/favicon.ico";
updateInterval = 24 * 60 * 60 * 1000; # every day updateInterval = 24 * 60 * 60 * 1000; # every day
definedAliases = [ "@yt" "@youtube" ]; definedAliases = ["@yt" "@youtube"];
}; };
"Bing".metaData.hidden = true; "Bing".metaData.hidden = true;
@ -160,31 +183,29 @@ in
}; };
extensions = with config.nur.repos; extensions = with config.nur.repos;
(with bandithedoge.firefoxAddons; [ (with bandithedoge.firefoxAddons; [
sponsorblock sponsorblock
stylus stylus
#tridactyl #tridactyl
ublock-origin ublock-origin
]) ++ ])
++ (with rycee.firefox-addons; [
(with rycee.firefox-addons; [ bitwarden
bitwarden darkreader
darkreader floccus
floccus istilldontcareaboutcookies
istilldontcareaboutcookies image-search-options
image-search-options return-youtube-dislikes
return-youtube-dislikes undoclosetabbutton
undoclosetabbutton ])
]) ++ ++ (with firefox-addons; [
sound-volume
(with firefox-addons; [ google-container
sound-volume checkmarks-web-ext
google-container ttv-lol-pro
checkmarks-web-ext seventv
ttv-lol-pro opera-gx-witchcraft-purple
seventv ]);
opera-gx-witchcraft-purple
]);
}; };
}; };
} }

View file

@ -1,40 +1,44 @@
{ lib, stdenvNoCC, fetchFromGitHub, writeText }: {
let lib,
stdenvNoCC,
fetchFromGitHub,
writeText,
}: let
pname = "firefox-gx"; pname = "firefox-gx";
version = "8.5"; version = "8.5";
custom-menu = writeText "menu" "${builtins.readFile ./ogx_menu.css}"; custom-menu = writeText "menu" "${builtins.readFile ./ogx_menu.css}";
custom-sidebar = writeText "sidebar" "${builtins.readFile ./ogx_left-sidebar.css}"; custom-sidebar = writeText "sidebar" "${builtins.readFile ./ogx_left-sidebar.css}";
in in
stdenvNoCC.mkDerivation { stdenvNoCC.mkDerivation {
inherit pname version; inherit pname version;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Godiesc"; owner = "Godiesc";
repo = pname; repo = pname;
rev = "v.${version}"; rev = "v.${version}";
sha256 = "sha256-llffq16PZz5GxkLIJDeWN1d04SCCJFqwCLzOrxgwhYI="; sha256 = "sha256-llffq16PZz5GxkLIJDeWN1d04SCCJFqwCLzOrxgwhYI=";
}; };
installPhase = '' installPhase = ''
# Personal changes # Personal changes
sed -i 's/var(--fuchsia))/var(--purple))/' ./chrome/components/ogx_root-personal.css sed -i 's/var(--fuchsia))/var(--purple))/' ./chrome/components/ogx_root-personal.css
# Fix new tab background for nix # Fix new tab background for nix
substituteInPlace ./chrome/components/ogx_root-personal.css \ substituteInPlace ./chrome/components/ogx_root-personal.css \
--replace '../images/newtab/wallpaper-dark.png' "$out/chrome/images/newtab/private-dark.png" --replace '../images/newtab/wallpaper-dark.png' "$out/chrome/images/newtab/private-dark.png"
# TODO: make patch instead # TODO: make patch instead
cp -a ${custom-menu} ./chrome/components/ogx_menu.css cp -a ${custom-menu} ./chrome/components/ogx_menu.css
cp -a ${custom-sidebar} ./chrome/components/ogx_left-sidebar.css cp -a ${custom-sidebar} ./chrome/components/ogx_left-sidebar.css
mkdir -p $out mkdir -p $out
cp -r ./* $out cp -r ./* $out
''; '';
meta = with lib; { meta = with lib; {
description = "Firefox Theme CSS to Opera GX Lovers "; description = "Firefox Theme CSS to Opera GX Lovers ";
homepage = "https://github.com/Godiesc/firefox-gx"; homepage = "https://github.com/Godiesc/firefox-gx";
license = licenses.mspl; license = licenses.mspl;
}; };
} }

View file

@ -1,4 +1,9 @@
{ pkgs, lib, config, ... }: let {
pkgs,
lib,
config,
...
}: let
fontSize = config.services.device-vars.fontSize; fontSize = config.services.device-vars.fontSize;
dracula-xresources = pkgs.fetchFromGitHub { dracula-xresources = pkgs.fetchFromGitHub {
owner = "dracula"; owner = "dracula";
@ -6,8 +11,7 @@
rev = "539ef24e9b0c5498a82d59bfa2bad9b618d832a3"; rev = "539ef24e9b0c5498a82d59bfa2bad9b618d832a3";
sha256 = "sha256-6fltsAluqOqYIh2NX0I/LC3WCWkb9Fn8PH6LNLBQbrY="; sha256 = "sha256-6fltsAluqOqYIh2NX0I/LC3WCWkb9Fn8PH6LNLBQbrY=";
}; };
in in {
{
home.pointerCursor = { home.pointerCursor = {
name = "Dracula-cursors"; name = "Dracula-cursors";
package = pkgs.dracula-theme; package = pkgs.dracula-theme;
@ -48,7 +52,7 @@ in
platformTheme = "qtct"; platformTheme = "qtct";
}; };
xresources.extraConfig = builtins.readFile("${dracula-xresources}/Xresources"); xresources.extraConfig = builtins.readFile "${dracula-xresources}/Xresources";
xdg.configFile = let xdg.configFile = let
qtconf = '' qtconf = ''
@ -58,13 +62,11 @@ in
[Appearance] [Appearance]
icon_theme=Flat-Remix-Violet-Dark icon_theme=Flat-Remix-Violet-Dark
style='' style='';
; in {
in
{
"Kvantum/Dracula/Dracula.kvconfig".source = "${pkgs.dracula-theme}/share/Kvantum/Dracula-purple-solid/Dracula-purple-solid.kvconfig"; "Kvantum/Dracula/Dracula.kvconfig".source = "${pkgs.dracula-theme}/share/Kvantum/Dracula-purple-solid/Dracula-purple-solid.kvconfig";
"Kvantum/Dracula/Dracula.svg".source = "${pkgs.dracula-theme}/share/Kvantum/Dracula-purple-solid/Dracula-purple-solid.svg"; "Kvantum/Dracula/Dracula.svg".source = "${pkgs.dracula-theme}/share/Kvantum/Dracula-purple-solid/Dracula-purple-solid.svg";
"Kvantum/kvantum.kvconfig".text = "[General]\ntheme=Dracula"; "Kvantum/kvantum.kvconfig".text = "[General]\ntheme=Dracula";
"qt5ct/qt5ct.conf".text = qtconf + "kvantum"; "qt5ct/qt5ct.conf".text = qtconf + "kvantum";
}; };

View file

@ -1,4 +1,4 @@
{ ... }: { {...}: {
programs = { programs = {
wofi = { wofi = {
enable = true; enable = true;

View file

@ -1,4 +1,4 @@
{ nix-gaming, ... }: { {nix-gaming, ...}: {
imports = [ imports = [
nix-gaming.nixosModules.pipewireLowLatency nix-gaming.nixosModules.pipewireLowLatency
]; ];

View file

@ -1,8 +1,9 @@
{ lib {
, pkgs lib,
, config pkgs,
, hyprland config,
, ... hyprland,
...
}: let }: let
regreetBin = "${lib.getExe config.programs.regreet.package}"; regreetBin = "${lib.getExe config.programs.regreet.package}";
hyprBin = "${hyprland.packages.x86_64-linux.default}/bin"; hyprBin = "${hyprland.packages.x86_64-linux.default}/bin";

View file

@ -1,4 +1,4 @@
{ ... }: { {...}: {
services.kmscon = { services.kmscon = {
enable = true; enable = true;
hwRender = false; hwRender = false;

View file

@ -1,4 +1,4 @@
{ pkgs, ... }: { {pkgs, ...}: {
boot = { boot = {
initrd = { initrd = {
verbose = false; verbose = false;
@ -18,7 +18,7 @@
plymouth = { plymouth = {
enable = true; enable = true;
themePackages = [ pkgs.dracula-theme ]; themePackages = [pkgs.dracula-theme];
theme = "dracula"; theme = "dracula";
}; };
}; };

View file

@ -1,7 +1,6 @@
{ pkgs, ... }: { {pkgs, ...}: {
services = { services = {
# Enable CUPS to print documents. # Enable CUPS to print documents.
printing = { printing = {
enable = true; enable = true;
drivers = with pkgs; [ drivers = with pkgs; [

View file

@ -1,10 +1,10 @@
{ pkgs, ... }: { {pkgs, ...}: {
systemd.user.services.protonmail-bridge = { systemd.user.services.protonmail-bridge = {
description = "Protonmail Bridge"; description = "Protonmail Bridge";
enable = true; enable = true;
script = "${pkgs.protonmail-bridge}/bin/protonmail-bridge --noninteractive --log-level info"; script = "${pkgs.protonmail-bridge}/bin/protonmail-bridge --noninteractive --log-level info";
path = [ pkgs.gnome.gnome-keyring ]; # HACK: https://github.com/ProtonMail/proton-bridge/issues/176 path = [pkgs.gnome.gnome-keyring]; # HACK: https://github.com/ProtonMail/proton-bridge/issues/176
wantedBy = [ "graphical-session.target" ]; wantedBy = ["graphical-session.target"];
partOf = [ "graphical-session.target" ]; partOf = ["graphical-session.target"];
}; };
} }

View file

@ -1,4 +1,4 @@
{ pkgs, ... }: { {pkgs, ...}: {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
dracula-theme dracula-theme
]; ];

View file

@ -1,4 +1,4 @@
{ ... }: { {...}: {
services = { services = {
tailscale = { tailscale = {
enable = true; enable = true;