restructured project to split out home manager

This commit is contained in:
Leyla Becker 2024-11-22 00:51:10 -06:00
parent c8e7944da5
commit 18f51a65c2
24 changed files with 421 additions and 254 deletions

5
homes/default.nix Normal file
View file

@ -0,0 +1,5 @@
{
leyla = import ./leyla;
ester = import ./ester;
eve = import ./eve;
}

71
homes/ester/default.nix Normal file
View file

@ -0,0 +1,71 @@
{
pkgs,
lib,
osConfig,
...
}: let
cfg = osConfig.nixos.users.ester;
in {
config = {
home = {
username = "ester";
homeDirectory = osConfig.users.users.ester.home;
# 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.
stateVersion = "23.11"; # Please read the comment before changing.
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
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
# '';
};
# Home Manager can also manage your environment variables through
# 'home.sessionVariables'. If you don't want to manage your shell through Home
# Manager then you have to manually source 'hm-session-vars.sh' located at
# either
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/ester/etc/profile.d/hm-session-vars.sh
#
sessionVariables = {
# EDITOR = "emacs";
};
packages = lib.mkIf cfg.isDesktopUser (
with pkgs; [
firefox
bitwarden
discord
]
);
};
programs = {
# Let Home Manager install and manage itself.
home-manager.enable = true;
};
};
}

73
homes/eve/default.nix Normal file
View file

@ -0,0 +1,73 @@
{
pkgs,
lib,
osConfig,
...
}: let
cfg = osConfig.nixos.users.eve;
in {
config = {
home = {
username = "eve";
homeDirectory = osConfig.users.users.eve.home;
# 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.
stateVersion = "23.11"; # Please read the comment before changing.
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
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
# '';
};
# Home Manager can also manage your environment variables through
# 'home.sessionVariables'. If you don't want to manage your shell through Home
# Manager then you have to manually source 'hm-session-vars.sh' located at
# either
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/leyla/etc/profile.d/hm-session-vars.sh
#
sessionVariables = {
# EDITOR = "emacs";
};
packages = lib.mkIf cfg.isDesktopUser (
with pkgs; [
firefox
bitwarden
discord
makemkv
signal-desktop
]
);
};
programs = {
# Let Home Manager install and manage itself.
home-manager.enable = true;
};
};
}

269
homes/leyla/default.nix Normal file
View file

