made leyla configs optional

This commit is contained in:
Leyla Becker 2025-06-01 13:00:34 -05:00
parent 4f195245ce
commit 2820252c54
6 changed files with 477 additions and 470 deletions

View file

@ -80,7 +80,7 @@ in {
userEmail = "evesnrobins@gmail.com"; userEmail = "evesnrobins@gmail.com";
extraConfig.init.defaultBranch = "main"; extraConfig.init.defaultBranch = "main";
}; };
vscode = { vscode = {
enable = true; enable = true;
package = pkgs.vscodium; package = pkgs.vscodium;

View file

@ -1,8 +1,4 @@
{ {osConfig, ...}: {
osConfig,
config,
...
}: {
imports = [ imports = [
./i18n.nix ./i18n.nix
./packages.nix ./packages.nix
@ -108,44 +104,5 @@
}; };
}; };
}; };
programs = {
# Let Home Manager install and manage itself.
home-manager.enable = true;
# set up git defaults
git = {
enable = true;
userName = "Leyla Becker";
userEmail = "git@jan-leila.com";
extraConfig.init.defaultBranch = "main";
};
# add direnv to auto load flakes for development
direnv = {
enable = true;
enableBashIntegration = true;
nix-direnv.enable = true;
config = {
global.hide_env_diff = true;
whitelist.exact = ["/home/leyla/documents/code/nix-config"];
};
};
bash.enable = true;
openssh = {
authorizedKeys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJHeItmt8TRW43uNcOC+eIurYC7Eunc0V3LGocQqLaYj leyla@horizon"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIILimFIW2exEH/Xo7LtXkqgE04qusvnPNpPWSCeNrFkP leyla@defiant"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKBiZkg1c2aaNHiieBX4cEziqvJVj9pcDfzUrKU/mO0I leyla@twilight"
];
hostKeys = [
{
type = "ed25519";
path = "${config.home.username}_${osConfig.networking.hostName}_ed25519";
}
];
};
};
}; };
} }

View file

