Compare commits

...

6 Commits

Author SHA1 Message Date
Tom Alexander
d8e16f0b05
Do not install kubernetes clients on neelix. 2025-01-23 20:35:28 -05:00
Tom Alexander
e3fee206a1
Don't install kanshi on non-graphical installs. 2025-01-23 20:20:08 -05:00
Tom Alexander
3be710b4ad
Install meld to git's path when doing a graphical install. 2025-01-23 20:07:23 -05:00
Tom Alexander
b37f8a8e1a
Do not install my git config on neelix. 2025-01-23 19:55:13 -05:00
Tom Alexander
509cceb220
Only install fonts in graphical installs. 2025-01-23 19:48:25 -05:00
Tom Alexander
47408cfce0
Do not install firefox on neelix. 2025-01-23 19:14:25 -05:00
6 changed files with 287 additions and 170 deletions

View File

@ -36,7 +36,11 @@
me.chromium.enable = true; me.chromium.enable = true;
me.docker.enable = true; me.docker.enable = true;
me.emacs_flavor = "full"; me.emacs_flavor = "full";
me.firefox.enable = true;
me.git.config = ./roles/git/files/gitconfig_home;
me.graphical = true; me.graphical = true;
me.graphics_card_type = "amd"; me.graphics_card_type = "amd";
me.kanshi.enable = true;
me.kubernetes.enable = true;
me.sway.enable = true; me.sway.enable = true;
} }

View File