@ -0,0 +1,269 @@
{
pkgs,
osConfig,
...
}: {
imports = [
./packages.nix
];
config = {
# Home Manager needs a bit of information about you and the paths it should
# manage.
home = {
username = "leyla";
homeDirectory = osConfig.users.users.leyla.home;
# 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.
stateVersion = "23.11"; # Please read the comment before changing.
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
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
# '';
".config/user-dirs.dirs" = {
force = true;
text = ''
# This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run.
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported.
#
XDG_DESKTOP_DIR="$HOME/desktop"
XDG_DOWNLOAD_DIR="$HOME/downloads"
XDG_DOCUMENTS_DIR="$HOME/documents"
XDG_TEMPLATES_DIR="$HOME/documents/templates"
XDG_MUSIC_DIR="$HOME/documents/music"
XDG_PICTURES_DIR="$HOME/documents/photos"
XDG_VIDEOS_DIR="$HOME/documents/videos"
XDG_PUBLICSHARE_DIR="$HOME/documents/public"
'';
};
};
# Home Manager can also manage your environment variables through
# 'home.sessionVariables'. If you don't want to manage your shell through Home
# Manager then you have to manually source 'hm-session-vars.sh' located at
# either
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/leyla/etc/profile.d/hm-session-vars.sh
#
sessionVariables = {
# EDITOR = "emacs";
};
};
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;
# firefox = {
# enable = true;
# profiles.leyla = {
# settings = {
# "browser.search.defaultenginename" = "Searx";
# "browser.search.order.1" = "Searx";
# };
# search = {
# force = true;
# default = "Searx";
# engines = {
# "Nix Packages" = {
# urls = [{
# template = "https://search.nixos.org/packages";
# params = [
# { name = "type"; value = "packages"; }
# { name = "query"; value = "{searchTerms}"; }
# ];
# }];
# icon = "''${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
# definedAliases = [ "@np" ];
# };
# "NixOS Wiki" = {
# urls = [{ template = "https://nixos.wiki/index.php?search={searchTerms}"; }];
# iconUpdateURL = "https://nixos.wiki/favicon.png";
# updateInterval = 24 * 60 * 60 * 1000; # every day
# definedAliases = [ "@nw" ];
# };
# "Searx" = {
# urls = [{ template = "https://search.jan-leila.com/?q={searchTerms}"; }];
# iconUpdateURL = "https://nixos.wiki/favicon.png";
# updateInterval = 24 * 60 * 60 * 1000; # every day
# definedAliases = [ "@searx" ];
# };
# };
# };
# extentions = with pkgs.nur.repos.rycee.firefox-addons; [
# ublock-origin
# bitwarden
# ];
# bookmarks = [
# {
# name = "Media";
# url = "https://jellyfin.jan-leila.com/";
# keyword = "";
# tags = [""];
# }
# {
# name = "Drive";
# url = "https://drive.jan-leila.com/";
# keyword = "";
# tags = [""];
# }
# {
# name = "Git";
# url = "https://git.jan-leila.com/";
# keyword = "";
# tags = [""];
# }
# {
# name = "Home Automation";
# url = "https://home-assistant.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://tech.lgbt";
# 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 = [""];
# # }
# ];
# };
# }
};
dconf = {
enable = true;
settings = {
"org/gnome/desktop/interface".color-scheme = "prefer-dark";
"org/gnome/shell" = {
disable-user-extensions = false; # enables user extensions
enabled-extensions = [
# Put UUIDs of extensions that you want to enable here.
# If the extension you want to enable is packaged in nixpkgs,
# you can easily get its UUID by accessing its extensionUuid
# field (look at the following example).
pkgs.gnomeExtensions.dash-to-dock.extensionUuid
# Alternatively, you can manually pass UUID as a string.
# "dash-to-dock@micxgx.gmail.com"
];
};
"org/gnome/shell/extensions/dash-to-dock" = {
"dock-position" = "LEFT";
"intellihide-mode" = "ALL_WINDOWS";
"show-trash" = false;
"require-pressure-to-show" = false;
"show-mounts" = false;
};
"org/gnome/settings-daemon/plugins/media-keys" = {
custom-keybindings = [
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/"
];
};
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = {
binding = "<Super>t";
command = "kgx";
name = "Open Terminal";
};
};
};
};
}

304
homes/leyla/firefox.nix Normal file
View file