@ -2,340 +2,345 @@
lib, lib,
pkgs, pkgs,
inputs, inputs,
osConfig,
... ...
}: { }: let
programs.firefox = { is-desktop-user = osConfig.host.users.leyla.isDesktopUser;
enable = true; in {
profiles.leyla = { config = lib.mkIf is-desktop-user {
settings = { programs.firefox = {
"browser.search.defaultenginename" = "Searx"; enable = true;
"browser.search.order.1" = "Searx"; profiles.leyla = {
}; settings = {
"browser.search.defaultenginename" = "Searx";
"browser.search.order.1" = "Searx";
};
search = { search = {
force = true; force = true;
default = "Searx"; default = "Searx";
engines = { engines = {
"Nix Packages" = { "Nix Packages" = {
urls = [ urls = [
{ {
template = "https://search.nixos.org/packages"; template = "https://search.nixos.org/packages";
params = [ params = [
{ {
name = "type"; name = "type";
value = "packages"; value = "packages";
} }
{ {
name = "query"; name = "query";
value = "{searchTerms}"; value = "{searchTerms}";
} }
]; ];
} }
]; ];
icon = "''${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; icon = "''${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = ["@np"]; definedAliases = ["@np"];
}; };
"NixOS Wiki" = { "NixOS Wiki" = {
urls = [{template = "https://nixos.wiki/index.php?search={searchTerms}";}]; urls = [{template = "https://nixos.wiki/index.php?search={searchTerms}";}];
icon = "https://nixos.wiki/favicon.png"; icon = "https://nixos.wiki/favicon.png";
updateInterval = 24 * 60 * 60 * 1000; # every day updateInterval = 24 * 60 * 60 * 1000; # every day
definedAliases = ["@nw"]; definedAliases = ["@nw"];
}; };
"Searx" = { "Searx" = {
urls = [{template = "https://search.jan-leila.com/?q={searchTerms}";}]; urls = [{template = "https://search.jan-leila.com/?q={searchTerms}";}];
icon = "https://nixos.wiki/favicon.png"; icon = "https://nixos.wiki/favicon.png";
updateInterval = 24 * 60 * 60 * 1000; # every day updateInterval = 24 * 60 * 60 * 1000; # every day
definedAliases = ["@searx"]; definedAliases = ["@searx"];
};
}; };
}; };
};
extensions.packages = with inputs.firefox-addons.packages.${pkgs.system}; [ extensions.packages = with inputs.firefox-addons.packages.${pkgs.system}; [
bitwarden bitwarden
terms-of-service-didnt-read terms-of-service-didnt-read
multi-account-containers multi-account-containers
shinigami-eyes shinigami-eyes
ublock-origin ublock-origin
sponsorblock sponsorblock
dearrow dearrow
df-youtube df-youtube
return-youtube-dislikes return-youtube-dislikes
privacy-badger privacy-badger
decentraleyes decentraleyes
clearurls clearurls
localcdn localcdn
snowflake snowflake
deutsch-de-language-pack deutsch-de-language-pack
dictionary-german dictionary-german
# ( # (
# buildFirefoxXpiAddon rec { # buildFirefoxXpiAddon rec {
# pname = "italiano-it-language-pack"; # pname = "italiano-it-language-pack";
# version = "132.0.20241110.231641"; # version = "132.0.20241110.231641";
# addonId = "langpack-it@firefox.mozilla.org"; # addonId = "langpack-it@firefox.mozilla.org";
# url = "https://addons.mozilla.org/firefox/downloads/file/4392453/italiano_it_language_pack-${version}.xpi"; # url = "https://addons.mozilla.org/firefox/downloads/file/4392453/italiano_it_language_pack-${version}.xpi";
# sha256 = ""; # sha256 = "";
# meta = with lib; # meta = with lib;
# { # {
# description = "Firefox Language Pack for Italiano (it) Italian"; # description = "Firefox Language Pack for Italiano (it) Italian";
# license = licenses.mpl20; # license = licenses.mpl20;
# mozPermissions = []; # mozPermissions = [];
# platforms = platforms.all; # platforms = platforms.all;
# }; # };
# } # }
# ) # )
# ( # (
# buildFirefoxXpiAddon rec { # buildFirefoxXpiAddon rec {
# pname = "dizionario-italiano"; # pname = "dizionario-italiano";
# version = "5.1"; # version = "5.1";
# addonId = "it-IT@dictionaries.addons.mozilla.org"; # addonId = "it-IT@dictionaries.addons.mozilla.org";
# url = "https://addons.mozilla.org/firefox/downloads/file/1163874/dizionario_italiano-${version}.xpi"; # url = "https://addons.mozilla.org/firefox/downloads/file/1163874/dizionario_italiano-${version}.xpi";
# sha256 = ""; # sha256 = "";
# meta = with lib; # meta = with lib;
# { # {
# description = "Add support for Italian to spellchecking"; # description = "Add support for Italian to spellchecking";
# license = licenses.gpl3; # license = licenses.gpl3;
# mozPermissions = []; # mozPermissions = [];
# platforms = platforms.all; # platforms = platforms.all;
# }; # };
# } # }
# ) # )
]; ];
settings = { settings = {
# Disable irritating first-run stuff # Disable irritating first-run stuff
"browser.disableResetPrompt" = true; "browser.disableResetPrompt" = true;
"browser.download.panel.shown" = true; "browser.download.panel.shown" = true;
"browser.feeds.showFirstRunUI" = false; "browser.feeds.showFirstRunUI" = false;
"browser.messaging-system.whatsNewPanel.enabled" = false; "browser.messaging-system.whatsNewPanel.enabled" = false;
"browser.rights.3.shown" = true; "browser.rights.3.shown" = true;
"browser.shell.checkDefaultBrowser" = false; "browser.shell.checkDefaultBrowser" = false;
"browser.shell.defaultBrowserCheckCount" = 1; "browser.shell.defaultBrowserCheckCount" = 1;
"browser.startup.homepage_override.mstone" = "ignore"; "browser.startup.homepage_override.mstone" = "ignore";
"browser.uitour.enabled" = false; "browser.uitour.enabled" = false;
"startup.homepage_override_url" = ""; "startup.homepage_override_url" = "";
"trailhead.firstrun.didSeeAboutWelcome" = true; "trailhead.firstrun.didSeeAboutWelcome" = true;
"browser.bookmarks.restore_default_bookmarks" = false; "browser.bookmarks.restore_default_bookmarks" = false;
"browser.bookmarks.addedImportButton" = true; "browser.bookmarks.addedImportButton" = true;
"browser.newtabpage.activity-stream.feeds.section.topstories" = false; "browser.newtabpage.activity-stream.feeds.section.topstories" = false;
# Usage Experience # Usage Experience
"browser.startup.homepage" = "about:home"; "browser.startup.homepage" = "about:home";
"browser.download.useDownloadDir" = false; "browser.download.useDownloadDir" = false;
"browser.uiCustomization.state" = builtins.toJSON { "browser.uiCustomization.state" = builtins.toJSON {
"currentVersion" = 20; "currentVersion" = 20;
"newElementCount" = 6; "newElementCount" = 6;
"dirtyAreaCache" = [ "dirtyAreaCache" = [
"nav-bar" "nav-bar"
"PersonalToolbar" "PersonalToolbar"
"toolbar-menubar" "toolbar-menubar"
"TabsToolbar" "TabsToolbar"
"unified-extensions-area" "unified-extensions-area"
"vertical-tabs" "vertical-tabs"
]; ];
"placements" = { "placements" = {
"widget-overflow-fixed-list" = []; "widget-overflow-fixed-list" = [];
"unified-extensions-area" = [ "unified-extensions-area" = [
"privacy_privacy_com-browser-action"
# bitwarden
"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action"
"ublock0_raymondhill_net-browser-action"
"sponsorblocker_ajay_app-browser-action"
"dearrow_ajay_app-browser-action"
"jid1-mnnxcxisbpnsxq_jetpack-browser-action"
"_testpilot-containers-browser-action"
"addon_simplelogin-browser-action"
"_74145f27-f039-47ce-a470-a662b129930a_-browser-action"
"jid1-bofifl9vbdl2zq_jetpack-browser-action"
"dfyoutube_example_com-browser-action"
"_b86e4813-687a-43e6-ab65-0bde4ab75758_-browser-action"
"_762f9885-5a13-4abd-9c77-433dcd38b8fd_-browser-action"
"_b11bea1f-a888-4332-8d8a-cec2be7d24b9_-browse-action"
"jid0-3guet1r69sqnsrca5p8kx9ezc3u_jetpack-browser-action"
];
"nav-bar" = [
"back-button"
"forward-button"
"stop-reload-button"
"urlbar-container"
"downloads-button"
"unified-extensions-button"
"reset-pbm-toolbar-button"
];
"toolbar-menubar" = [
"menubar-items"
];
"TabsToolbar" = [
"firefox-view-button"
"tabbrowser-tabs"
"new-tab-button"
"alltabs-button"
];
"vertical-tabs" = [];
"PersonalToolbar" = [
"import-button"
"personal-bookmarks"
];
};
"seen" = [
"save-to-pocket-button"
"developer-button"
"privacy_privacy_com-browser-action" "privacy_privacy_com-browser-action"
# bitwarden
"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action"
"ublock0_raymondhill_net-browser-action"
"sponsorblocker_ajay_app-browser-action" "sponsorblocker_ajay_app-browser-action"
"dearrow_ajay_app-browser-action" "ublock0_raymondhill_net-browser-action"
"jid1-mnnxcxisbpnsxq_jetpack-browser-action"
"_testpilot-containers-browser-action"
"addon_simplelogin-browser-action" "addon_simplelogin-browser-action"
"dearrow_ajay_app-browser-action"
"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action"
"_74145f27-f039-47ce-a470-a662b129930a_-browser-action" "_74145f27-f039-47ce-a470-a662b129930a_-browser-action"
"jid1-bofifl9vbdl2zq_jetpack-browser-action" "jid1-bofifl9vbdl2zq_jetpack-browser-action"
"dfyoutube_example_com-browser-action" "dfyoutube_example_com-browser-action"
"_testpilot-containers-browser-action"
"_b86e4813-687a-43e6-ab65-0bde4ab75758_-browser-action" "_b86e4813-687a-43e6-ab65-0bde4ab75758_-browser-action"
"jid1-mnnxcxisbpnsxq_jetpack-browser-action"
"_762f9885-5a13-4abd-9c77-433dcd38b8fd_-browser-action" "_762f9885-5a13-4abd-9c77-433dcd38b8fd_-browser-action"
"_b11bea1f-a888-4332-8d8a-cec2be7d24b9_-browse-action" "_b11bea1f-a888-4332-8d8a-cec2be7d24b9_-browser-action"
"jid0-3guet1r69sqnsrca5p8kx9ezc3u_jetpack-browser-action" "jid0-3guet1r69sqnsrca5p8kx9ezc3u_jetpack-browser-action"
]; ];
"nav-bar" = [
"back-button"
"forward-button"
"stop-reload-button"
"urlbar-container"
"downloads-button"
"unified-extensions-button"
"reset-pbm-toolbar-button"
];
"toolbar-menubar" = [
"menubar-items"
];
"TabsToolbar" = [
"firefox-view-button"
"tabbrowser-tabs"
"new-tab-button"
"alltabs-button"
];
"vertical-tabs" = [];
"PersonalToolbar" = [
"import-button"
"personal-bookmarks"
];
}; };
"seen" = [ "browser.newtabpage.activity-stream.feeds.topsites" = false;
"save-to-pocket-button" "browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
"developer-button" "browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts" = false;
"privacy_privacy_com-browser-action" "browser.newtabpage.blocked" = lib.genAttrs [
"sponsorblocker_ajay_app-browser-action" # Facebook
"ublock0_raymondhill_net-browser-action" "4gPpjkxgZzXPVtuEoAL9Ig=="
"addon_simplelogin-browser-action" # Reddit
"dearrow_ajay_app-browser-action" "gLv0ja2RYVgxKdp0I5qwvA=="
"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action" # Amazon
"_74145f27-f039-47ce-a470-a662b129930a_-browser-action" "K00ILysCaEq8+bEqV/3nuw=="
"jid1-bofifl9vbdl2zq_jetpack-browser-action" # Twitter
"dfyoutube_example_com-browser-action" "T9nJot5PurhJSy8n038xGA=="
"_testpilot-containers-browser-action" ] (_: 1);
"_b86e4813-687a-43e6-ab65-0bde4ab75758_-browser-action" "identity.fxaccounts.enabled" = false;
"jid1-mnnxcxisbpnsxq_jetpack-browser-action"
"_762f9885-5a13-4abd-9c77-433dcd38b8fd_-browser-action" # Security
"_b11bea1f-a888-4332-8d8a-cec2be7d24b9_-browser-action" "privacy.trackingprotection.enabled" = true;
"jid0-3guet1r69sqnsrca5p8kx9ezc3u_jetpack-browser-action" "dom.security.https_only_mode" = true;
"extensions.formautofill.addresses.enabled" = false;
"extensions.formautofill.creditCards.enabled" = false;
"signon.rememberSignons" = false;
"privacy.sanitize.sanitizeOnShutdown" = true;
"privacy.clearOnShutdown_v2.cache" = true;
"privacy.clearOnShutdown_v2.cookiesAndStorage" = true;
"privacy.clearOnShutdown_v2.historyFormDataAndDownloads" = true;
"urlclassifier.trackingSkipURLs" = "";
"urlclassifier.features.socialtracking.skipURLs" = "";
"dom.security.https_only_mode_pbm" = true;
"dom.security.https_only_mode_error_page_user_suggestions" = true;
# Disable telemetry
"app.shield.optoutstudies.enabled" = false;
"browser.discovery.enabled" = false;
"browser.newtabpage.activity-stream.feeds.telemetry" = false;
"browser.newtabpage.activity-stream.telemetry" = false;
"browser.ping-centre.telemetry" = false;
"datareporting.healthreport.service.enabled" = false;
"datareporting.healthreport.uploadEnabled" = false;
"datareporting.policy.dataSubmissionEnabled" = false;
"datareporting.sessions.current.clean" = true;
"devtools.onboarding.telemetry.logged" = false;
"toolkit.telemetry.archive.enabled" = false;
"toolkit.telemetry.bhrPing.enabled" = false;
"toolkit.telemetry.enabled" = false;
"toolkit.telemetry.firstShutdownPing.enabled" = false;
"toolkit.telemetry.hybridContent.enabled" = false;
"toolkit.telemetry.newProfilePing.enabled" = false;
"toolkit.telemetry.prompted" = 2;
"toolkit.telemetry.rejected" = true;
"toolkit.telemetry.reportingpolicy.firstRun" = false;
"toolkit.telemetry.server" = "";
"toolkit.telemetry.shutdownPingSender.enabled" = false;
"toolkit.telemetry.unified" = false;
"toolkit.telemetry.unifiedIsOptIn" = false;
"toolkit.telemetry.updatePing.enabled" = false;
};
bookmarks = {
force = true;
settings = [
{
name = "Media";
url = "https://media.jan-leila.com/";
keyword = "";
tags = [""];
}
{
name = "Photos";
url = "https://photos.jan-leila.com";
keyword = "";
tags = [""];
}
{
name = "Git";
url = "https://git.jan-leila.com/";
keyword = "";
tags = [""];
}
{
name = "Home Automation";
url = "https://home.jan-leila.com/";
keyword = "";
tags = [""];
}
{
name = "Mail";
url = "https://mail.protonmail.com";
keyword = "";
tags = [""];
}
{
name = "Open Street Map";
url = "https://www.openstreetmap.org/";
keyword = "";
tags = [""];
}
{
name = "Password Manager";
url = "https://vault.bitwarden.com/";
keyword = "";
tags = [""];
}
{
name = "Mastodon";
url = "https://mspsocial.net";
keyword = "";
tags = [""];
}
{
name = "Linked In";
url = "https://www.linkedin.com/";
keyword = "";
tags = [""];
}
{
name = "Job Search";
url = "https://www.jobsinnetwork.com/?state=cleaned_history&language%5B%5D=en&query=react&locations.countryCode%5B%5D=IT&locations.countryCode%5B%5D=DE&locations.countryCode%5B%5D=NL&experience%5B%5D=medior&experience%5B%5D=junior&page=1";
keyword = "";
tags = [""];
}
{
name = "React Docs";
url = "https://react.dev/";
keyword = "";
tags = [""];
}
# Template
# {
# name = "";
# url = "";
# keyword = "";
# tags = [""];
# }
]; ];
}; };
"browser.newtabpage.activity-stream.feeds.topsites" = false;
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
"browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts" = false;
"browser.newtabpage.blocked" = lib.genAttrs [
# Facebook
"4gPpjkxgZzXPVtuEoAL9Ig=="
# Reddit
"gLv0ja2RYVgxKdp0I5qwvA=="
# Amazon
"K00ILysCaEq8+bEqV/3nuw=="
# Twitter
"T9nJot5PurhJSy8n038xGA=="
] (_: 1);
"identity.fxaccounts.enabled" = false;
# Security
"privacy.trackingprotection.enabled" = true;
"dom.security.https_only_mode" = true;
"extensions.formautofill.addresses.enabled" = false;
"extensions.formautofill.creditCards.enabled" = false;
"signon.rememberSignons" = false;
"privacy.sanitize.sanitizeOnShutdown" = true;
"privacy.clearOnShutdown_v2.cache" = true;
"privacy.clearOnShutdown_v2.cookiesAndStorage" = true;
"privacy.clearOnShutdown_v2.historyFormDataAndDownloads" = true;
"urlclassifier.trackingSkipURLs" = "";
"urlclassifier.features.socialtracking.skipURLs" = "";
"dom.security.https_only_mode_pbm" = true;
"dom.security.https_only_mode_error_page_user_suggestions" = true;
# Disable telemetry
"app.shield.optoutstudies.enabled" = false;
"browser.discovery.enabled" = false;
"browser.newtabpage.activity-stream.feeds.telemetry" = false;
"browser.newtabpage.activity-stream.telemetry" = false;
"browser.ping-centre.telemetry" = false;
"datareporting.healthreport.service.enabled" = false;
"datareporting.healthreport.uploadEnabled" = false;
"datareporting.policy.dataSubmissionEnabled" = false;
"datareporting.sessions.current.clean" = true;
"devtools.onboarding.telemetry.logged" = false;
"toolkit.telemetry.archive.enabled" = false;
"toolkit.telemetry.bhrPing.enabled" = false;
"toolkit.telemetry.enabled" = false;
"toolkit.telemetry.firstShutdownPing.enabled" = false;
"toolkit.telemetry.hybridContent.enabled" = false;
"toolkit.telemetry.newProfilePing.enabled" = false;
"toolkit.telemetry.prompted" = 2;
"toolkit.telemetry.rejected" = true;
"toolkit.telemetry.reportingpolicy.firstRun" = false;
"toolkit.telemetry.server" = "";
"toolkit.telemetry.shutdownPingSender.enabled" = false;
"toolkit.telemetry.unified" = false;
"toolkit.telemetry.unifiedIsOptIn" = false;
"toolkit.telemetry.updatePing.enabled" = false;
};
bookmarks = {
force = true;
settings = [
{
name = "Media";
url = "https://media.jan-leila.com/";
keyword = "";
tags = [""];
}
{
name = "Photos";
url = "https://photos.jan-leila.com";
keyword = "";
tags = [""];
}
{
name = "Git";
url = "https://git.jan-leila.com/";
keyword = "";
tags = [""];
}
{
name = "Home Automation";
url = "https://home.jan-leila.com/";
keyword = "";
tags = [""];
}
{
name = "Mail";
url = "https://mail.protonmail.com";
keyword = "";
tags = [""];
}
{
name = "Open Street Map";
url = "https://www.openstreetmap.org/";
keyword = "";
tags = [""];
}
{
name = "Password Manager";
url = "https://vault.bitwarden.com/";
keyword = "";
tags = [""];
}
{
name = "Mastodon";
url = "https://mspsocial.net";
keyword = "";
tags = [""];
}
{
name = "Linked In";
url = "https://www.linkedin.com/";
keyword = "";
tags = [""];
}
{
name = "Job Search";
url = "https://www.jobsinnetwork.com/?state=cleaned_history&language%5B%5D=en&query=react&locations.countryCode%5B%5D=IT&locations.countryCode%5B%5D=DE&locations.countryCode%5B%5D=NL&experience%5B%5D=medior&experience%5B%5D=junior&page=1";
keyword = "";
tags = [""];
}
{
name = "React Docs";
url = "https://react.dev/";
keyword = "";
tags = [""];
}
# Template
# {
# name = "";
# url = "";
# keyword = "";
# tags = [""];
# }
];
}; };
}; };
}; };

View file

@ -1,5 +1,6 @@
{ {
lib, lib,
config,
osConfig, osConfig,
pkgs, pkgs,
... ...
@ -12,22 +13,22 @@ in {
./firefox.nix ./firefox.nix
]; ];
nixpkgs.config = { config = lib.mkMerge [
allowUnfree = true; (lib.mkIf userConfig.isTerminalUser {
}; home.packages = with pkgs; [
# command line tools
sox
yt-dlp
ffmpeg
imagemagick
];
})
(lib.mkIf userConfig.isDesktopUser {
nixpkgs.config = {
allowUnfree = true;
};
home = { home.packages = (
packages =
lib.lists.optionals userConfig.isTerminalUser (
with pkgs; [
# command line tools
sox
yt-dlp
ffmpeg
imagemagick
]
)
++ (
lib.lists.optionals userConfig.isDesktopUser ( lib.lists.optionals userConfig.isDesktopUser (
(with pkgs; [ (with pkgs; [
# helvetica font # helvetica font
@ -91,5 +92,44 @@ in {
) )
) )
); );
}; programs = lib.mkIf userConfig.isDesktopUser {
# Let Home Manager install and manage itself.
home-manager.enable = true;
# set up git defaults
git = {
enable = true;
userName = "Leyla Becker";
userEmail = "git@jan-leila.com";
extraConfig.init.defaultBranch = "main";
};
# add direnv to auto load flakes for development
direnv = {
enable = true;
enableBashIntegration = true;
nix-direnv.enable = true;
config = {
global.hide_env_diff = true;
whitelist.exact = ["/home/leyla/documents/code/nix-config"];
};
};
bash.enable = true;
openssh = {
authorizedKeys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJHeItmt8TRW43uNcOC+eIurYC7Eunc0V3LGocQqLaYj leyla@horizon"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIILimFIW2exEH/Xo7LtXkqgE04qusvnPNpPWSCeNrFkP leyla@defiant"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKBiZkg1c2aaNHiieBX4cEziqvJVj9pcDfzUrKU/mO0I leyla@twilight"
];
hostKeys = [
{
type = "ed25519";
path = "${config.home.username}_${osConfig.networking.hostName}_ed25519";
}
];
};
};
})
];
} }

View file

@ -8,110 +8,113 @@
}: let }: let
nix-development-enabled = osConfig.host.nix-development.enable; nix-development-enabled = osConfig.host.nix-development.enable;
ai-tooling-enabled = config.user.continue.enable && osConfig.host.ai.enable; ai-tooling-enabled = config.user.continue.enable && osConfig.host.ai.enable;
is-desktop-user = osConfig.host.users.leyla.isDesktopUser;
in { in {
nixpkgs = { config = lib.mkIf is-desktop-user {
overlays = [ nixpkgs = {
inputs.nix-vscode-extensions.overlays.default overlays = [
]; inputs.nix-vscode-extensions.overlays.default
}; ];
programs = {
bash.shellAliases = {
code = "codium";
}; };
vscode = let programs = {
extensions = inputs.nix-vscode-extensions.extensions.${pkgs.system}; bash.shellAliases = {
open-vsx = extensions.open-vsx; code = "codium";
vscode-marketplace = extensions.vscode-marketplace; };
in {
enable = true;
package = pkgs.vscodium; vscode = let
extensions = inputs.nix-vscode-extensions.extensions.${pkgs.system};
open-vsx = extensions.open-vsx;
vscode-marketplace = extensions.vscode-marketplace;
in {
enable = true;
mutableExtensionsDir = false; package = pkgs.vscodium;
profiles.default = { mutableExtensionsDir = false;
enableUpdateCheck = false;
enableExtensionUpdateCheck = false;
userSettings = lib.mkMerge [ profiles.default = {
{ enableUpdateCheck = false;
"workbench.colorTheme" = "Atom One Dark"; enableExtensionUpdateCheck = false;
"cSpell.userWords" = import ./user-words.nix;
"javascript.updateImportsOnFileMove.enabled" = "always";
"editor.tabSize" = 2;
"editor.insertSpaces" = false;
}
(lib.mkIf nix-development-enabled {
"nix.enableLanguageServer" = true;
"nix.serverPath" = "nil";
"[nix]" = {
"editor.defaultFormatter" = "kamadorueda.alejandra";
"editor.formatOnPaste" = true;
"editor.formatOnSave" = true;
"editor.formatOnType" = true;
};
"alejandra.program" = "alejandra";
"nixpkgs" = {
"expr" = "import <nixpkgs> {}";
};
})
(lib.mkIf ai-tooling-enabled {
"continue.telemetryEnabled" = false;
})
];
extensions = ( userSettings = lib.mkMerge [
with open-vsx; {
[ "workbench.colorTheme" = "Atom One Dark";
# vs code feel extensions "cSpell.userWords" = import ./user-words.nix;
ms-vscode.atom-keybindings "javascript.updateImportsOnFileMove.enabled" = "always";
akamud.vscode-theme-onedark "editor.tabSize" = 2;
streetsidesoftware.code-spell-checker "editor.insertSpaces" = false;
streetsidesoftware.code-spell-checker-german }
streetsidesoftware.code-spell-checker-italian (lib.mkIf nix-development-enabled {
jeanp413.open-remote-ssh "nix.enableLanguageServer" = true;
"nix.serverPath" = "nil";
"[nix]" = {
"editor.defaultFormatter" = "kamadorueda.alejandra";
"editor.formatOnPaste" = true;
"editor.formatOnSave" = true;
"editor.formatOnType" = true;
};
"alejandra.program" = "alejandra";
"nixpkgs" = {
"expr" = "import <nixpkgs> {}";
};
})
(lib.mkIf ai-tooling-enabled {
"continue.telemetryEnabled" = false;
})
];
# html extensions extensions = (
formulahendry.auto-rename-tag with open-vsx;
ms-vscode.live-server [
# vs code feel extensions
ms-vscode.atom-keybindings
akamud.vscode-theme-onedark
streetsidesoftware.code-spell-checker
streetsidesoftware.code-spell-checker-german
streetsidesoftware.code-spell-checker-italian
jeanp413.open-remote-ssh
# js extensions # html extensions
dsznajder.es7-react-js-snippets formulahendry.auto-rename-tag
dbaeumer.vscode-eslint ms-vscode.live-server
standard.vscode-standard
firsttris.vscode-jest-runner
stylelint.vscode-stylelint
tauri-apps.tauri-vscode
# go extensions # js extensions
golang.go dsznajder.es7-react-js-snippets
dbaeumer.vscode-eslint
standard.vscode-standard
firsttris.vscode-jest-runner
stylelint.vscode-stylelint
tauri-apps.tauri-vscode
# astro blog extensions # go extensions
astro-build.astro-vscode golang.go
unifiedjs.vscode-mdx
# misc extensions # astro blog extensions
tamasfe.even-better-toml astro-build.astro-vscode
] unifiedjs.vscode-mdx
++ (lib.lists.optionals nix-development-enabled [
# nix extensions # misc extensions
pinage404.nix-extension-pack tamasfe.even-better-toml
jnoortheen.nix-ide ]
kamadorueda.alejandra ++ (lib.lists.optionals nix-development-enabled [
]) # nix extensions
++ ( pinage404.nix-extension-pack
with vscode-marketplace; jnoortheen.nix-ide
[ kamadorueda.alejandra
# js extensions ])
karyfoundation.nearley ++ (
] with vscode-marketplace;
++ (lib.lists.optionals ai-tooling-enabled [ [
continue.continue # js extensions
]) karyfoundation.nearley
) ]
); ++ (lib.lists.optionals ai-tooling-enabled [
continue.continue
])
)
);
};
}; };
}; };
}; };

View file

@ -1,6 +1,9 @@
{ config, lib, pkgs, ... }:
{ {
config,
lib,
pkgs,
...
}: {
# Enable OpenGL # Enable OpenGL
hardware.graphics = { hardware.graphics = {
enable = true; enable = true;
@ -10,13 +13,12 @@
services.xserver.videoDrivers = ["nvidia"]; services.xserver.videoDrivers = ["nvidia"];
hardware.nvidia = { hardware.nvidia = {
# Modesetting is required. # Modesetting is required.
modesetting.enable = true; modesetting.enable = true;
# Nvidia power management. Experimental, and can cause sleep/suspend to fail. # Nvidia power management. Experimental, and can cause sleep/suspend to fail.
# Enable this if you have graphical corruption issues or application crashes after waking # Enable this if you have graphical corruption issues or application crashes after waking
# up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead # up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
# of just the bare essentials. # of just the bare essentials.
powerManagement.enable = false; powerManagement.enable = false;
@ -26,17 +28,17 @@
# Use the NVidia open source kernel module (not to be confused with the # Use the NVidia open source kernel module (not to be confused with the
# independent third-party "nouveau" open source driver). # independent third-party "nouveau" open source driver).
# Support is limited to the Turing and later architectures. Full list of # Support is limited to the Turing and later architectures. Full list of
# supported GPUs is at: # supported GPUs is at:
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
# Only available from driver 515.43.04+ # Only available from driver 515.43.04+
open = false; open = false;
# Enable the Nvidia settings menu, # Enable the Nvidia settings menu,
# accessible via `nvidia-settings`. # accessible via `nvidia-settings`.
nvidiaSettings = true; nvidiaSettings = true;
# Optionally, you may need to select the appropriate driver version for your specific GPU. # Optionally, you may need to select the appropriate driver version for your specific GPU.
package = config.boot.kernelPackages.nvidiaPackages.stable; package = config.boot.kernelPackages.nvidiaPackages.stable;
}; };
} }