This commit is contained in:
Evan Reichard 2025-03-28 22:46:22 -04:00
parent a78b85b344
commit f06bbcbdad
15 changed files with 317 additions and 58 deletions

77
flake.lock generated
View File

@ -41,6 +41,29 @@
"type": "github"
}
},
"firefox-addons": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"dir": "pkgs/firefox-addons",
"lastModified": 1743119709,
"narHash": "sha256-tlJY7MfAena/yi3lmd7y7vQGpLma4Q1BLtO4dvzF/Vs=",
"owner": "rycee",
"repo": "nur-expressions",
"rev": "f8861a4b09a181dd88f6626d0202d9225ae85d65",
"type": "gitlab"
},
"original": {
"dir": "pkgs/firefox-addons",
"owner": "rycee",
"repo": "nur-expressions",
"type": "gitlab"
}
},
"flake-compat": {
"locked": {
"lastModified": 1688025799,
@ -73,6 +96,40 @@
}
},
"flake-utils": {
"locked": {
"lastModified": 1629284811,
"narHash": "sha256-JHgasjPR0/J1J3DRm4KxM4zTyAj4IOJY8vIl75v/kPI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c5d161cc0af116a2e17f54316f0bf43f0819785c",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils-plus": {
"inputs": {
"flake-utils": "flake-utils_2"
},
"locked": {
"lastModified": 1715533576,
"narHash": "sha256-fT4ppWeCJ0uR300EH3i7kmgRZnAVxrH+XtK09jQWihk=",
"owner": "gytis-ivaskevicius",
"repo": "flake-utils-plus",
"rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f",
"type": "github"
},
"original": {
"owner": "gytis-ivaskevicius",
"repo": "flake-utils-plus",
"rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f",
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems"
},
@ -90,25 +147,6 @@
"type": "github"
}
},
"flake-utils-plus": {
"inputs": {
"flake-utils": "flake-utils"
},
"locked": {
"lastModified": 1715533576,
"narHash": "sha256-fT4ppWeCJ0uR300EH3i7kmgRZnAVxrH+XtK09jQWihk=",
"owner": "gytis-ivaskevicius",
"repo": "flake-utils-plus",
"rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f",
"type": "github"
},
"original": {
"owner": "gytis-ivaskevicius",
"repo": "flake-utils-plus",
"rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
@ -202,6 +240,7 @@
"inputs": {
"apple-silicon": "apple-silicon",
"disko": "disko",
"firefox-addons": "firefox-addons",
"home-manager": "home-manager",
"nixos-generators": "nixos-generators",
"nixpkgs": "nixpkgs_2",

View File

@ -21,6 +21,10 @@
url = "github:nix-community/nixos-generators";
inputs.nixpkgs.follows = "nixpkgs";
};
firefox-addons = {
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs:
@ -36,8 +40,6 @@
namespace = "reichardnix";
};
# home-manager.enable = true;
};
}

View File

@ -1,15 +1,26 @@
{ pkgs, ... }:
{ pkgs, config, ... }:
{
reichardnix = {
programs.btop.enable = true;
programs.direnv.enable = true;
programs.ghostty.enable = true;
programs.git.enable = true;
programs.k9s.enable = true;
programs.nvim.enable = true;
programs.hyprland.enable = true;
user = {
enable = true;
inherit (config.snowfallorg.user) name;
};
programs.aws.enable = false;
programs = {
browsers.firefox = {
enable = true;
gpuAcceleration = true;
hardwareDecoding = true;
};
btop.enable = true;
direnv.enable = true;
ghostty.enable = true;
git.enable = true;
hyprland.enable = true;
k9s.enable = true;
nvim.enable = true;
};
};
# Global Packages
@ -31,7 +42,5 @@
.mode column
'';
# Enable Home Manager & Self Manage
home.stateVersion = "25.05";
programs.home-manager.enable = true;
home.stateVersion = "24.11";
}

12
lib/module/default.nix Normal file
View File

@ -0,0 +1,12 @@
{ lib, ... }:
let
inherit (lib) mkOption types;
in
rec {
mkOpt =
type: default: description:
mkOption { inherit type default description; };
mkBoolOpt = mkOpt types.bool;
}

View File