@ -0,0 +1,304 @@
{
lib,
osConfig,
# buildFirefoxXpiAddon,
pkgs,
inputs,
...
}: let
cfg = osConfig.nixos.users.leyla;
in {
# programs.firefox = {
# enable = cfg.isDesktopUser;
# profiles.leyla = {
# settings = {
# "browser.search.defaultenginename" = "Searx";
# "browser.search.order.1" = "Searx";
# };
# search = {
# force = true;
# default = "Searx";
# engines = {
# "Nix Packages" = {
# urls = [{
# template = "https://search.nixos.org/packages";
# params = [
# { name = "type"; value = "packages"; }
# { name = "query"; value = "{searchTerms}"; }
# ];
# }];
# icon = "''${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
# definedAliases = [ "@np" ];
# };
# "NixOS Wiki" = {
# urls = [{ template = "https://nixos.wiki/index.php?search={searchTerms}"; }];
# iconUpdateURL = "https://nixos.wiki/favicon.png";
# updateInterval = 24 * 60 * 60 * 1000; # every day
# definedAliases = [ "@nw" ];
# };
# "Searx" = {
# urls = [{ template = "https://search.jan-leila.com/?q={searchTerms}"; }];
# iconUpdateURL = "https://nixos.wiki/favicon.png";
# updateInterval = 24 * 60 * 60 * 1000; # every day
# definedAliases = [ "@searx" ];
# };
# };
# };
# extentions = with inputs.firefox-addons.packages."x86_64-linux"; [
# bitwarden
# terms-of-service-didnt-read
# multi-account-containers
# shinigami-eyes
# ublock-origin
# sponsorblock
# dearrow
# df-youtube
# return-youtube-dislikes
# privacy-badger
# decentraleyes
# clearurls
# localcdn
# snowflake
# deutsch-de-language-pack
# dictionary-german
# # (
# # buildFirefoxXpiAddon rec {
# # pname = "italiano-it-language-pack";
# # version = "132.0.20241110.231641";
# # addonId = "langpack-it@firefox.mozilla.org";
# # url = "https://addons.mozilla.org/firefox/downloads/file/4392453/italiano_it_language_pack-${version}.xpi";
# # sha256 = "";
# # meta = with lib;
# # {
# # description = "Firefox Language Pack for Italiano (it) Italian";
# # license = licenses.mpl20;
# # mozPermissions = [];
# # platforms = platforms.all;
# # };
# # }
# # )
# # (
# # buildFirefoxXpiAddon rec {
# # pname = "dizionario-italiano";
# # version = "5.1";
# # addonId = "it-IT@dictionaries.addons.mozilla.org";
# # url = "https://addons.mozilla.org/firefox/downloads/file/1163874/dizionario_italiano-${version}.xpi";
# # sha256 = "";
# # meta = with lib;
# # {
# # description = "Add support for Italian to spellchecking";
# # license = licenses.gpl3;
# # mozPermissions = [];
# # platforms = platforms.all;
# # };
# # }
# # )
# ];
# settings = {
# # Disable irritating first-run stuff
# "browser.disableResetPrompt" = true;
# "browser.download.panel.shown" = true;
# "browser.feeds.showFirstRunUI" = false;
# "browser.messaging-system.whatsNewPanel.enabled" = false;
# "browser.rights.3.shown" = true;
# "browser.shell.checkDefaultBrowser" = false;
# "browser.shell.defaultBrowserCheckCount" = 1;
# "browser.startup.homepage_override.mstone" = "ignore";
# "browser.uitour.enabled" = false;
# "startup.homepage_override_url" = "";
# "trailhead.firstrun.didSeeAboutWelcome" = true;
# "browser.bookmarks.restore_default_bookmarks" = false;
# "browser.bookmarks.addedImportButton" = true;
# # Usage Experiance
# "browser.startup.homepage" = "about:home";
# "browser.download.useDownloadDir" = false;
# "browser.uiCustomization.state" = builtins.toJSON {
# "currentVersion" = 20;
# "newElementCount" = 6;
# "dirtyAreaCache" = [
# "nav-bar"
# "PersonalToolbar"
# "toolbar-menubar"
# "TabsToolbar"
# "unified-extensions-area"
# "vertical-tabs"
# ];
# "placements" = {
# "widget-overflow-fixed-list" = [];
# "unified-extensions-area"= [
# "ublock0_raymondhill_net-browser-action"
# "sponsorblocker_ajay_app-browser-action"
# "dearrow_ajay_app-browser-action"
# "privacy_privacy_com-browser-action"
# "addon_simplelogin-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"
# "sponsorblocker_ajay_app-browser-action"
# "ublock0_raymondhill_net-browser-action"
# "addon_simplelogin-browser-action"
# "dearrow_ajay_app-browser-action"
# ];
# };
# "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);
# "signon.rememberSignons" = false;
# "identity.fxaccounts.enabled" = false;
# # Security
# "privacy.trackingprotection.enabled" = true;
# "dom.security.https_only_mode" = 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 = [
# {
# name = "Media";
# url = "https://jellyfin.jan-leila.com/";
# # url = "https://media.jan-leila.com/";
# keyword = "";
# tags = [""];
# }
# {
# name = "Drive";
# url = "https://drive.jan-leila.com/";
# keyword = "";
# tags = [""];
# }
# {
# name = "Git";
# url = "https://git.jan-leila.com/";
# keyword = "";
# tags = [""];
# }
# {
# name = "Home Automation";
# url = "https://home-assistant.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 = [""];
# # }
# ];
# };
# };
}