@ -8,114 +8,129 @@
{ {
imports = [ ]; imports = [ ];
programs.firefox = { options.me = {
enable = true; firefox.enable = lib.mkOption {
package = (pkgs.wrapFirefox (pkgs.firefox-unwrapped.override { pipewireSupport = true; }) { }); type = lib.types.bool;
languagePacks = [ "en-US" ]; default = false;
preferences = { example = true;
# "identity.sync.tokenserver.uri": "https://ffsync.fizz.buzz/token/1.0/sync/1.5"; description = "Whether we want to install firefox.";
"media.hardware-video-decoding.force-enabled" = true;
"media.ffmpeg.vaapi.enabled" = true;
"doh-rollout.doorhanger-decision" = "UIDisabled";
"dom.security.https_only_mode" = true;
"dom.security.https_only_mode_ever_enabled" = true;
"extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
# Disable ads
"extensions.pocket.enabled" = false;
"browser.newtabpage.activity-stream.showSponsored" = false;
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
"browser.newtabpage.activity-stream.feeds.section.topstories" = false;
"browser.newtabpage.pinned" = "[]";
"browser.newtabpage.activity-stream.section.highlights.includePocket" = false;
"browser.topsites.contile.enabled" = false;
# Disable cache when devtools are open.
"devtools.cache.disabled" = true;
# Do not track header.
"privacy.donottrackheader.enabled" = true;
# Tell websites not to share or sell my data.
"privacy.globalprivacycontrol.enabled" = true;
# Disable "studies" (slice testing)
"app.shield.optoutstudies.enabled" = false;
# Disable attribution which is used by advertisers to track you.
"dom.private-attribution.submission.enabled" = false;
# Disable battery status, used to track users.
"dom.battery.enabled" = false;
# Disable that websites can get notifications if you copy, paste, or cut something from a web page, and it lets them know which part of the page had been selected.
#
# This breaks copying from BigQuery https://github.com/microsoft/monaco-editor/issues/1540
# dom.event.clipboardevents.enabled: false
# Isolates all browser identifier sources (e.g. cookies) to the first party domain, with the goal of preventing tracking across different domains.
"privacy.firstparty.isolate" = true;
# Do not preload URLs that auto-complete in the address bar.
"browser.urlbar.speculativeConnect.enabled" = false;
# Do not resist fingerprinting because that tells websites to use light mode.
# https://bugzilla.mozilla.org/show_bug.cgi?id=1732114
"privacy.resistFingerprinting" = false; # (default false)
# Instead, enable fingerprinting protection, which allows configuring an override.
"privacy.fingerprintingProtection" = true;
# Allow sending dark mode preference to websites.
# Allow sending timezone to websites.
"privacy.fingerprintingProtection.overrides" =
"+AllTargets,-CSSPrefersColorScheme,-JSDateTimeUTC,-CanvasExtractionBeforeUserInputIsBlocked";
# Disable weather on new tab page
"browser.newtabpage.activity-stream.showWeather" = false;
};
# Check about:policies#documentation and https://mozilla.github.io/policy-templates/ for options.
policies = {
DisableTelemetry = true;
DisplayBookmarksToolbar = "newtab";
# Check about:support for extension/add-on ID strings.
# Valid strings for installation_mode are "allowed", "blocked",
# "force_installed" and "normal_installed".
ExtensionSettings = {
# "*".installation_mode = "blocked"; # blocks all addons except the ones specified below
"uBlock0@raymondhill.net" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
installation_mode = "force_installed";
};
"firefox@teleparty.com" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/netflix-party-is-now-teleparty/latest.xpi";
installation_mode = "normal_installed";
};
"@ublacklist" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublacklist/latest.xpi";
installation_mode = "normal_installed";
};
"@react-devtools" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/react-devtools/latest.xpi";
installation_mode = "normal_installed";
};
};
}; };
}; };
environment.persistence."/persist" = lib.mkIf (!config.me.buildingIso) { config = lib.mkIf config.me.firefox.enable (
hideMounts = true; lib.mkMerge [
users.talexander = { (lib.mkIf config.me.graphical {
directories = [ programs.firefox = {
{ enable = true;
directory = ".mozilla"; package = (pkgs.wrapFirefox (pkgs.firefox-unwrapped.override { pipewireSupport = true; }) { });
user = "talexander"; languagePacks = [ "en-US" ];
group = "talexander"; preferences = {
mode = "0700"; # "identity.sync.tokenserver.uri": "https://ffsync.fizz.buzz/token/1.0/sync/1.5";
} "media.hardware-video-decoding.force-enabled" = true;
]; "media.ffmpeg.vaapi.enabled" = true;
}; "doh-rollout.doorhanger-decision" = "UIDisabled";
}; "dom.security.https_only_mode" = true;
environment.persistence."/state" = lib.mkIf (!config.me.buildingIso) { "dom.security.https_only_mode_ever_enabled" = true;
hideMounts = true; "extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
users.talexander = { # Disable ads
directories = [ "extensions.pocket.enabled" = false;
{ "browser.newtabpage.activity-stream.showSponsored" = false;
directory = ".cache/mozilla"; "browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
user = "talexander"; "browser.newtabpage.activity-stream.feeds.section.topstories" = false;
group = "talexander"; "browser.newtabpage.pinned" = "[]";
mode = "0700"; "browser.newtabpage.activity-stream.section.highlights.includePocket" = false;
} "browser.topsites.contile.enabled" = false;
]; # Disable cache when devtools are open.
}; "devtools.cache.disabled" = true;
}; # Do not track header.
"privacy.donottrackheader.enabled" = true;
# Tell websites not to share or sell my data.
"privacy.globalprivacycontrol.enabled" = true;
# Disable "studies" (slice testing)
"app.shield.optoutstudies.enabled" = false;
# Disable attribution which is used by advertisers to track you.
"dom.private-attribution.submission.enabled" = false;
# Disable battery status, used to track users.
"dom.battery.enabled" = false;
# Disable that websites can get notifications if you copy, paste, or cut something from a web page, and it lets them know which part of the page had been selected.
#
# This breaks copying from BigQuery https://github.com/microsoft/monaco-editor/issues/1540
# dom.event.clipboardevents.enabled: false
# Isolates all browser identifier sources (e.g. cookies) to the first party domain, with the goal of preventing tracking across different domains.
"privacy.firstparty.isolate" = true;
# Do not preload URLs that auto-complete in the address bar.
"browser.urlbar.speculativeConnect.enabled" = false;
# Do not resist fingerprinting because that tells websites to use light mode.
# https://bugzilla.mozilla.org/show_bug.cgi?id=1732114
"privacy.resistFingerprinting" = false; # (default false)
# Instead, enable fingerprinting protection, which allows configuring an override.
"privacy.fingerprintingProtection" = true;
# Allow sending dark mode preference to websites.
# Allow sending timezone to websites.
"privacy.fingerprintingProtection.overrides" =
"+AllTargets,-CSSPrefersColorScheme,-JSDateTimeUTC,-CanvasExtractionBeforeUserInputIsBlocked";
# Disable weather on new tab page
"browser.newtabpage.activity-stream.showWeather" = false;
};
# Check about:policies#documentation and https://mozilla.github.io/policy-templates/ for options.
policies = {
DisableTelemetry = true;
DisplayBookmarksToolbar = "newtab";
# Check about:support for extension/add-on ID strings.
# Valid strings for installation_mode are "allowed", "blocked",
# "force_installed" and "normal_installed".
ExtensionSettings = {
# "*".installation_mode = "blocked"; # blocks all addons except the ones specified below
"uBlock0@raymondhill.net" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
installation_mode = "force_installed";
};
"firefox@teleparty.com" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/netflix-party-is-now-teleparty/latest.xpi";
installation_mode = "normal_installed";
};
"@ublacklist" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublacklist/latest.xpi";
installation_mode = "normal_installed";
};
"@react-devtools" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/react-devtools/latest.xpi";
installation_mode = "normal_installed";
};
};
};
};
environment.persistence."/persist" = lib.mkIf (!config.me.buildingIso) {
hideMounts = true;
users.talexander = {
directories = [
{
directory = ".mozilla";
user = "talexander";
group = "talexander";
mode = "0700";
}
];
};
};
environment.persistence."/state" = lib.mkIf (!config.me.buildingIso) {
hideMounts = true;
users.talexander = {
directories = [
{
directory = ".cache/mozilla";
user = "talexander";
group = "talexander";
mode = "0700";
}
];
};
};
})
]
);
} }