@ -0,0 +1,112 @@
{ config, lib, pkgs, namespace, ... }:
let
inherit (lib)
types
mkIf
mkMerge
optionalAttrs
;
inherit (lib.${namespace}) mkBoolOpt mkOpt;
cfg = config.${namespace}.programs.browsers.firefox;
in
{
imports = lib.snowfall.fs.get-non-default-nix-files ./.;
options.${namespace}.programs.browsers.firefox = with types; {
enable = lib.mkEnableOption "Firefox";
extraConfig = mkOpt str "" "Extra configuration for the user profile JS file.";
gpuAcceleration = mkBoolOpt false "Enable GPU acceleration.";
hardwareDecoding = mkBoolOpt false "Enable hardware video decoding.";
policies = mkOpt attrs
{
CaptivePortal = false;
DisableFirefoxStudies = true;
DisableFormHistory = true;
DisablePocket = true;
DisableTelemetry = true;
DisplayBookmarksToolbar = false;
DontCheckDefaultBrowser = true;
FirefoxHome = {
Pocket = false;
Snippets = false;
};
PasswordManagerEnabled = false;
UserMessaging = {
ExtensionRecommendations = false;
SkipOnboarding = true;
};
ExtensionSettings = {
# Block All
# "*".installation_mode = "blocked";
# Bypass Paywalls
"magnolia@12.34" = {
install_url = "https://gitflic.ru/project/magnolia1234/bpc_uploads/blob/raw?file=bypass_paywalls_clean-latest.xpi";
installation_mode = "force_installed";
};
};
Preferences = { };
} "Policies to apply to firefox";
settings = mkOpt attrs { } "Settings to apply to the profile.";
extensions = mkOpt (with lib.types; listOf package)
(with pkgs.firefox-addons; [
bitwarden
darkreader
kagi-search
sponsorblock
ublock-origin
# bypass-paywalls-clean
]) "Extensions to install";
};
config = mkIf cfg.enable {
programs.firefox = {
enable = true;
inherit (cfg) policies;
profiles = {
${config.${namespace}.user.name} = {
inherit (cfg) extraConfig extensions;
inherit (config.${namespace}.user) name;
id = 0;
settings = mkMerge [
cfg.settings
{
"browser.aboutConfig.showWarning" = false;
"browser.aboutwelcome.enabled" = false;
"browser.sessionstore.warnOnQuit" = true;
"browser.shell.checkDefaultBrowser" = false;
"general.smoothScroll.msdPhysics.enabled" = true;
"intl.accept_languages" = "en-US,en";
# "devtools.chrome.enabled" = true;
# "xpinstall.signatures.required" = false;
}
(optionalAttrs cfg.gpuAcceleration {
"dom.webgpu.enabled" = true;
"gfx.webrender.all" = true;
"layers.gpu-process.enabled" = true;
"layers.mlgpu.enabled" = true;
})
(optionalAttrs cfg.hardwareDecoding {
"media.ffmpeg.vaapi.enabled" = true;
"media.gpu-process-decoder" = true;
"media.hardware-video-decoding.enabled" = true;
})
];
# userChrome = ./chrome/userChrome.css;
};
};
};
};
}

View File

@ -20,7 +20,7 @@ in
SHELL="$BASH"
PATH=~/.bin:$PATH
eval "$(thefuck --alias)"
set -o vi
set -o vi || true
bind "set show-mode-in-prompt on"
fastfetch
'';

View File

@ -26,6 +26,9 @@ in
}
];
extraConfig = {
user = {
email = "evan@reichard.io";
};
core = {
autocrlf = "input";
safecrlf = "true";

View File

@ -11,6 +11,7 @@ in
config = mkIf cfg.enable {
wayland.windowManager.hyprland = {
enable = true;
# systemd.enable = false;
extraConfig = builtins.readFile ./config/hyprland.conf;
};

View File

@ -0,0 +1,51 @@
{ config, lib, pkgs, namespace, ... }:
let
inherit (lib)
types
mkIf
mkDefault
mkMerge
;
inherit (lib.${namespace}) mkOpt;
cfg = config.${namespace}.user;
home-directory =
if cfg.name == null then
null
else if pkgs.stdenv.hostPlatform.isDarwin then
"/Users/${cfg.name}"
else
"/home/${cfg.name}";
in
{
options.${namespace}.user = {
enable = mkOpt types.bool false "Whether to configure the user account.";
email = mkOpt types.str "evan@reichard.io" "The email of the user.";
fullName = mkOpt types.str "Evan Reichard" "The full name of the user.";
home = mkOpt (types.nullOr types.str) home-directory "The user's home directory.";
name = mkOpt (types.nullOr types.str) config.snowfallorg.user.name "The user account.";
};
config = mkIf cfg.enable (mkMerge [
{
assertions = [
{
assertion = cfg.name != null;
message = "${namespace}.user.name must be set";
}
{
assertion = cfg.home != null;
message = "${namespace}.user.home must be set";
}
];
home = {
homeDirectory = mkDefault cfg.home;
username = mkDefault cfg.name;
};
programs.home-manager.enable = true;
}
]);
}

View File

@ -0,0 +1,33 @@
{ config, lib, pkgs, namespace, ... }:
let
inherit (lib) mkIf;
cfg = config.${namespace}.display-managers.sddm;
in
{
options.${namespace}.display-managers.sddm = {
enable = lib.mkEnableOption "sddm";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [
catppuccin-sddm
];
environment.sessionVariables = {
QT_SCREEN_SCALE_FACTORS = "2";
QT_FONT_DPI = "192";
};
services = {
displayManager = {
sddm = {
inherit (cfg) enable;
package = pkgs.kdePackages.sddm;
theme = "catppuccin-mocha";
wayland.enable = true;
};
};
};
};
}

View File

@ -0,0 +1,8 @@
{ inputs, ... }:
final: _prev: {
firefox-addons = import inputs.firefox-addons {
inherit (final) fetchurl;
inherit (final) lib;
inherit (final) stdenv;
};
}

View File

@ -1 +0,0 @@
firmware

View File

@ -10,6 +10,13 @@
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
time.timeZone = "America/New_York";
# Enable SSDM
reichardnix = {
display-managers.sddm = {
enable = true;
};
};
# Boot Loader Config
boot.loader = {
systemd-boot.enable = true;
@ -37,37 +44,20 @@
bluetooth.powerOnBoot = true;
};
# # User Config
# users.users.evanreichard = {
# isNormalUser = true;
# home = "/home/evanreichard";
# extraGroups = [ "wheel" "networkmanager" "video" ];
# shell = pkgs.bash;
# };
# Home Manager Config
# home-manager = {
# useGlobalPkgs = true;
# useUserPackages = true;
# # users.evanreichard = import ../home-manager/home.nix;
# };
# HyprLand Config
programs.hyprland.enable = true;
# environment.sessionVariables.WLR_DRM_DEVICES = "/dev/dri/card0";
programs.hyprland = {
enable = true;
withUWSM = true;
};
# System Packages
environment.systemPackages = with pkgs; [
ghostty
firefox
htop
tmux
vim
wget
# mesa-asahi-edge
# mesa
# hyprlock
# hypridle
];
system.stateVersion = "24.11";
}

Binary file not shown.