mirror of
https://git.in.rschanz.org/ryan77627/guix-config.git
synced 2025-02-11 22:11:17 -05:00
467 lines
16 KiB
Nix
467 lines
16 KiB
Nix
{ 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.
|
||
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;
|
||
#targets.genericLinux.enable = true;
|
||
fonts.fontconfig.enable = true;
|
||
fonts.fontconfig.defaultFonts = {
|
||
monospace = [ "DejaVu Sans Mono" ];
|
||
sansSerif = [ "DejaVu Sans" ];
|
||
serif = [ "DejaVu Serif" ];
|
||
};
|
||
|
||
# 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";
|
||
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 = "
|
||
#main-window .toolbar-items {
|
||
overflow: hidden;
|
||
transition: height 0.3s 0.3s !important;
|
||
}
|
||
/* Default state: Set initial height to enable animation */
|
||
#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 */
|
||
#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
|
||
yt-dlp
|
||
#pass
|
||
rustup
|
||
zoxide
|
||
nodePackages.pnpm
|
||
gcc
|
||
aerc
|
||
pkg-config
|
||
wttrbar
|
||
wl-clip-persist
|
||
gifski
|
||
waypaper
|
||
gdu
|
||
spotify-player
|
||
#hyprpicker
|
||
xwayland
|
||
xdg-desktop-portal
|
||
xdg-desktop-portal-gtk
|
||
mpv
|
||
imv
|
||
libva
|
||
libvdpau
|
||
#wpaperd
|
||
hypridle
|
||
#latest.firefox-nightly-bin
|
||
eza
|
||
wl-mirror
|
||
starship
|
||
|
||
# Wrapped programs for some env variables
|
||
(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
|
||
hyprpicker-git.packages.${pkgs.system}.hyprpicker
|
||
|
||
# Fonts!
|
||
noto-fonts
|
||
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;
|
||
}
|