83
homes/leyla/packages.nix Normal file
View file

@ -0,0 +1,83 @@
{
lib,
osConfig,
pkgs,
...
}: let
cfg = osConfig.nixos.users.leyla;
in {
imports = [
./vscode.nix
./firefox.nix
];
home = {
packages = lib.mkIf (cfg.isDesktopUser || cfg.isTerminalUser) (
lib.mkMerge [
(
with pkgs; [
# comand line tools
yt-dlp
ffmpeg
imagemagick
]
)
(
lib.mkIf (!cfg.isTerminalUser) (
with pkgs; [
#foss platforms
signal-desktop
bitwarden
firefox
ungoogled-chromium
libreoffice
inkscape
gimp
krita
freecad
# cura
# kicad-small
makemkv
transmission_4-gtk
onionshare
easytag
# rhythmbox
(lib.mkIf cfg.hasGPU obs-studio)
# wireshark
# rpi-imager
# fritzing
# proprietary platforms
discord
obsidian
steam
(lib.mkIf cfg.hasGPU davinci-resolve)
anki-bin
# development tools
androidStudioPackages.canary
jetbrains.idea-community
dbeaver-bin
bruno
qFlipper
proxmark3
mfoc
# system tools
protonvpn-gui
openvpn
nextcloud-client
noisetorch
# hardware managment tools
(lib.mkIf osConfig.hardware.piperMouse.enable piper)
(lib.mkIf osConfig.hardware.openRGB.enable openrgb)
(lib.mkIf osConfig.hardware.viaKeyboard.enable via)
]
)
)
]
);
};
}

94
homes/leyla/vscode.nix Normal file
View file

@ -0,0 +1,94 @@
{
lib,
osConfig,
pkgs,
inputs,
...
}: let
cfg = osConfig.nixos.users.leyla;
in {
nixpkgs = {
overlays = [
inputs.nix-vscode-extensions.overlays.default
];
};
programs = {
bash.shellAliases = lib.mkIf cfg.isDesktopUser {
code = "codium";
};
vscode = let
extensions = inputs.nix-vscode-extensions.extensions.${pkgs.system};
open-vsx = extensions.open-vsx;
vscode-marketplace = extensions.vscode-marketplace;
in {
enable = cfg.isDesktopUser;
package = pkgs.vscodium;
mutableExtensionsDir = false;
enableUpdateCheck = false;
enableExtensionUpdateCheck = false;
userSettings = {
"workbench.colorTheme" = "Atom One Dark";
"cSpell.userWords" = [
"webdav"
];
"nix.serverPath" = "nixd";
"nix.enableLanguageServer" = true;
"nixpkgs" = {
"expr" = "import <nixpkgs> {}";
};
# "fomratting": {
# "command": [ "alejandra" ];
# };
};
extensions = (
with open-vsx;
[
# 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
# nix extensions
pinage404.nix-extension-pack
jnoortheen.nix-ide
# html extensions
formulahendry.auto-rename-tag
ms-vscode.live-server
# js extensions
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
astro-build.astro-vscode
unifiedjs.vscode-mdx
# misc extensions
bungcip.better-toml
# lib.mkIf open-vsx."10nates".ollama-autocoder
]
++ (
with vscode-marketplace; [
# js extensions
karyfoundation.nearley
]
)
);
};
};
}