unify config a bit

This commit is contained in:
fuckwit 2025-01-11 19:52:15 +01:00
parent a57efbacda
commit 5e50a8235d
14 changed files with 166 additions and 1287 deletions

View File

@ -1,5 +1,8 @@
name: nix flake check
on: [push]
on:
push:
branches:
- 'renovate/**'
jobs:
nix-flake-update:

988
flake.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -3,16 +3,28 @@
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-23.11";
flake-utils.url = "github:numtide/flake-utils";
lanzaboote = {
url = "github:nix-community/lanzaboote";
inputs.nixpkgs.follows = "nixpkgs";
};
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
nur = {
url = "github:nix-community/NUR";
inputs.nixpkgs.follows = "nixpkgs";
};
deploy = {
url = "github:serokell/deploy-rs";
inputs.nixpkgs.follows = "nixpkgs";
};
nurpkgs.url = "github:nix-community/NUR";
sops-nix.url = "github:Mic92/sops-nix";
lanzaboote.url = "github:nix-community/lanzaboote";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
@ -23,24 +35,6 @@
inputs.nixpkgs.follows = "nixpkgs";
};
rycee-nurpkgs = {
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
};
};
nixpkgs-f2k = {
url = "github:fortuneteller2k/nixpkgs-f2k";
inputs.nixpkgs.follows = "nixpkgs";
};
devenv = {
url = "github:cachix/devenv/latest";
inputs.nixpkgs.follows = "nixpkgs";
};
nixvim = {
url = "git+https://git.fuckwit.dev/fuckwit/nixvim";
inputs.nixpkgs.follows = "nixpkgs";

View File

@ -76,10 +76,10 @@ in {
enable = mkEnableOption "Apply personal firefox defaults.";
package = mkPackageOption pkgs "firefox-bin" {};
extensions = mkOption {
extraExtensions = mkOption {
type = types.listOf types.package;
default = defaultExtensions;
description = "Firefox extensions to install.";
default = [];
description = "Extra Firefox extensions to install.";
};
settings = mkOption {
@ -102,7 +102,8 @@ in {
isDefault = true;
id = 0;
userChrome = builtins.readFile ./userChrome.css;
inherit (cfg) extensions settings;
extensions = defaultExtensions ++ cfg.extraExtensions;
inherit (cfg) settings;
};
};
};

View File

@ -1,29 +1,18 @@
{
nixpkgs,
nurpkgs,
nur,
home-manager,
devenv,
nixvim,
...
}: let
pkgs = import nixpkgs rec {
system = "x86_64-linux";
overlays = [(final: prev: {nixvim = nixvim.packages.${system}.default;}) nurpkgs.overlays.default];
};
nur = import nurpkgs {
inherit pkgs;
nurpkgs = pkgs;
overlays = [(final: prev: {nixvim = nixvim.packages.${system}.default;}) nur.overlays.default];
};
in {
work = home-manager.lib.homeManagerConfiguration {
inherit pkgs;
extraSpecialArgs = {
inherit devenv; # TODO: Remove dependency on devenv
ff-addons = nur.repos.rycee.firefox-addons;
};
modules = [
../home-modules/modules-list.nix
./work

View File

@ -1,76 +0,0 @@
/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/toolbars_below_content_v2.css made available under Mozilla Public License v. 2.0
See the above repository for updates as well as full license text. */
/* This requires Firefox 133
* By default tabs will be the top-most toolbar, but you can set the following pref to move them to bottom:
* userchrome.toolbars-below-content.tabs-at-bottom.enabled
*/
#navigator-toolbox{
display: contents;
--uc-navbar-height: 40px;
}
:root[uidensity="compact"] #navigator-toolbox{
--uc-navbar-height: 34px;
}
#main-window > body > #browser,
.global-notificationbox,
#tab-notification-deck,
#toolbar-menubar{
order: -1;
}
#TabsToolbar{
max-height: calc((var(--tab-min-height) + 2 * var(--tab-block-margin,0px)) * var(--multirow-n-rows,1));
}
#toolbar-menubar,
#TabsToolbar{
background: inherit !important;
}
@media (-moz-platform: linux){
:root[sizemode="normal"][customtitlebar] #toolbar-menubar{
border-top-left-radius: inherit;
border-top-right-radius: inherit;
}
#toolbar-menubar,
#TabsToolbar{
opacity: 1 !important;
will-change: unset !important;
}
#notification-popup[side="top"]{
margin-top: calc(-2 * var(--panel-padding-block) - 40px - 32px - 8.5em) !important;
}
#permission-popup[side="top"]{
margin-top: calc(-2 * var(--panel-padding-block) - 2.5em);
}
}
#nav-bar,
#PersonalToolbar{
background-image: linear-gradient(var(--toolbar-bgcolor),var(--toolbar-bgcolor)), var(--lwt-additional-images,var(--toolbar-bgimage)) !important;
background-position: top,var(--lwt-background-alignment);
background-position-y: calc(0px - var(--tab-min-height) - 2*var(--tab-block-margin,0px));
background-repeat: repeat,var(--lwt-background-tiling);
}
:root[lwtheme-image] #nav-bar,
:root[lwtheme-image] #PersonalToolbar{
background-image: linear-gradient(var(--toolbar-bgcolor),var(--toolbar-bgcolor)),var(--lwt-header-image), var(--lwt-additional-images,var(--toolbar-bgimage)) !important;
}
#PersonalToolbar{
background-position-y: calc(0px - var(--tab-min-height) - 2*var(--tab-block-margin,0px) - var( --uc-navbar-height));
}
#urlbar[breakout][breakout-extend]{
display: flex !important;
flex-direction: column-reverse !important;
transform: translateY(calc(var(--urlbar-container-height) - 100%));
}
#urlbar[breakout-extend]:not([usertyping]) > .urlbar-input-container::after{
display: flex;
content: "";
height: calc(var(--urlbar-min-height) - 2px - 2 * var(--urlbar-container-padding));
}
.urlbarView-body-inner{ border-top-style: none !important; }
#TabsToolbar{
order: 3
}

