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

View file

@ -4,7 +4,7 @@
... ...
}: { }: {
imports = [ imports = [
../../users ./users
]; ];
nix = { nix = {

View file

@ -0,0 +1,9 @@
{...}: {
imports = [
./leyla
./ester
./eve
];
users.mutableUsers = false;
}

View file

@ -1,7 +1,6 @@
{ {
lib, lib,
config, config,
pkgs,
inputs, inputs,
... ...
}: let }: let

View file

@ -1,7 +1,6 @@
{ {
lib, lib,
config, config,
pkgs,
inputs, inputs,
... ...
}: let }: let

View file

@ -34,7 +34,7 @@
}; };
# firefox-addons = { # firefox-addons = {
# url = "gitlab.com:rycee/nur-expressions?dir=pkgs/firefox-addons"; # url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
# inputs.nixpkgs.follows = "nixpkgs"; # inputs.nixpkgs.follows = "nixpkgs";
# }; # };
@ -59,32 +59,13 @@
}; };
}; };
outputs = { outputs = {...} @ inputs: let
nixpkgs, util = import ./util {inherit inputs;};
disko, forEachPkgs = util.forEachPkgs;
# impermanence, mkSystem = util.mkSystem;
nixos-hardware, # mkHome = util.mkHome;
home-manager, # callPackage = nixpkgs.lib.callPackageWith (nixpkgs // {lib = lib;});
lix-module, # lib = callPackage ./lib {} // nixpkgs.lib;
...
} @ inputs: let
home-manager-config = {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.backupFileExtension = "backup";
home-manager.extraSpecialArgs = {inherit inputs;};
};
systems = [
"aarch64-darwin"
"aarch64-linux"
"x86_64-darwin"
"x86_64-linux"
];
forEachSystem = nixpkgs.lib.genAttrs systems;
forEachPkgs = lambda: forEachSystem (system: lambda nixpkgs.legacyPackages.${system});
callPackage = nixpkgs.lib.callPackageWith (nixpkgs // {lib = lib;});
lib = callPackage ./util {} // nixpkgs.lib;
in { in {
packages = forEachPkgs (import ./pkgs); packages = forEachPkgs (import ./pkgs);
@ -108,44 +89,15 @@
}; };
}); });
# homeConfigurations = {
# "leyla@horizon" = mkHome "leyla" "horizon"; # "x86_64-linux" ./homes/leyla;
# };
nixosConfigurations = { nixosConfigurations = {
# Leyla Laptop # Leyla Laptop
horizon = nixpkgs.lib.nixosSystem { horizon = mkSystem "horizon";
specialArgs = {inherit inputs lib;}; twilight = mkSystem "twilight";
modules = [ defiant = mkSystem "defiant";
lix-module.nixosModules.default
./overlays
home-manager.nixosModules.home-manager
home-manager-config
./hosts/horizon/configuration.nix
nixos-hardware.nixosModules.framework-11th-gen-intel
];
};
# Leyla Desktop
twilight = nixpkgs.lib.nixosSystem {
specialArgs = {inherit inputs lib;};
modules = [
lix-module.nixosModules.default
./overlays
home-manager.nixosModules.home-manager
home-manager-config
./hosts/twilight/configuration.nix
];
};
# NAS Service
defiant = nixpkgs.lib.nixosSystem {
specialArgs = {inherit inputs lib;};
modules = [
lix-module.nixosModules.default
./overlays
# impermanence.nixosModules.impermanence
disko.nixosModules.disko
home-manager.nixosModules.home-manager
home-manager-config
./hosts/defiant/disko-config.nix
./hosts/defiant/configuration.nix
];
};
}; };
}; };
} }

5
homes/default.nix Normal file
View file

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

View file

@ -1,7 +1,6 @@
{ {
pkgs, pkgs,
lib, lib,
config,
osConfig, osConfig,
... ...
}: let }: let

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 = [""];
# # }
# ];
# };
# };
}

View file

