guix-dotfiles/home-config/nix-home-manager/home.nix

473 lines
16 KiB
Nix
Raw Normal View History

2025-01-20 21:29:11 -05:00
{ config, pkgs, hyprland, nixgl, hyprpicker-git, wpaperd, hyprlock, ... }:
let
lock-false = {
Value = false;
Status = "locked";
};
lock-true = {
Value = true;
Status = "locked";
};
in
{
# Home Manager needs a bit of information about you and the paths it should
# manage.
home.username = "ryan";
home.homeDirectory = "/home/ryan";
# Ignore news
news.display = "silent";
# This value determines the Home Manager release that your configuration is
# compatible with. This helps avoid breakage when a new Home Manager release
# introduces backwards incompatible changes.
#
# You should not change this value, even if you update Home Manager. If you do
# want to update the value, then make sure to first check the Home Manager
# release notes.
2024-02-16 20:10:31 -05:00
home.stateVersion = "23.11"; # Please read the comment before changing.
# This value will set some environment variables to allow home-manager to
# function better outside of NixOS
nixpkgs.config.allowUnfree = true;
2024-02-16 20:10:31 -05:00
#targets.genericLinux.enable = true;
fonts.fontconfig.enable = true;
fonts.fontconfig.defaultFonts = {
monospace = [ "DejaVu Sans Mono" ];
sansSerif = [ "DejaVu Sans" ];
serif = [ "DejaVu Serif" ];
};
2024-10-11 16:54:40 -04:00
# wayland.windowManager.hyprland.enable = true;
# Install firefox and add some customizations
programs.firefox = {
enable = true;
policies = {
EnableTrackingProtection = {
Value = true;
Locked = true;
Cryptomining = true;
Fingerprinting = true;
EmailTracking = true;
};
UserMessaging = {
WhatsNew = false;
ExtensionRecommendations = false;
FeatureRecommendations = false;
UrlbarInterventions = false;
SkipOnboarding = true;
MoreFromMozilla = false;
Labs = false;
Locked = true;
};
DisableAppUpdate = true;
DisableAccounts = true;
DisableFirefoxAccounts = true;
DisableFirefoxStudies = true;
DisablePocket = true;
DisableTelemetry = true;
AutofillAddressEnabled = false;
AutofillCreditCardEnabled = false;
DisableMasterPasswordCreation = true;
PasswordManagerEnabled = false;
PrimaryPassword = false;
OfferToSaveLogins = false;
NoDefaultBookmarks = true;
OverrideFirstRunPage = "";
OverridePostUpdatePage = "";
FirefoxHome = {
Search = true;
TopSites = true;
SponsoredTopSites = false;
Highlights = false;
Pocket = false;
SponsoredPocket = false;
Snippets = false;
Locked = true;
};
SearchSuggestEnabled = true;
FirefoxSuggest = {
WebSuggestions = true;
SponsoredSuggestions = false;
ImproveSuggest = false;
Locked = true;
};
PictureInPicture = lock-true;
HardwareAcceleration = true;
Certificates = {
ImportEnterpriseRoots = true;
};
ExtensionSettings = {
#"*".installation_mode = "blocked";
# uBlock Origin
"uBlock0@raymondhill.net" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
installation_mode = "force_installed";
};
# Bitwarden
"{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/bitwarden-password-manager/latest.xpi";
2024-12-29 21:45:59 -05:00
installation_mode = "normal_installed";
};
# SponsorBlock
"sponsorBlocker@ajay.app" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/sponsorblock/latest.xpi";
installation_mode = "force_installed";
};
# DeArrow
"deArrow@ajay.app" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/dearrow/latest.xpi";
installation_mode = "force_installed";
};
# Return Youtube Dislike
"{762f9885-5a13-4abd-9c77-433dcd38b8fd}" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/return-youtube-dislikes/latest.xpi";
installation_mode = "force_installed";
};
# Youtube Nonstop
"{0d7cafdd-501c-49ca-8ebb-e3341caaa55e}" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/youtube-nonstop/latest.xpi";
installation_mode = "force_installed";
};
# Sidebery
"{3c078156-979c-498b-8990-85f7987dd929}" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/sidebery/latest.xpi";
installation_mode = "normal_installed";
};
# TamperMonkey
"firefox@tampermonkey.net" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/tampermonkey/latest.xpi";
installation_mode = "force_installed";
};
# Floccus
"floccus@handmadeideas.org" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/floccus/latest.xpi";
installation_mode = "force_installed";
};
};
Preferences = {
"browser.startup.homepage" = "https://d.in.rschanz.org";
"extensions.activeThemeID" = {
Value = "firefox-compact-dark@mozilla.org";
Status = "locked";
};
"toolkit.legacyUserProfileCustomizations.stylesheets" = lock-true;
"xpinstall.whitelist.required" = lock-true;
"dom.webgpu.enabled" = lock-true;
"media.eme.enabled" = lock-true;
"general.autoScroll" = lock-true;
"general.smoothScroll" = lock-true;
"browser.crashReports.unsubmittedCheck.autoSubmit2" = lock-false;
"browser.aboutConfig.showWarning" = lock-false;
};
};
profiles.${config.home.username} = {
name = "${config.home.username}";
isDefault = true;
containersForce = true;
containers = {
rit = {
name = "RIT";
color = "orange";
icon = "dollar";
id = 1;
};
ritwork = {
name = "RIT Work";
color = "green";
icon = "briefcase";
id = 2;
};
other = {
name = "Other";
color = "blue";
icon = "fingerprint";
id = 3;
};
};
search = {
force = true;
default = "DuckDuckGo";
order = ["DuckDuckGo" "Google"];
engines = {
"Nix Packages" = {
urls = [
{
template = "https://search.nixos.org/packages";
params = [
{
name = "type";
value = "packages";
}
{
name = "channel";
value = "unstable";
}
{
name = "query";
value = "{searchTerms}";
}
];
}
];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = ["@np"];
};
};
};
userChrome = "
2024-12-29 21:45:59 -05:00
#main-window .toolbar-items {
overflow: hidden;
transition: height 0.3s 0.3s !important;
}
/* Default state: Set initial height to enable animation */
2024-12-29 21:45:59 -05:00
#main-window .toolbar-items { height: 3em !important; }
#main-window .titlebar-button { height: 3em !important; }
#main-window[uidensity=\"touch\"] .toolbar-items { height: 3.35em !important; }
#main-window[uidensity=\"compact\"] .toolbar-items { height: 2.7em !important; }
/* Hidden state: Hide native tabs strip */
2024-12-29 21:45:59 -05:00
#main-window[titlepreface*=\"\"] .toolbar-items { height: 0 !important; }
#main-window[titlepreface*=\"\"] .titlebar-button { height: 0 !important; }
/* Hidden state: Fix z-index of active pinned tabs */
#main-window[titlepreface*=\"\"] #tabbrowser-tabs { z-index: 0 !important; }
/* Sidebery expand on mouse-over and hide otherwise */
/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/autohide_sidebar.css made available under Mozilla Public License v. 2.0
See the above repository for updates as well as full license text. */
/* Show sidebar only when the cursor is over it */
/* The border controlling sidebar width will be removed so you'll need to modify these values to change width */
#sidebar-box{
--uc-sidebar-width: 60px;
--uc-sidebar-hover-width: 230px;
--uc-autohide-sidebar-delay: 200ms; /* Wait 0.2s before hiding sidebar */
--uc-autohide-transition-duration: 115ms;
--uc-autohide-transition-type: linear;
--browser-area-z-index-sidebar: 3;
position: relative;
min-width: var(--uc-sidebar-width) !important;
width: var(--uc-sidebar-width) !important;
max-width: var(--uc-sidebar-width) !important;
z-index: var(--browser-area-z-index-sidebar,3);
}
#sidebar-box[positionend]{ direction: rtl }
#sidebar-box[positionend] > *{ direction: ltr }
#sidebar-box[positionend]:-moz-locale-dir(rtl){ direction: ltr }
#sidebar-box[positionend]:-moz-locale-dir(rtl) > *{ direction: rtl }
#main-window[sizemode=\"fullscreen\"] #sidebar-box{ --uc-sidebar-width: 1px; }
#sidebar-splitter{ display: none }
#sidebar-header{
overflow: hidden;
color: var(--chrome-color, inherit) !important;
padding-inline: 0 !important;
}
#sidebar-header::before,
#sidebar-header::after{
content: \"\";
display: flex;
padding-left: 8px;
}
#sidebar-header,
#sidebar{
transition: min-width var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important;
min-width: var(--uc-sidebar-width) !important;
will-change: min-width;
}
#sidebar-box:hover > #sidebar-header,
#sidebar-box:hover > #sidebar{
min-width: var(--uc-sidebar-hover-width) !important;
transition-delay: 0ms !important;
}
.sidebar-panel{
background-color: transparent !important;
color: var(--newtab-text-primary-color) !important;
}
.sidebar-panel #search-box{
-moz-appearance: none !important;
background-color: rgba(249,249,250,0.1) !important;
color: inherit !important;
}
/* Add sidebar divider and give it background */
#sidebar,
#sidebar-header{
background-color: inherit !important;
border-inline: 1px solid rgb(80,80,80);
border-inline-width: 0px 1px;
}
#sidebar-box:not([positionend]) > :-moz-locale-dir(rtl),
#sidebar-box[positionend] > *{
border-inline-width: 1px 0px;
}
/* Move statuspanel to the other side when sidebar is hovered so it doesn't get covered by sidebar */
#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel{
inset-inline: auto 0px !important;
}
#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel-label{
margin-inline: 0px !important;
border-left-style: solid !important;
}
/* Remove the tabs label and move the Sidebary icon to the center of the box */
#sidebar-box:hover [id=\"sidebar-icon\"] {
transform: translateX(0px) !important;
transition-delay: 0ms !important;
}
#sidebar-box [id=\"sidebar-icon\"] {
transform: translateX(9px);
transition: transform var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important;
}
#sidebar-box [id=\"sidebar-title\"] {
visibility: hidden !important;
transition: visibility var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important;
}
#sidebar-box:hover [id=\"sidebar-title\"] {
visibility: visible !important;
transition-delay: 0ms !important;
}
";
};
};
programs.starship = {
enable = true;
settings = {
add_newline = false;
character = {
success_symbol = "[](bold green)";
error_symbol = "[](bold red)";
};
time = {
disabled = false;
format = "\[ $time \]($style)";
time_format = "%T";
};
};
};
# The home.packages option allows you to install Nix packages into your
# environment.
home.packages = with pkgs; [
# # Adds the 'hello' command to your environment. It prints a friendly
# # "Hello, world!" when run.
# pkgs.hello
2023-05-29 01:32:56 -04:00
yt-dlp
2023-10-03 10:36:12 -04:00
#pass
2023-09-21 17:08:39 -04:00
rustup
zoxide
nodePackages.pnpm
2023-09-21 17:08:39 -04:00
gcc
2024-03-29 15:19:07 -04:00
aerc
2023-09-21 17:08:39 -04:00
pkg-config
wttrbar
wl-clip-persist
gifski
2023-11-08 01:16:39 -05:00
waypaper
2023-11-18 00:03:46 -05:00
gdu
spotify-player
2025-01-20 21:29:11 -05:00
#hyprpicker
xwayland
xdg-desktop-portal
xdg-desktop-portal-gtk
mpv
imv
libva
libvdpau
#wpaperd
hypridle
#latest.firefox-nightly-bin
eza
2024-12-29 21:45:59 -05:00
wl-mirror
starship
2025-01-22 12:02:54 -05:00
taskwarrior3
delta
# Here until i can fix firefox's stupid devtools issue
chromium
# Wrapped programs for some env variables
2025-01-20 21:29:11 -05:00
(pkgs.writeScriptBin "hyprlock" ''
#! ${pkgs.bash}/bin/bash
export LD_PRELOAD="/run/current-system/profile/lib/libpam.so.0:/run/current-system/profile/lib/libfontconfig.so:$LD_PRELOAD"
exec ${hyprlock.packages.${pkgs.system}.hyprlock}/bin/hyprlock "$@"
'')
# Flakes specific things defined in flake.nix
hyprland.packages.${pkgs.system}.default
hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland
nixgl.packages.${pkgs.system}.nixGLIntel
wpaperd.packages.${pkgs.system}.wpaperd
2025-01-20 21:29:11 -05:00
hyprpicker-git.packages.${pkgs.system}.hyprpicker
# Fonts!
noto-fonts
2024-10-21 16:10:27 -04:00
dejavu_fonts
liberation_ttf
noto-fonts-cjk-sans
noto-fonts-emoji
# # It is sometimes useful to fine-tune packages, for example, by applying
# # overrides. You can do that directly here, just don't forget the
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
# # fonts?
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
# # You can also create simple shell scripts directly inside your
# # configuration. For example, this adds a command 'my-hello' to your
# # environment:
# (pkgs.writeShellScriptBin "my-hello" ''
# echo "Hello, ${config.home.username}!"
# '')
];
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
home.file = {
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
# # symlink to the Nix store copy.
# ".screenrc".source = dotfiles/screenrc;
# # You can also set the file content immediately.
# ".gradle/gradle.properties".text = ''
# org.gradle.console=verbose
# org.gradle.daemon.idletimeout=3600000
# '';
};
# You can also manage environment variables but you will have to manually
# source
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/ryan/etc/profile.d/hm-session-vars.sh
#
# if you don't want to manage your shell through Home Manager.
home.sessionVariables = {
# EDITOR = "emacs";
};
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
}