From 0d0443a02a9440fd048d249d3e67611aadbaa066 Mon Sep 17 00:00:00 2001 From: Leyla Becker Date: Mon, 25 Nov 2024 16:58:12 -0600 Subject: [PATCH] restructured repo to support nix-darwin --- .vscode/settings.json | 2 + configurations/darwin/hesperium/default.nix | 1 + .../home-manager}/default.nix | 0 .../home-manager}/ester/default.nix | 0 .../home-manager}/eve/default.nix | 0 .../home-manager}/leyla/default.nix | 0 .../home-manager}/leyla/firefox.nix | 0 .../home-manager}/leyla/i18n.nix | 0 .../home-manager}/leyla/packages.nix | 0 .../home-manager}/leyla/vscode.nix | 0 .../home-manager}/leyla/vscode/default.nix | 0 .../home-manager}/leyla/vscode/user-words.nix | 0 .../nixos}/defiant/configuration.nix | 0 .../nixos}/defiant/default.nix | 0 .../nixos}/defiant/disko-config.nix | 0 .../nixos}/defiant/hardware-configuration.nix | 0 .../nixos}/defiant/services.nix | 0 .../nixos}/horizon/configuration.nix | 0 .../nixos}/horizon/default.nix | 0 .../nixos}/horizon/hardware-configuration.nix | 0 .../nixos}/twilight/configuration.nix | 0 .../nixos}/twilight/default.nix | 0 .../twilight/hardware-configuration.nix | 0 flake.lock | 21 +++++++ flake.nix | 26 +++++--- host-modules/home-manager/default.nix | 7 --- modules/{ => common-modules}/default.nix | 0 .../{ => common-modules}/overlays/default.nix | 0 modules/{ => common-modules}/pkgs/default.nix | 0 modules/darwin-modules/default.nix | 6 ++ .../darwin-modules/home-manager/default.nix | 2 + .../home-manager-modules}/default.nix | 1 + .../home-manager-modules}/flipperzero.nix | 0 .../home-manager-modules}/i18n.nix | 0 .../nixos-modules}/default.nix | 3 +- .../nixos-modules}/desktop.nix | 0 .../nixos-modules}/hardware.nix | 0 .../nixos-modules/home-manager/default.nix | 7 +++ .../home-manager/flipperzero.nix | 0 .../nixos-modules}/home-manager/i18n.nix | 0 .../nixos-modules}/i18n.nix | 0 .../nixos-modules}/nix-development.nix | 0 .../nixos-modules}/system.nix | 0 .../nixos-modules}/users.nix | 2 +- modules/system-modules/default.nix | 6 ++ .../system-modules/home-manager/default.nix | 2 + util/default.nix | 59 +++++++++++++------ 47 files changed, 111 insertions(+), 34 deletions(-) create mode 100644 configurations/darwin/hesperium/default.nix rename {homes => configurations/home-manager}/default.nix (100%) rename {homes => configurations/home-manager}/ester/default.nix (100%) rename {homes => configurations/home-manager}/eve/default.nix (100%) rename {homes => configurations/home-manager}/leyla/default.nix (100%) rename {homes => configurations/home-manager}/leyla/firefox.nix (100%) rename {homes => configurations/home-manager}/leyla/i18n.nix (100%) rename {homes => configurations/home-manager}/leyla/packages.nix (100%) rename {homes => configurations/home-manager}/leyla/vscode.nix (100%) rename {homes => configurations/home-manager}/leyla/vscode/default.nix (100%) rename {homes => configurations/home-manager}/leyla/vscode/user-words.nix (100%) rename {hosts => configurations/nixos}/defiant/configuration.nix (100%) rename {hosts => configurations/nixos}/defiant/default.nix (100%) rename {hosts => configurations/nixos}/defiant/disko-config.nix (100%) rename {hosts => configurations/nixos}/defiant/hardware-configuration.nix (100%) rename {hosts => configurations/nixos}/defiant/services.nix (100%) rename {hosts => configurations/nixos}/horizon/configuration.nix (100%) rename {hosts => configurations/nixos}/horizon/default.nix (100%) rename {hosts => configurations/nixos}/horizon/hardware-configuration.nix (100%) rename {hosts => configurations/nixos}/twilight/configuration.nix (100%) rename {hosts => configurations/nixos}/twilight/default.nix (100%) rename {hosts => configurations/nixos}/twilight/hardware-configuration.nix (100%) delete mode 100644 host-modules/home-manager/default.nix rename modules/{ => common-modules}/default.nix (100%) rename modules/{ => common-modules}/overlays/default.nix (100%) rename modules/{ => common-modules}/pkgs/default.nix (100%) create mode 100644 modules/darwin-modules/default.nix create mode 100644 modules/darwin-modules/home-manager/default.nix rename {home-modules => modules/home-manager-modules}/default.nix (51%) rename {home-modules => modules/home-manager-modules}/flipperzero.nix (100%) rename {home-modules => modules/home-manager-modules}/i18n.nix (100%) rename {host-modules => modules/nixos-modules}/default.nix (74%) rename {host-modules => modules/nixos-modules}/desktop.nix (100%) rename {host-modules => modules/nixos-modules}/hardware.nix (100%) create mode 100644 modules/nixos-modules/home-manager/default.nix rename {host-modules => modules/nixos-modules}/home-manager/flipperzero.nix (100%) rename {host-modules => modules/nixos-modules}/home-manager/i18n.nix (100%) rename {host-modules => modules/nixos-modules}/i18n.nix (100%) rename {host-modules => modules/nixos-modules}/nix-development.nix (100%) rename {host-modules => modules/nixos-modules}/system.nix (100%) rename {host-modules => modules/nixos-modules}/users.nix (99%) create mode 100644 modules/system-modules/default.nix create mode 100644 modules/system-modules/home-manager/default.nix diff --git a/.vscode/settings.json b/.vscode/settings.json index b152cc4..8d6717e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,9 +1,11 @@ { "cSpell.words": [ + "attrsets", "bitwarden", "forgejo", "gids", "headscale", + "hesperium", "jellyfin", "macvlan", "nextcloud", diff --git a/configurations/darwin/hesperium/default.nix b/configurations/darwin/hesperium/default.nix new file mode 100644 index 0000000..6462967 --- /dev/null +++ b/configurations/darwin/hesperium/default.nix @@ -0,0 +1 @@ +{...}: {} diff --git a/homes/default.nix b/configurations/home-manager/default.nix similarity index 100% rename from homes/default.nix rename to configurations/home-manager/default.nix diff --git a/homes/ester/default.nix b/configurations/home-manager/ester/default.nix similarity index 100% rename from homes/ester/default.nix rename to configurations/home-manager/ester/default.nix diff --git a/homes/eve/default.nix b/configurations/home-manager/eve/default.nix similarity index 100% rename from homes/eve/default.nix rename to configurations/home-manager/eve/default.nix diff --git a/homes/leyla/default.nix b/configurations/home-manager/leyla/default.nix similarity index 100% rename from homes/leyla/default.nix rename to configurations/home-manager/leyla/default.nix diff --git a/homes/leyla/firefox.nix b/configurations/home-manager/leyla/firefox.nix similarity index 100% rename from homes/leyla/firefox.nix rename to configurations/home-manager/leyla/firefox.nix diff --git a/homes/leyla/i18n.nix b/configurations/home-manager/leyla/i18n.nix similarity index 100% rename from homes/leyla/i18n.nix rename to configurations/home-manager/leyla/i18n.nix diff --git a/homes/leyla/packages.nix b/configurations/home-manager/leyla/packages.nix similarity index 100% rename from homes/leyla/packages.nix rename to configurations/home-manager/leyla/packages.nix diff --git a/homes/leyla/vscode.nix b/configurations/home-manager/leyla/vscode.nix similarity index 100% rename from homes/leyla/vscode.nix rename to configurations/home-manager/leyla/vscode.nix diff --git a/homes/leyla/vscode/default.nix b/configurations/home-manager/leyla/vscode/default.nix similarity index 100% rename from homes/leyla/vscode/default.nix rename to configurations/home-manager/leyla/vscode/default.nix diff --git a/homes/leyla/vscode/user-words.nix b/configurations/home-manager/leyla/vscode/user-words.nix similarity index 100% rename from homes/leyla/vscode/user-words.nix rename to configurations/home-manager/leyla/vscode/user-words.nix diff --git a/hosts/defiant/configuration.nix b/configurations/nixos/defiant/configuration.nix similarity index 100% rename from hosts/defiant/configuration.nix rename to configurations/nixos/defiant/configuration.nix diff --git a/hosts/defiant/default.nix b/configurations/nixos/defiant/default.nix similarity index 100% rename from hosts/defiant/default.nix rename to configurations/nixos/defiant/default.nix diff --git a/hosts/defiant/disko-config.nix b/configurations/nixos/defiant/disko-config.nix similarity index 100% rename from hosts/defiant/disko-config.nix rename to configurations/nixos/defiant/disko-config.nix diff --git a/hosts/defiant/hardware-configuration.nix b/configurations/nixos/defiant/hardware-configuration.nix similarity index 100% rename from hosts/defiant/hardware-configuration.nix rename to configurations/nixos/defiant/hardware-configuration.nix diff --git a/hosts/defiant/services.nix b/configurations/nixos/defiant/services.nix similarity index 100% rename from hosts/defiant/services.nix rename to configurations/nixos/defiant/services.nix diff --git a/hosts/horizon/configuration.nix b/configurations/nixos/horizon/configuration.nix similarity index 100% rename from hosts/horizon/configuration.nix rename to configurations/nixos/horizon/configuration.nix diff --git a/hosts/horizon/default.nix b/configurations/nixos/horizon/default.nix similarity index 100% rename from hosts/horizon/default.nix rename to configurations/nixos/horizon/default.nix diff --git a/hosts/horizon/hardware-configuration.nix b/configurations/nixos/horizon/hardware-configuration.nix similarity index 100% rename from hosts/horizon/hardware-configuration.nix rename to configurations/nixos/horizon/hardware-configuration.nix diff --git a/hosts/twilight/configuration.nix b/configurations/nixos/twilight/configuration.nix similarity index 100% rename from hosts/twilight/configuration.nix rename to configurations/nixos/twilight/configuration.nix diff --git a/hosts/twilight/default.nix b/configurations/nixos/twilight/default.nix similarity index 100% rename from hosts/twilight/default.nix rename to configurations/nixos/twilight/default.nix diff --git a/hosts/twilight/hardware-configuration.nix b/configurations/nixos/twilight/hardware-configuration.nix similarity index 100% rename from hosts/twilight/hardware-configuration.nix rename to configurations/nixos/twilight/hardware-configuration.nix diff --git a/flake.lock b/flake.lock index bf4e9d1..90c0c06 100644 --- a/flake.lock +++ b/flake.lock @@ -198,6 +198,26 @@ "url": "https://git.lix.systems/lix-project/nixos-module" } }, + "nix-darwin": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1732420287, + "narHash": "sha256-CzvYF4x6jUh/+NEEIFrIY5t1W/N3IA2bNZJiMXu9GTo=", + "owner": "LnL7", + "repo": "nix-darwin", + "rev": "3c52583b99666a349a6219dc1f0dd07d75c82d6a", + "type": "github" + }, + "original": { + "owner": "LnL7", + "repo": "nix-darwin", + "type": "github" + } + }, "nix-vscode-extensions": { "inputs": { "flake-compat": "flake-compat_2", @@ -259,6 +279,7 @@ "flake-compat": "flake-compat", "home-manager": "home-manager", "lix-module": "lix-module", + "nix-darwin": "nix-darwin", "nix-vscode-extensions": "nix-vscode-extensions", "nixos-hardware": "nixos-hardware", "nixpkgs": "nixpkgs", diff --git a/flake.nix b/flake.nix index 6845fcf..566102c 100644 --- a/flake.nix +++ b/flake.nix @@ -11,7 +11,7 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - # self hosted repo of secrets file to further protect files in case of future encryption vunrabilities + # self hosted repo of secrets file to further protect files in case of future encryption vulnerabilities secrets = { url = "git+https://git.jan-leila.com/jan-leila/nix-config-secrets?ref=main"; flake = false; @@ -28,6 +28,11 @@ # url = "github:nix-community/impermanence"; # }; + nix-darwin = { + url = "github:LnL7/nix-darwin"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + # users home directories home-manager = { url = "github:nix-community/home-manager"; @@ -70,7 +75,8 @@ } @ inputs: let util = import ./util {inherit inputs;}; forEachPkgs = util.forEachPkgs; - mkSystem = util.mkSystem; + mkNixosSystem = util.mkNixosSystem; + mkDarwinSystem = util.mkDarwinSystem; mkHome = util.mkHome; in { formatter = forEachPkgs (pkgs: pkgs.alejandra); @@ -95,6 +101,16 @@ }; }); + nixosConfigurations = { + horizon = mkNixosSystem "horizon"; + twilight = mkNixosSystem "twilight"; + defiant = mkNixosSystem "defiant"; + }; + + darwinConfigurations = { + hesperium = mkDarwinSystem "hesperium"; + }; + homeConfigurations = nixpkgs.lib.attrsets.mergeAttrsList ( nixpkgs.lib.attrsets.mapAttrsToList (hostname: system: ( nixpkgs.lib.attrsets.mapAttrs' (user: _: { @@ -105,11 +121,5 @@ )) self.nixosConfigurations ); - - nixosConfigurations = { - horizon = mkSystem "horizon"; - twilight = mkSystem "twilight"; - defiant = mkSystem "defiant"; - }; }; } diff --git a/host-modules/home-manager/default.nix b/host-modules/home-manager/default.nix deleted file mode 100644 index 5454594..0000000 --- a/host-modules/home-manager/default.nix +++ /dev/null @@ -1,7 +0,0 @@ -# modules in this folder are to adapt home manager modules defined in `home-modules` to any nix module configs that they need to set -{...}: { - imports = [ - ./flipperzero.nix - ./i18n.nix - ]; -} diff --git a/modules/default.nix b/modules/common-modules/default.nix similarity index 100% rename from modules/default.nix rename to modules/common-modules/default.nix diff --git a/modules/overlays/default.nix b/modules/common-modules/overlays/default.nix similarity index 100% rename from modules/overlays/default.nix rename to modules/common-modules/overlays/default.nix diff --git a/modules/pkgs/default.nix b/modules/common-modules/pkgs/default.nix similarity index 100% rename from modules/pkgs/default.nix rename to modules/common-modules/pkgs/default.nix diff --git a/modules/darwin-modules/default.nix b/modules/darwin-modules/default.nix new file mode 100644 index 0000000..ddf2323 --- /dev/null +++ b/modules/darwin-modules/default.nix @@ -0,0 +1,6 @@ +# this folder container modules that are for darwin only +{...}: { + imports = [ + ./home-manager + ]; +} diff --git a/modules/darwin-modules/home-manager/default.nix b/modules/darwin-modules/home-manager/default.nix new file mode 100644 index 0000000..1ebec5f --- /dev/null +++ b/modules/darwin-modules/home-manager/default.nix @@ -0,0 +1,2 @@ +# modules in this folder are to adapt home-manager modules configs to darwin-module configs +{...}: {} diff --git a/home-modules/default.nix b/modules/home-manager-modules/default.nix similarity index 51% rename from home-modules/default.nix rename to modules/home-manager-modules/default.nix index b3f5c45..9fb37f2 100644 --- a/home-modules/default.nix +++ b/modules/home-manager-modules/default.nix @@ -1,3 +1,4 @@ +# this folder container modules that are for home manager only {...}: { imports = [ ./flipperzero.nix diff --git a/home-modules/flipperzero.nix b/modules/home-manager-modules/flipperzero.nix similarity index 100% rename from home-modules/flipperzero.nix rename to modules/home-manager-modules/flipperzero.nix diff --git a/home-modules/i18n.nix b/modules/home-manager-modules/i18n.nix similarity index 100% rename from home-modules/i18n.nix rename to modules/home-manager-modules/i18n.nix diff --git a/host-modules/default.nix b/modules/nixos-modules/default.nix similarity index 74% rename from host-modules/default.nix rename to modules/nixos-modules/default.nix index 4ad79d0..1414cf2 100644 --- a/host-modules/default.nix +++ b/modules/nixos-modules/default.nix @@ -1,11 +1,12 @@ +# this folder container modules that are for nixos only {...}: { imports = [ + ./home-manager ./system.nix ./hardware.nix ./users.nix ./desktop.nix ./nix-development.nix ./i18n.nix - ./home-manager ]; } diff --git a/host-modules/desktop.nix b/modules/nixos-modules/desktop.nix similarity index 100% rename from host-modules/desktop.nix rename to modules/nixos-modules/desktop.nix diff --git a/host-modules/hardware.nix b/modules/nixos-modules/hardware.nix similarity index 100% rename from host-modules/hardware.nix rename to modules/nixos-modules/hardware.nix diff --git a/modules/nixos-modules/home-manager/default.nix b/modules/nixos-modules/home-manager/default.nix new file mode 100644 index 0000000..3848e1b --- /dev/null +++ b/modules/nixos-modules/home-manager/default.nix @@ -0,0 +1,7 @@ +# modules in this folder are to adapt home-manager modules configs to nixos-module configs +{...}: { + imports = [ + ./flipperzero.nix + ./i18n.nix + ]; +} diff --git a/host-modules/home-manager/flipperzero.nix b/modules/nixos-modules/home-manager/flipperzero.nix similarity index 100% rename from host-modules/home-manager/flipperzero.nix rename to modules/nixos-modules/home-manager/flipperzero.nix diff --git a/host-modules/home-manager/i18n.nix b/modules/nixos-modules/home-manager/i18n.nix similarity index 100% rename from host-modules/home-manager/i18n.nix rename to modules/nixos-modules/home-manager/i18n.nix diff --git a/host-modules/i18n.nix b/modules/nixos-modules/i18n.nix similarity index 100% rename from host-modules/i18n.nix rename to modules/nixos-modules/i18n.nix diff --git a/host-modules/nix-development.nix b/modules/nixos-modules/nix-development.nix similarity index 100% rename from host-modules/nix-development.nix rename to modules/nixos-modules/nix-development.nix diff --git a/host-modules/system.nix b/modules/nixos-modules/system.nix similarity index 100% rename from host-modules/system.nix rename to modules/nixos-modules/system.nix diff --git a/host-modules/users.nix b/modules/nixos-modules/users.nix similarity index 99% rename from host-modules/users.nix rename to modules/nixos-modules/users.nix index 23771a3..e5a8a91 100644 --- a/host-modules/users.nix +++ b/modules/nixos-modules/users.nix @@ -4,7 +4,7 @@ inputs, ... }: let - SOPS_AGE_KEY_DIRECTORY = import ../const/sops_age_key_directory.nix; + SOPS_AGE_KEY_DIRECTORY = import ../../const/sops_age_key_directory.nix; host = config.host; diff --git a/modules/system-modules/default.nix b/modules/system-modules/default.nix new file mode 100644 index 0000000..f6605ce --- /dev/null +++ b/modules/system-modules/default.nix @@ -0,0 +1,6 @@ +# this folder container modules that are for nixos and darwin +{...}: { + imports = [ + ./home-manager + ]; +} diff --git a/modules/system-modules/home-manager/default.nix b/modules/system-modules/home-manager/default.nix new file mode 100644 index 0000000..3745b8f --- /dev/null +++ b/modules/system-modules/home-manager/default.nix @@ -0,0 +1,2 @@ +# modules in this folder are to adapt home-manager modules configs to system-module configs +{...}: {} diff --git a/util/default.nix b/util/default.nix index efd58c8..32acca1 100644 --- a/util/default.nix +++ b/util/default.nix @@ -6,6 +6,7 @@ lix-module = inputs.lix-module; nixpkgs = inputs.nixpkgs; home-manager = inputs.home-manager; + nix-darwin = inputs.nix-darwin; sops-nix = inputs.sops-nix; systems = [ @@ -17,18 +18,34 @@ forEachSystem = nixpkgs.lib.genAttrs systems; pkgsFor = system: nixpkgs.legacyPackages.${system}; - home-manager-shared-modules = [ - ../modules - ../home-modules + common-modules = [ + lix-module.nixosModules.default + ../modules/common-modules ]; + + home-manager-modules = + common-modules + ++ [ + ../modules/home-manager-modules + ]; + home-manager-config = nixpkgs: { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.backupFileExtension = "backup"; home-manager.extraSpecialArgs = {inherit inputs outputs util;}; - home-manager.users = import ../homes nixpkgs; - home-manager.sharedModules = home-manager-shared-modules; + home-manager.users = import ../configurations/home-manager nixpkgs; + home-manager.sharedModules = home-manager-modules; }; + + system-modules = + common-modules + ++ [ + ../modules/system-modules + sops-nix.nixosModules.sops + home-manager.nixosModules.home-manager + home-manager-config + ]; in { forEachPkgs = lambda: forEachSystem (system: lambda (pkgsFor system)); @@ -39,18 +56,26 @@ in { (lib.mkUnless condition no) ]; - mkSystem = host: + mkNixosSystem = host: 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 - ../modules - ../host-modules - ../hosts/${host} - ]; + modules = + system-modules + ++ [ + ../modules/nixos-modules + ../configurations/nixos/${host} + ]; + }; + + mkDarwinSystem = host: + nix-darwin.lib.darwinSystem { + specialArgs = {inherit inputs outputs util;}; + modules = + system-modules + ++ [ + ../modules/darwin-modules + ../configurations/darwin/${host} + ]; }; mkHome = user: host: system: osConfig: @@ -60,9 +85,9 @@ in { inherit inputs util outputs osConfig; }; modules = - home-manager-shared-modules + home-manager-modules ++ [ - ../homes/${user} + ../configurations/home-manager/${user} ]; }; }