View File

@ -28,7 +28,7 @@
monitor = "";
path = "screenshot";
blur_passes = 1;
blur_passes = 2;
blur_size = 7;
noise = 1.17e-2;
};
@ -58,8 +58,8 @@
monitor = "";
size = "200,50";
outline_thickness = 2;
dots_size = 0.2; # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.35; # Scale of dots' absolute size, 0.0 - 1.0
dots_size = 0.2;
dots_spacing = 0.35;
dots_center = true;
outer_color = "rgba(0, 0, 0, 0)";
inner_color = "rgba(0, 0, 0, 0.2)";

View File

@ -1,7 +1,7 @@
{
config,
pkgs,
devenv,
# devenv,
...
}: {
home = {

View File

@ -1,15 +1,10 @@
{pkgs, ...}:
with pkgs; [
age # Modern encryption tool with small explicit keys
arandr # simple GUI for xrandr
atuin
dig # dns command-line tool
fd # "find" for files
# geckodriver # remote controll firefox
helix # modal editor
htop # process monitor
hyperfine # command-line benchmarking tool
# i3lock # screen locker
imagemagick # selection screenshot stuff
just # just a command runner
keepassxc # password manager
@ -22,21 +17,14 @@ with pkgs; [
mtr # traceroute
mumble # voice call client
ncdu # disk space info (a better du)
# neovim-unwrapped # best code editor on the planet
networkmanagerapplet # systray applet for NetworkManager
# nitrogen # wallpapger manager
nushell # A modern shell written in Rust
ouch # painless compression and decompression for your terminal
pavucontrol # pulseaudio volume control
playerctl # music player controller
podman-compose # podman manager
restic # incremental backup tool
ripgrep # fast grep
# rocketchat-desktop # company chat
sops # Mozilla sops (Secrets OPerationS) is an editor of encrypted files
thunderbird # email client
# xclip # clipboard support
# xsel # clipboard support (also for neovim)
zeal # offline documentation browser
zellij # A terminal workspace with batteries included
wl-clipboard

View File

@ -1,106 +1,6 @@
{
pkgs,
lib,
stdenv,
specialArgs,
...
}: let
extensions = with specialArgs.ff-addons; [
bitwarden
darkreader
i-dont-care-about-cookies
privacy-badger
ublock-origin
# tree-style-tab
# tridactyl
keepassxc-browser
];
userChrome = builtins.readFile ./userChrome.css;
# ~/.mozilla/firefox/PROFILE_NAME/prefs.js | user.js
settings = {
"app.normandy.first_run" = false;
"app.shield.optoutstudies.enabled" = false;
# disable updates (pretty pointless with nix)
"app.update.channel" = "default";
"browser.contentblocking.category" = "standard"; # "strict"
"browser.ctrlTab.recentlyUsedOrder" = false;
"browser.download.viewableInternally.typeWasRegistered.svg" = true;
"browser.download.viewableInternally.typeWasRegistered.webp" = true;
"browser.download.viewableInternally.typeWasRegistered.xml" = true;
"browser.search.region" = "DE";
"browser.shell.checkDefaultBrowser" = false;
"browser.tabs.loadInBackground" = true;
"browser.urlbar.placeholderName" = "EnteEnteLauf";
"browser.urlbar.showSearchSuggestionsFirst" = false;
# disable all the annoying quick actions
"browser.urlbar.quickactions.enabled" = false;
"browser.urlbar.quickactions.showPrefs" = false;
"browser.urlbar.shortcuts.quickactions" = false;
"browser.urlbar.suggest.quickactions" = false;
# disable tab preview on hover
"browser.tabs.hoverPreview.enabled" = false;
"browser.tabs.hoverPreview.showThumbnails" = false;
"distribution.searchplugins.defaultLocale" = "en-US";
"doh-rollout.balrog-migration-done" = true;
"doh-rollout.doneFirstRun" = true;
"general.useragent.locale" = "en-US";
"extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
"extensions.extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
"extensions.update.enabled" = false;
"extensions.webcompat.enable_picture_in_picture_overrides" = true;
"extensions.webcompat.enable_shims" = true;
"extensions.webcompat.perform_injections" = true;
"extensions.webcompat.perform_ua_overrides" = true;
"privacy.donottrackheader.enabled" = true;
# Yubikey
"security.webauth.u2f" = true;
"security.webauth.webauthn" = true;
"security.webauth.webauthn_enable_softtoken" = false;
"security.webauth.webauthn_enable_usbtoken" = true;
"network.dns.ipv4OnlyDomains" = "google.com";
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
"layout.word_select.stop_at_punctuation" = false;
};
in {
programs.firefox = {
{pkgs, ...}: {
personal.firefox = {
enable = true;
package = pkgs.firefox-bin;
profiles = {
default = {
isDefault = true;
id = 0;
inherit extensions settings userChrome;
};
};
# webapps = {
# rocket-chat = {
# url = "https://chat.hetzner.company";
# id = 1;
# genericName = "Internet Messenger";
# categories = ["Network" "InstantMessaging"];
# };
# };
extraExtensions = with pkgs.nur.repos.rycee.firefox-addons; [keepassxc-browser];
};
}

View File

@ -1,88 +0,0 @@
/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/toolbars_below_content.css made available under Mozilla Public License v. 2.0
See the above repository for updates as well as full license text. */
/* Moves tabs toolbar, bookmarks toolbar and main toolbar to the bottom of the window, and makes tabs be the bottom-most toolbar */
/* By default, menubar will stay on top with two options to select it's behavior - see below */
@-moz-document url(chrome://browser/content/browser.xhtml){
#titlebar{ -moz-appearance: none !important; }
#navigator-toolbox > div{ display: contents }
.global-notificationbox,
#mainPopupSet,
#browser,
#customization-container,
#tab-notification-deck{
order: -1;
}
/* Remove the next row if you want tabs to be the top-most row */
#titlebar{
order: 2;
}
#toolbar-menubar{
position: fixed;
display: flex;
width: 100vw;
top: 0px;
-moz-window-dragging: drag;
}
/* Remove bottom border that won't do anything useful when at bottom of the window */
#navigator-toolbox{ border-bottom: none !important; }
#toolbar-menubar > spacer{ flex-grow: 1 }
#urlbar[breakout][breakout-extend]{
display: flex !important;
flex-direction: column-reverse;
bottom: 0px !important; /* Change to 3-5 px if using compact_urlbar_megabar.css depending on toolbar density */
top: auto !important;
}
.urlbarView-body-inner{ border-top-style: none !important; }
/* Yeah, removes window controls. Likely not wanted on bottom row */
#TabsToolbar > .titlebar-buttonbox-container{ display: none }
#toolbar-menubar > .titlebar-buttonbox-container{ order: 1000 }
/* Fix panels sizing */
.panel-viewstack{ max-height: unset !important; }
/* Fullscreen mode support */
:root[sizemode="fullscreen"] #navigator-toolbox{ margin-top: 0 !important }
:root[sizemode="fullscreen"] #navigator-toolbox[style*="margin-top"]{ visibility: collapse }
#fullscr-toggler{ bottom: 0; top: unset !important; }
/* These three rules exist for compatibility with autohide_toolbox.css */
#navigator-toolbox{ bottom: 0px; transform-origin: bottom }
#main-window > body > box{ margin-top: 0 !important; }
#toolbar-menubar{ z-index: 1; background-color: var(--lwt-accent-color,black); }
:root[BookmarksToolbarOverlapsBrowser] #navigator-toolbox{
margin-block: calc(-1 * var(--bookmarks-toolbar-height)) 0 !important;
}
:root[BookmarksToolbarOverlapsBrowser] .newTabBrowserPanel{
padding-block: 0 var(--bookmarks-toolbar-height) !important;
}
/**************
Menubar options - By default, menubar is overlayed on top of web-content
***************/
/* Uncomment the following if you want static menubar on top of the window (make menubar enabled)
* Use when menubar is enabled to always show it */
/*
#browser,#customization-container{ padding-top: var(--uc-menubar-spacer,28px) }
*/
/* OR, uncomment the following if you want menubar to appear below content, above tabs toolbar */
#toolbar-menubar{ position: static; display: flex; margin-top: 0px !important; background-color: transparent }
/* set to "column-reverse" (without quotes) if you want tabs above menubar with the above option */
#titlebar{ flex-direction: column }
}

View File

@ -1,19 +1,82 @@
{pkgs, ...}: {
wayland.windowManager.hyprland = let
locker = "${pkgs.swaylock}/bin/swaylock";
set-dpms = "${pkgs.hyprland}/bin/hyprctl dispatcher dpms";
locked-dpms = pkgs.writeShellScript "locked-dpms.sh" ''
${pkgs.swayidle}/bin/swayidle -w \
timeout 10 'if pgrep -x swaylock; then ${set-dpms} off; fi' \
resume '${set-dpms} on'
'';
idle-script = pkgs.writeShellScript "idle-lock.sh" ''
${pkgs.swayidle}/bin/swayidle -w \
timeout 300 '${locker} -f' \
timeout 330 '${set-dpms} off' \
resume '${set-dpms} on'
'';
in {
services.hypridle = {
enable = true;
settings = {
general = {
lock_cmd = "pidof hyprlock || hyprlock";
};
listener = [
{
timeout = 300;
on-timeout = "loginctl lock-session";
}
{
timeout = 330;
on-timeout = "hyprctl dispatch dpms off";
on-resume = "hyprctl dispatch dpms on";
}
];
};
};
programs.hyprlock = {
enable = true;
settings = {
background = {
monitor = "";
path = "screenshot";
blur_passes = 2;
blur_size = 7;
noise = 1.17e-2;
};
label = [
{
monitor = "";
text = "$TIME";
color = "rgba(242, 243, 244, 0.75)";
font_size = 95;
position = "0, 300";
halign = "center";
valign = "center";
}
{
monitor = "";
text = ''cmd[update:1000] echo $(date +"%A, %B %d")'';
color = "rgba(242, 243, 244, 0.75)";
font_size = 22;
position = "0, 200";
halign = "center";
valign = "center";
}
];
input-field = {
monitor = "";
size = "200,50";
outline_thickness = 2;
dots_size = 0.2;
dots_spacing = 0.35;
dots_center = true;
outer_color = "rgba(0, 0, 0, 0)";
inner_color = "rgba(0, 0, 0, 0.2)";
font_color = "rgb(111, 45, 104)";
fade_on_empty = false;
rounding = -1;
check_color = "rgb(30, 107, 204)";
placeholder_text = ''<i><span foreground="##cdd6f4">Input Password...</span></i>'';
hide_input = false;
position = "0, -100";
halign = "center";
valign = "center";
};
};
};
wayland.windowManager.hyprland = {
enable = true;
settings = {
@ -22,16 +85,12 @@
exec-once = [
"${pkgs.waybar}/bin/waybar"
"${pkgs.mako}/bin/mako"
idle-script
locked-dpms
];
monitor = [
"eDP-1,1920x1080,0x0,1.333333" # Laptop screen
"desc:Dell Inc. DELL P2723DE 79RFH14,2560x1440,1440x0,1"
"desc:Dell Inc. DELL P2723DE 39RFH14,2560x1440,4000x0,1"
# "desc:LG Electronics LG ULTRAWIDE 0x000219F2,2560x1080,1440x0,1" # Primary @home
# "desc:Fujitsu Siemens Computers GmbH B22W-6 LED YV3U164923,1680x1050,4000x0,1" # Secondary @home
",preferred,auto,1" # Automatically configure everything else
];
@ -97,7 +156,7 @@
"$mod, return, exec, ${pkgs.alacritty}/bin/alacritty"
"$mod, D, exec, ${pkgs.rofi-wayland}/bin/rofi -show drun"
"$mod SHIFT, Q, killactive, "
"$mod, L, exec, ${locker}"
"$mod, L, exec, loginctl lock-session"
"$mod, V, togglefloating, "
"$mod, F, fullscreen, 1"
"$mod, P, pseudo, # dwindle"
@ -124,10 +183,6 @@
"$mod, mouse:273, resizewindow"
];
bindl = [
"$mod SHIFT, L, exec, ${locker}"
];
windowrulev2 = [
# KeePassXC
"float,class:(org.keepassxc.KeePassXC)"

View File

@ -1,9 +1,7 @@
{
self,
nixpkgs,
nixpkgs-stable,
sops-nix,
home-manager,
lanzaboote,
simple-nixos-mailserver,
inputs,

View File

@ -2,7 +2,6 @@
self,
flake-utils,
nixpkgs,
nurpkgs,
deploy,
home-manager,
...