View File

@ -8,20 +8,22 @@
{ {
imports = [ ]; imports = [ ];
fonts = { config = lib.mkIf config.me.graphical {
enableDefaultPackages = false; fonts = {
packages = with pkgs; [ enableDefaultPackages = false;
cascadia-code packages = with pkgs; [
source-sans-pro cascadia-code
source-serif-pro source-sans-pro
noto-fonts-cjk-sans source-serif-pro
noto-fonts-cjk-serif noto-fonts-cjk-sans
noto-fonts-color-emoji noto-fonts-cjk-serif
]; noto-fonts-color-emoji
];
fontconfig = { fontconfig = {
localConf = (builtins.readFile ./files/fonts.conf); localConf = (builtins.readFile ./files/fonts.conf);
useEmbeddedBitmaps = true; useEmbeddedBitmaps = true;
};
}; };
}; };
} }

View File

@ -8,15 +8,78 @@
{ {
imports = [ ]; imports = [ ];
environment.systemPackages = with pkgs; [ options.me = {
git git.config = lib.mkOption {
]; type = lib.types.nullOr lib.types.path;
default = null;
home-manager.users.talexander = example = ./files/gitconfig_home;
{ pkgs, ... }: description = "A git config file.";
{
home.file.".gitconfig" = {
source = ./files/gitconfig_home;
};
}; };
};
config = lib.mkMerge [
{
environment.systemPackages = with pkgs; [
git
];
}
(lib.mkIf (config.me.git.config != null) {
home-manager.users.talexander =
{ pkgs, ... }:
{
home.file.".gitconfig" = {
source = config.me.git.config;
};
};
})
(lib.mkIf (config.me.graphical) {
nixpkgs.overlays = [
(final: prev: {
git = pkgs.buildEnv {
name = prev.git.name;
paths = [
prev.git
];
extraOutputsToInstall = [
"man"
"doc"
"info"
];
buildInputs = [ final.makeWrapper ];
postBuild = ''
wrapProgram $out/bin/git --prefix PATH : ${
lib.makeBinPath [
final.meld
]
}
'';
};
})
];
})
(lib.mkIf (!config.me.graphical) {
nixpkgs.overlays = [
(final: prev: {
git = pkgs.buildEnv {
name = prev.git.name;
paths = [
prev.git
];
extraOutputsToInstall = [
"man"
"doc"
"info"
];
buildInputs = [ final.makeWrapper ];
postBuild = ''
wrapProgram $out/bin/git --prefix PATH : ${
lib.makeBinPath [
]
}
'';
};
})
];
})
];
} }

View File

@ -17,21 +17,40 @@ in
{ {
imports = [ ]; imports = [ ];
environment.systemPackages = with pkgs; [ options.me = {
kanshi kanshi.enable = lib.mkOption {
]; type = lib.types.bool;
default = false;
me.swayIncludes = [ example = true;
exec_kanshi description = "Whether we want to install kanshi.";
];
home-manager.users.talexander =
{ pkgs, ... }:
{
home.file = {
".config/kanshi/config" = {
source = ./files/config_kanshi;
};
};
}; };
};
config = lib.mkIf config.me.kanshi.enable (
lib.mkMerge [
{
environment.systemPackages = with pkgs; [
];
}
(lib.mkIf config.me.graphical {
environment.systemPackages = with pkgs; [
kanshi
];
me.swayIncludes = [
exec_kanshi
];
home-manager.users.talexander =
{ pkgs, ... }:
{
home.file = {
".config/kanshi/config" = {
source = ./files/config_kanshi;
};
};
};
})
]
);
} }

View File

@ -32,31 +32,45 @@ in
{ {
imports = [ ]; imports = [ ];
environment.systemPackages = with pkgs; [ options.me = {
kubectl kubernetes.enable = lib.mkOption {
kubeswitch type = lib.types.bool;
stern default = false;
alias_kx example = true;
alias_ks description = "Whether we want to install kubernetes.";
alias_k
alias_ka
alias_kdel
alias_kd
alias_klog
];
environment.persistence."/persist" = lib.mkIf (!config.me.buildingIso) {
hideMounts = true;
users.talexander = {
directories = [
{
directory = ".kube";
user = "talexander";
group = "talexander";
mode = "0750";
}
];
}; };
}; };
config = lib.mkIf config.me.kubernetes.enable (
lib.mkMerge [
{
environment.systemPackages = with pkgs; [
kubectl
kubeswitch
stern
alias_kx
alias_ks
alias_k
alias_ka
alias_kdel
alias_kd
alias_klog
];
environment.persistence."/persist" = lib.mkIf (!config.me.buildingIso) {
hideMounts = true;
users.talexander = {
directories = [
{
directory = ".kube";
user = "talexander";
group = "talexander";
mode = "0750";
}
];
};
};
}
]
);
} }