@ -23,7 +23,7 @@ in {
open-vsx = extensions.open-vsx; open-vsx = extensions.open-vsx;
vscode-marketplace = extensions.vscode-marketplace; vscode-marketplace = extensions.vscode-marketplace;
in { in {
enable = true; enable = cfg.isDesktopUser;
package = pkgs.vscodium; package = pkgs.vscodium;

View file

@ -1,15 +1,11 @@
# server nas # server nas
{ {
pkgs,
inputs, inputs,
pkgs,
... ...
}: { }: {
imports = [ imports = [
inputs.home-manager.nixosModules.default inputs.disko.nixosModules.disko
inputs.sops-nix.nixosModules.sops
./hardware-configuration.nix
../../enviroments/server ../../enviroments/server
]; ];

View file

@ -0,0 +1,8 @@
# server nas
{...}: {
imports = [
./configuration.nix
./disko-config.nix
./hardware-configuration.nix
];
}

View file

@ -1,10 +1,6 @@
# leyla laptop
{inputs, ...}: { {inputs, ...}: {
imports = [ imports = [
inputs.home-manager.nixosModules.default inputs.nixos-hardware.nixosModules.framework-11th-gen-intel
inputs.sops-nix.nixosModules.sops
./hardware-configuration.nix
../../enviroments/client ../../enviroments/client
]; ];
@ -13,12 +9,12 @@
leyla = { leyla = {
isDesktopUser = true; isDesktopUser = true;
}; };
ester = { # ester = {
isDesktopUser = true; # isDesktopUser = true;
}; # };
eve = { # eve = {
isDesktopUser = true; # isDesktopUser = true;
}; # };
}; };
# enabled virtualisation for docker # enabled virtualisation for docker

View file

@ -0,0 +1,7 @@
# leyla laptop
{...}: {
imports = [
./configuration.nix
./hardware-configuration.nix
];
}

View file

@ -1,16 +1,5 @@
# leyla laptop {pkgs, ...}: {
{
config,
pkgs,
inputs,
...
}: {
imports = [ imports = [
inputs.home-manager.nixosModules.default
inputs.sops-nix.nixosModules.sops
./hardware-configuration.nix
../../enviroments/client ../../enviroments/client
]; ];
nixos.users = { nixos.users = {

View file

@ -0,0 +1,7 @@
# leyla desktop
{...}: {
imports = [
./configuration.nix
./hardware-configuration.nix
];
}

@ -1 +0,0 @@
Subproject commit ef623d6a9e25c1f0ec9d282ab5ed5dff54674816

View file

@ -1,14 +0,0 @@
{
lib,
config,
...
}: {
imports = [./leyla ./ester ./eve];
users.mutableUsers = false;
home-manager.users = import ./home.nix {
lib = lib;
config = config;
};
}

View file

@ -1,9 +0,0 @@
{
lib,
config,
...
}: {
leyla = lib.mkIf (config.nixos.users.leyla.isDesktopUser || config.nixos.users.leyla.isTerminalUser) (import ./leyla/home.nix);
ester = lib.mkIf config.nixos.users.ester.isDesktopUser (import ./ester/home.nix);
eve = lib.mkIf config.nixos.users.eve.isDesktopUser (import ./eve/home.nix);
}

View file

@ -1,132 +0,0 @@
{
lib,
config,
pkgs,
inputs,
...
}: {
programs = {
# 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 = [""];
# # }
# ];
# };
# }
};
}

View file

@ -1,8 +1,61 @@
{lib, ...}: { {inputs}: let
util = (import ./default.nix) {inherit inputs;};
outputs = inputs.self.outputs;
lib = inputs.lib;
lix-module = inputs.lix-module;
nixpkgs = inputs.nixpkgs;
home-manager = inputs.home-manager;
sops-nix = inputs.sops-nix;
systems = [
"aarch64-darwin"
"aarch64-linux"
"x86_64-darwin"
"x86_64-linux"
];
forEachSystem = nixpkgs.lib.genAttrs systems;
pkgsFor = system: nixpkgs.legacyPackages.${system};
home-manager-config = {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.backupFileExtension = "backup";
home-manager.extraSpecialArgs = {inherit inputs;};
home-manager.users = import ../homes;
};
in {
forEachPkgs = lambda: forEachSystem (system: lambda (pkgsFor system));
mkUnless = condition: yes: (lib.mkIf (!condition) yes); mkUnless = condition: yes: (lib.mkIf (!condition) yes);
mkIfElse = condition: yes: no: mkIfElse = condition: yes: no:
lib.mkMerge [ lib.mkMerge [
(lib.mkIf condition yes) (lib.mkIf condition yes)
(lib.mkUnless condition no) (lib.mkUnless condition no)
]; ];
mkSystem = host:
inputs.nixpkgs.lib.nixosSystem {
specialArgs = {inherit inputs outputs util;};
modules = [
lix-module.nixosModules.default
sops-nix.nixosModules.sops
home-manager.nixosModules.home-manager
home-manager-config
../overlays
../hosts/${host}
];
};
# mkHome = user: host:
# home-manager.lib.homeManagerConfiguration {
# # pkgs = pkgsFor system;
# extraSpecialArgs = {
# inherit inputs util outputs;
# };
# modules = [
# # config
# outputs.homeManagerModules.default
# ];
# };
} }