From 92438d35f66c162cab31c3a2e9a0b90d9ef1e103 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 17:41:00 +0000 Subject: [PATCH 01/15] flake: add 'flake-parts' --- flake.lock | 22 ++++++++++++++++++++++ flake.nix | 11 +++++++++++ 2 files changed, 33 insertions(+) diff --git a/flake.lock b/flake.lock index caccc7d..e14f4e4 100644 --- a/flake.lock +++ b/flake.lock @@ -60,6 +60,27 @@ "type": "github" } }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1677714448, + "narHash": "sha256-Hq8qLs8xFu28aDjytfxjdC96bZ6pds21Yy09mSC156I=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "dc531e3a9ce757041e1afaff8ee932725ca60002", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "ref": "main", + "repo": "flake-parts", + "type": "github" + } + }, "futils": { "locked": { "lastModified": 1678901627, @@ -185,6 +206,7 @@ "root": { "inputs": { "agenix": "agenix", + "flake-parts": "flake-parts", "futils": "futils", "home-manager": "home-manager", "nixpkgs": "nixpkgs", diff --git a/flake.nix b/flake.nix index 63ade9a..058ac27 100644 --- a/flake.nix +++ b/flake.nix @@ -11,6 +11,16 @@ }; }; + flake-parts = { + type = "github"; + owner = "hercules-ci"; + repo = "flake-parts"; + ref = "main"; + inputs = { + nixpkgs-lib.follows = "nixpkgs"; + }; + }; + futils = { type = "github"; owner = "numtide"; @@ -60,6 +70,7 @@ inputs @ { self , agenix + , flake-parts , futils , home-manager , nixpkgs From 922c6e75ca06a9dc6e92a1699b18c72b9b3e567b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 17:45:49 +0000 Subject: [PATCH 02/15] flake: use 'flake-parts' --- flake/default.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/flake/default.nix b/flake/default.nix index 1e0ef12..ff2832a 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -1,4 +1,5 @@ { self +, flake-parts , futils , home-manager , nixpkgs @@ -77,4 +78,8 @@ let nixosConfigurations = import ./nixos.nix inputs; }; in -(eachMySystem systemDependant) // systemIndependant +flake-parts.lib.mkFlake { inherit inputs; } { + systems = mySystems; + + flake = (eachMySystem systemDependant) // systemIndependant; +} From a88c99b9d7abca9f89fa0eb5fccf70bd4407ce4f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 17:46:10 +0000 Subject: [PATCH 03/15] flake: overlays: convert to 'flake-parts' --- flake/default.nix | 6 ++++-- flake/overlays.nix | 5 +++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/flake/default.nix b/flake/default.nix index ff2832a..f3219e3 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -73,13 +73,15 @@ let systemIndependant = { lib = import ./lib.nix inputs; - overlays = import ./overlays.nix inputs; - nixosConfigurations = import ./nixos.nix inputs; }; in flake-parts.lib.mkFlake { inherit inputs; } { systems = mySystems; + imports = [ + ./overlays.nix + ]; + flake = (eachMySystem systemDependant) // systemIndependant; } diff --git a/flake/overlays.nix b/flake/overlays.nix index bb5e546..1a5e8ba 100644 --- a/flake/overlays.nix +++ b/flake/overlays.nix @@ -1,5 +1,4 @@ { self, ... }: - let default-overlays = import "${self}/overlays"; @@ -13,4 +12,6 @@ let }; }; in -default-overlays // additional-overlays +{ + flake.overlays = default-overlays // additional-overlays; +} From b2f3bc955c0f83bc9a40d3f663963ea318d6bf37 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 17:47:47 +0000 Subject: [PATCH 04/15] flake: lib: convert to 'flake-parts' --- flake/default.nix | 3 +-- flake/lib.nix | 8 ++++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/flake/default.nix b/flake/default.nix index f3219e3..9134085 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -71,8 +71,6 @@ let }; systemIndependant = { - lib = import ./lib.nix inputs; - nixosConfigurations = import ./nixos.nix inputs; }; in @@ -80,6 +78,7 @@ flake-parts.lib.mkFlake { inherit inputs; } { systems = mySystems; imports = [ + ./lib.nix ./overlays.nix ]; diff --git a/flake/lib.nix b/flake/lib.nix index 083c56c..12e89c3 100644 --- a/flake/lib.nix +++ b/flake/lib.nix @@ -1,7 +1,11 @@ -{ self, nixpkgs, ... } @ inputs: +{ self, inputs, ... }: let + inherit (inputs) nixpkgs; + lib = nixpkgs.lib.extend (final: _: { my = import "${self}/lib" { inherit inputs; pkgs = nixpkgs; lib = final; }; }); in -lib +{ + flake.lib = lib; +} From 730e4abf1750e52399cb91aa961d567f8613f90f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 17:53:21 +0000 Subject: [PATCH 05/15] flake: nixos: convert to 'flake-parts' --- flake/default.nix | 7 ++----- flake/nixos.nix | 12 +++++++----- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/flake/default.nix b/flake/default.nix index 9134085..c73378f 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -69,18 +69,15 @@ let }; }; }; - - systemIndependant = { - nixosConfigurations = import ./nixos.nix inputs; - }; in flake-parts.lib.mkFlake { inherit inputs; } { systems = mySystems; imports = [ ./lib.nix + ./nixos.nix ./overlays.nix ]; - flake = (eachMySystem systemDependant) // systemIndependant; + flake = (eachMySystem systemDependant); } diff --git a/flake/nixos.nix b/flake/nixos.nix index 2b117e1..84dce54 100644 --- a/flake/nixos.nix +++ b/flake/nixos.nix @@ -1,4 +1,4 @@ -{ self, nixpkgs, nur, ... } @ inputs: +{ self, inputs, ... }: let inherit (self) lib; @@ -9,7 +9,7 @@ let }) { nixpkgs.overlays = (lib.attrValues self.overlays) ++ [ - nur.overlay + inputs.nur.overlay ]; } # Include generic settings @@ -31,7 +31,9 @@ let }; }; in -lib.mapAttrs buildHost { - aramis = "x86_64-linux"; - porthos = "x86_64-linux"; +{ + flake.nixosConfigurations = lib.mapAttrs buildHost { + aramis = "x86_64-linux"; + porthos = "x86_64-linux"; + }; } From e1e6c39bf17f10b8290b7a9346ed3dd8564c1652 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 17:59:15 +0000 Subject: [PATCH 06/15] flake: checks: convert to 'flake-parts' --- flake/checks.nix | 24 ++++++++++++++---------- flake/default.nix | 3 +-- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/flake/checks.nix b/flake/checks.nix index ea77620..50f20b1 100644 --- a/flake/checks.nix +++ b/flake/checks.nix @@ -1,16 +1,20 @@ -{ self, pre-commit-hooks, ... }: -system: +{ self, inputs, ... }: { - pre-commit = pre-commit-hooks.lib.${system}.run { - src = self; + perSystem = { system, ... }: { + checks = { + # NOTE: seems like inputs' does not output the 'lib' attribute + pre-commit = inputs.pre-commit-hooks.lib.${system}.run { + src = self; - hooks = { - nixpkgs-fmt = { - enable = true; - }; + hooks = { + nixpkgs-fmt = { + enable = true; + }; - shellcheck = { - enable = true; + shellcheck = { + enable = true; + }; + }; }; }; }; diff --git a/flake/default.nix b/flake/default.nix index c73378f..3ba2b19 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -26,8 +26,6 @@ let default = self.apps.${system}.diff-flake; }; - checks = import ./checks.nix inputs system; - devShells = import ./dev-shells.nix inputs system; packages = import ./packages.nix inputs system; @@ -74,6 +72,7 @@ flake-parts.lib.mkFlake { inherit inputs; } { systems = mySystems; imports = [ + ./checks.nix ./lib.nix ./nixos.nix ./overlays.nix From 2b969f772671c264e6f746e51aa66b6f9a9fbe01 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 18:01:37 +0000 Subject: [PATCH 07/15] flake: dev-shells: convert to 'flake-parts' --- flake/default.nix | 3 +-- flake/dev-shells.nix | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/flake/default.nix b/flake/default.nix index 3ba2b19..eb85017 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -26,8 +26,6 @@ let default = self.apps.${system}.diff-flake; }; - devShells = import ./dev-shells.nix inputs system; - packages = import ./packages.nix inputs system; # Work-around for https://github.com/nix-community/home-manager/issues/3075 @@ -73,6 +71,7 @@ flake-parts.lib.mkFlake { inherit inputs; } { imports = [ ./checks.nix + ./dev-shells.nix ./lib.nix ./nixos.nix ./overlays.nix diff --git a/flake/dev-shells.nix b/flake/dev-shells.nix index 064f57d..15c1335 100644 --- a/flake/dev-shells.nix +++ b/flake/dev-shells.nix @@ -1,17 +1,17 @@ -{ self, nixpkgs, ... }: -system: -let - pkgs = nixpkgs.legacyPackages.${system}; -in +{ inputs, ... }: { - default = pkgs.mkShell { - name = "NixOS-config"; + perSystem = { self', pkgs, ... }: { + devShells = { + default = pkgs.mkShell { + name = "NixOS-config"; - nativeBuildInputs = with pkgs; [ - gitAndTools.pre-commit - nixpkgs-fmt - ]; + nativeBuildInputs = with pkgs; [ + gitAndTools.pre-commit + nixpkgs-fmt + ]; - inherit (self.checks.${system}.pre-commit) shellHook; + inherit (self'.checks.pre-commit) shellHook; + }; + }; }; } From ec036255adaf46a33ebac7ef4e41ea454b3598ce Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 18:04:17 +0000 Subject: [PATCH 08/15] flake: packages: convert to 'flake-parts' --- flake/default.nix | 3 +-- flake/packages.nix | 23 +++++++++++++---------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/flake/default.nix b/flake/default.nix index eb85017..9c6b369 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -26,8 +26,6 @@ let default = self.apps.${system}.diff-flake; }; - packages = import ./packages.nix inputs system; - # Work-around for https://github.com/nix-community/home-manager/issues/3075 legacyPackages = { homeConfigurations = { @@ -75,6 +73,7 @@ flake-parts.lib.mkFlake { inherit inputs; } { ./lib.nix ./nixos.nix ./overlays.nix + ./packages.nix ]; flake = (eachMySystem systemDependant); diff --git a/flake/packages.nix b/flake/packages.nix index 1eccfa3..3515071 100644 --- a/flake/packages.nix +++ b/flake/packages.nix @@ -1,10 +1,13 @@ -{ self, futils, nixpkgs, ... }: -system: -let - inherit (futils.lib) filterPackages flattenTree; - pkgs = nixpkgs.legacyPackages.${system}; - packages = import "${self}/pkgs" { inherit pkgs; }; - flattenedPackages = flattenTree packages; - finalPackages = filterPackages system flattenedPackages; -in -finalPackages +{ self, inputs, ... }: +{ + perSystem = { pkgs, system, ... }: { + packages = + let + inherit (inputs.futils.lib) filterPackages flattenTree; + packages = import "${self}/pkgs" { inherit pkgs; }; + flattenedPackages = flattenTree packages; + finalPackages = filterPackages system flattenedPackages; + in + finalPackages; + }; +} From 59b1ab59dd6b44586345d173aeab6ee8e409c9ac Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 18:07:58 +0000 Subject: [PATCH 09/15] flake: apps: convert to 'flake-parts' --- flake/apps.nix | 9 +++++++++ flake/default.nix | 6 +----- 2 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 flake/apps.nix diff --git a/flake/apps.nix b/flake/apps.nix new file mode 100644 index 0000000..f8dc2de --- /dev/null +++ b/flake/apps.nix @@ -0,0 +1,9 @@ +{ inputs, ... }: +{ + perSystem = { self', ... }: { + apps = { + diff-flake = inputs.futils.lib.mkApp { drv = self'.packages.diff-flake; }; + default = self'.apps.diff-flake; + }; + }; +} diff --git a/flake/default.nix b/flake/default.nix index 9c6b369..8ba9a02 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -21,11 +21,6 @@ let eachMySystem = eachSystem mySystems; systemDependant = system: { - apps = { - diff-flake = futils.lib.mkApp { drv = self.packages.${system}.diff-flake; }; - default = self.apps.${system}.diff-flake; - }; - # Work-around for https://github.com/nix-community/home-manager/issues/3075 legacyPackages = { homeConfigurations = { @@ -68,6 +63,7 @@ flake-parts.lib.mkFlake { inherit inputs; } { systems = mySystems; imports = [ + ./apps.nix ./checks.nix ./dev-shells.nix ./lib.nix From c82eb57070e2fff51e8084adec44e1a8b0567a7f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 18:11:59 +0000 Subject: [PATCH 10/15] flake: home-manager: convert to 'flake-parts' --- flake/default.nix | 46 ++---------------------------------------- flake/home-manager.nix | 41 +++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 44 deletions(-) create mode 100644 flake/home-manager.nix diff --git a/flake/default.nix b/flake/default.nix index 8ba9a02..50eec92 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -9,7 +9,7 @@ let inherit (self) lib; - inherit (futils.lib) eachSystem system; + inherit (futils.lib) system; mySystems = [ system.aarch64-darwin @@ -17,47 +17,6 @@ let system.x86_64-darwin system.x86_64-linux ]; - - eachMySystem = eachSystem mySystems; - - systemDependant = system: { - # Work-around for https://github.com/nix-community/home-manager/issues/3075 - legacyPackages = { - homeConfigurations = { - ambroisie = home-manager.lib.homeManagerConfiguration { - # Work-around for home-manager - # * not letting me set `lib` as an extraSpecialArgs - # * not respecting `nixpkgs.overlays` [1] - # [1]: https://github.com/nix-community/home-manager/issues/2954 - pkgs = import nixpkgs { - inherit system; - - overlays = (lib.attrValues self.overlays) ++ [ - nur.overlay - ]; - }; - - modules = [ - "${self}/home" - { - # The basics - home.username = "ambroisie"; - home.homeDirectory = "/home/ambroisie"; - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; - # This is a generic linux install - targets.genericLinux.enable = true; - } - ]; - - extraSpecialArgs = { - # Inject inputs to use them in global registry - inherit inputs; - }; - }; - }; - }; - }; in flake-parts.lib.mkFlake { inherit inputs; } { systems = mySystems; @@ -66,11 +25,10 @@ flake-parts.lib.mkFlake { inherit inputs; } { ./apps.nix ./checks.nix ./dev-shells.nix + ./home-manager.nix ./lib.nix ./nixos.nix ./overlays.nix ./packages.nix ]; - - flake = (eachMySystem systemDependant); } diff --git a/flake/home-manager.nix b/flake/home-manager.nix new file mode 100644 index 0000000..df5b3e2 --- /dev/null +++ b/flake/home-manager.nix @@ -0,0 +1,41 @@ +{ self, inputs, ... }: +{ + perSystem = { system, ... }: { + # Work-around for https://github.com/nix-community/home-manager/issues/3075 + legacyPackages = { + homeConfigurations = { + ambroisie = inputs.home-manager.lib.homeManagerConfiguration { + # Work-around for home-manager + # * not letting me set `lib` as an extraSpecialArgs + # * not respecting `nixpkgs.overlays` [1] + # [1]: https://github.com/nix-community/home-manager/issues/2954 + pkgs = import inputs.nixpkgs { + inherit system; + + overlays = (lib.attrValues self.overlays) ++ [ + inputs.nur.overlay + ]; + }; + + modules = [ + "${self}/home" + { + # The basics + home.username = "ambroisie"; + home.homeDirectory = "/home/ambroisie"; + # Let Home Manager install and manage itself. + programs.home-manager.enable = true; + # This is a generic linux install + targets.genericLinux.enable = true; + } + ]; + + extraSpecialArgs = { + # Inject inputs to use them in global registry + inherit inputs; + }; + }; + }; + }; + }; +} From 8657774d06df97effc34239eaa5e2cbc3d0f862c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 9 Mar 2023 09:04:34 +0000 Subject: [PATCH 11/15] flake: checks: use 'pre-commit-hooks' module --- flake/checks.nix | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/flake/checks.nix b/flake/checks.nix index 50f20b1..4a8c04f 100644 --- a/flake/checks.nix +++ b/flake/checks.nix @@ -1,11 +1,15 @@ { self, inputs, ... }: { - perSystem = { system, ... }: { - checks = { - # NOTE: seems like inputs' does not output the 'lib' attribute - pre-commit = inputs.pre-commit-hooks.lib.${system}.run { - src = self; + imports = [ + inputs.pre-commit-hooks.flakeModule + ]; + perSystem = { system, ... }: { + pre-commit = { + # Add itself to `nix flake check` + check.enable = true; + + settings = { hooks = { nixpkgs-fmt = { enable = true; From eac628963a2159a163686e385ee58070ce713243 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 9 Mar 2023 09:07:49 +0000 Subject: [PATCH 12/15] flake: dev-shell: use exposed pre-commit script --- flake/dev-shells.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/flake/dev-shells.nix b/flake/dev-shells.nix index 15c1335..daaa0fd 100644 --- a/flake/dev-shells.nix +++ b/flake/dev-shells.nix @@ -1,6 +1,6 @@ { inputs, ... }: { - perSystem = { self', pkgs, ... }: { + perSystem = { self', config, pkgs, ... }: { devShells = { default = pkgs.mkShell { name = "NixOS-config"; @@ -10,7 +10,9 @@ nixpkgs-fmt ]; - inherit (self'.checks.pre-commit) shellHook; + shellHook = '' + ${config.pre-commit.installationScript} + ''; }; }; }; From 2fb3d0f9cfaf3e2c8e8fce100f2a701a2d043068 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 9 Mar 2023 09:11:12 +0000 Subject: [PATCH 13/15] machines: rename to 'hosts/nixos' This will be more consistent in the future if I want to introduce darwin or home-manager configurations. --- flake/nixos.nix | 2 +- {machines => hosts/nixos}/aramis/boot.nix | 0 {machines => hosts/nixos}/aramis/default.nix | 0 {machines => hosts/nixos}/aramis/hardware.nix | 0 {machines => hosts/nixos}/aramis/home.nix | 0 {machines => hosts/nixos}/aramis/install.sh | 0 {machines => hosts/nixos}/aramis/networking.nix | 0 {machines => hosts/nixos}/aramis/profiles.nix | 0 {machines => hosts/nixos}/aramis/programs.nix | 0 {machines => hosts/nixos}/aramis/services.nix | 0 {machines => hosts/nixos}/aramis/sound.nix | 0 {machines => hosts/nixos}/porthos/boot.nix | 0 {machines => hosts/nixos}/porthos/default.nix | 0 {machines => hosts/nixos}/porthos/hardware.nix | 0 {machines => hosts/nixos}/porthos/home.nix | 0 {machines => hosts/nixos}/porthos/install.sh | 0 {machines => hosts/nixos}/porthos/networking.nix | 0 {machines => hosts/nixos}/porthos/services.nix | 0 {machines => hosts/nixos}/porthos/ssh/drone.pub | 0 {machines => hosts/nixos}/porthos/users.nix | 0 20 files changed, 1 insertion(+), 1 deletion(-) rename {machines => hosts/nixos}/aramis/boot.nix (100%) rename {machines => hosts/nixos}/aramis/default.nix (100%) rename {machines => hosts/nixos}/aramis/hardware.nix (100%) rename {machines => hosts/nixos}/aramis/home.nix (100%) rename {machines => hosts/nixos}/aramis/install.sh (100%) rename {machines => hosts/nixos}/aramis/networking.nix (100%) rename {machines => hosts/nixos}/aramis/profiles.nix (100%) rename {machines => hosts/nixos}/aramis/programs.nix (100%) rename {machines => hosts/nixos}/aramis/services.nix (100%) rename {machines => hosts/nixos}/aramis/sound.nix (100%) rename {machines => hosts/nixos}/porthos/boot.nix (100%) rename {machines => hosts/nixos}/porthos/default.nix (100%) rename {machines => hosts/nixos}/porthos/hardware.nix (100%) rename {machines => hosts/nixos}/porthos/home.nix (100%) rename {machines => hosts/nixos}/porthos/install.sh (100%) rename {machines => hosts/nixos}/porthos/networking.nix (100%) rename {machines => hosts/nixos}/porthos/services.nix (100%) rename {machines => hosts/nixos}/porthos/ssh/drone.pub (100%) rename {machines => hosts/nixos}/porthos/users.nix (100%) diff --git a/flake/nixos.nix b/flake/nixos.nix index 84dce54..2d9d18b 100644 --- a/flake/nixos.nix +++ b/flake/nixos.nix @@ -21,7 +21,7 @@ let buildHost = name: system: lib.nixosSystem { inherit system; modules = defaultModules ++ [ - "${self}/machines/${name}" + "${self}/hosts/nixos/${name}" ]; specialArgs = { # Use my extended lib in NixOS configuration diff --git a/machines/aramis/boot.nix b/hosts/nixos/aramis/boot.nix similarity index 100% rename from machines/aramis/boot.nix rename to hosts/nixos/aramis/boot.nix diff --git a/machines/aramis/default.nix b/hosts/nixos/aramis/default.nix similarity index 100% rename from machines/aramis/default.nix rename to hosts/nixos/aramis/default.nix diff --git a/machines/aramis/hardware.nix b/hosts/nixos/aramis/hardware.nix similarity index 100% rename from machines/aramis/hardware.nix rename to hosts/nixos/aramis/hardware.nix diff --git a/machines/aramis/home.nix b/hosts/nixos/aramis/home.nix similarity index 100% rename from machines/aramis/home.nix rename to hosts/nixos/aramis/home.nix diff --git a/machines/aramis/install.sh b/hosts/nixos/aramis/install.sh similarity index 100% rename from machines/aramis/install.sh rename to hosts/nixos/aramis/install.sh diff --git a/machines/aramis/networking.nix b/hosts/nixos/aramis/networking.nix similarity index 100% rename from machines/aramis/networking.nix rename to hosts/nixos/aramis/networking.nix diff --git a/machines/aramis/profiles.nix b/hosts/nixos/aramis/profiles.nix similarity index 100% rename from machines/aramis/profiles.nix rename to hosts/nixos/aramis/profiles.nix diff --git a/machines/aramis/programs.nix b/hosts/nixos/aramis/programs.nix similarity index 100% rename from machines/aramis/programs.nix rename to hosts/nixos/aramis/programs.nix diff --git a/machines/aramis/services.nix b/hosts/nixos/aramis/services.nix similarity index 100% rename from machines/aramis/services.nix rename to hosts/nixos/aramis/services.nix diff --git a/machines/aramis/sound.nix b/hosts/nixos/aramis/sound.nix similarity index 100% rename from machines/aramis/sound.nix rename to hosts/nixos/aramis/sound.nix diff --git a/machines/porthos/boot.nix b/hosts/nixos/porthos/boot.nix similarity index 100% rename from machines/porthos/boot.nix rename to hosts/nixos/porthos/boot.nix diff --git a/machines/porthos/default.nix b/hosts/nixos/porthos/default.nix similarity index 100% rename from machines/porthos/default.nix rename to hosts/nixos/porthos/default.nix diff --git a/machines/porthos/hardware.nix b/hosts/nixos/porthos/hardware.nix similarity index 100% rename from machines/porthos/hardware.nix rename to hosts/nixos/porthos/hardware.nix diff --git a/machines/porthos/home.nix b/hosts/nixos/porthos/home.nix similarity index 100% rename from machines/porthos/home.nix rename to hosts/nixos/porthos/home.nix diff --git a/machines/porthos/install.sh b/hosts/nixos/porthos/install.sh similarity index 100% rename from machines/porthos/install.sh rename to hosts/nixos/porthos/install.sh diff --git a/machines/porthos/networking.nix b/hosts/nixos/porthos/networking.nix similarity index 100% rename from machines/porthos/networking.nix rename to hosts/nixos/porthos/networking.nix diff --git a/machines/porthos/services.nix b/hosts/nixos/porthos/services.nix similarity index 100% rename from machines/porthos/services.nix rename to hosts/nixos/porthos/services.nix diff --git a/machines/porthos/ssh/drone.pub b/hosts/nixos/porthos/ssh/drone.pub similarity index 100% rename from machines/porthos/ssh/drone.pub rename to hosts/nixos/porthos/ssh/drone.pub diff --git a/machines/porthos/users.nix b/hosts/nixos/porthos/users.nix similarity index 100% rename from machines/porthos/users.nix rename to hosts/nixos/porthos/users.nix From a0465697435800c2ce2a62236b837f42dec281b6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 9 Mar 2023 09:00:30 +0000 Subject: [PATCH 14/15] flake: home-manager: use a more modular design This means I can easily add new hosts now. --- flake/home-manager.nix | 76 +++++++++++++++++-------------- hosts/homes/ambroisie/default.nix | 5 ++ 2 files changed, 48 insertions(+), 33 deletions(-) create mode 100644 hosts/homes/ambroisie/default.nix diff --git a/flake/home-manager.nix b/flake/home-manager.nix index df5b3e2..ce6791d 100644 --- a/flake/home-manager.nix +++ b/flake/home-manager.nix @@ -1,40 +1,50 @@ -{ self, inputs, ... }: +{ self, inputs, lib, ... }: +let + defaultModules = [ + # Include generic settings + "${self}/home" + { + # Basic user information defaults + home.username = lib.mkDefault "ambroisie"; + home.homeDirectory = lib.mkDefault "/home/ambroisie"; + + # Make it a Linux installation by default + targets.genericLinux.enable = lib.mkDefault true; + + # Enable home-manager + programs.home-manager.enable = true; + } + ]; + + mkHome = name: system: inputs.home-manager.lib.homeManagerConfiguration { + # Work-around for home-manager + # * not letting me set `lib` as an extraSpecialArgs + # * not respecting `nixpkgs.overlays` [1] + # [1]: https://github.com/nix-community/home-manager/issues/2954 + pkgs = import inputs.nixpkgs { + inherit system; + + overlays = (lib.attrValues self.overlays) ++ [ + inputs.nur.overlay + ]; + }; + + modules = defaultModules ++ [ + "${self}/hosts/homes/${name}" + ]; + + extraSpecialArgs = { + # Inject inputs to use them in global registry + inherit inputs; + }; + }; +in { perSystem = { system, ... }: { # Work-around for https://github.com/nix-community/home-manager/issues/3075 legacyPackages = { - homeConfigurations = { - ambroisie = inputs.home-manager.lib.homeManagerConfiguration { - # Work-around for home-manager - # * not letting me set `lib` as an extraSpecialArgs - # * not respecting `nixpkgs.overlays` [1] - # [1]: https://github.com/nix-community/home-manager/issues/2954 - pkgs = import inputs.nixpkgs { - inherit system; - - overlays = (lib.attrValues self.overlays) ++ [ - inputs.nur.overlay - ]; - }; - - modules = [ - "${self}/home" - { - # The basics - home.username = "ambroisie"; - home.homeDirectory = "/home/ambroisie"; - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; - # This is a generic linux install - targets.genericLinux.enable = true; - } - ]; - - extraSpecialArgs = { - # Inject inputs to use them in global registry - inherit inputs; - }; - }; + homeConfigurations = lib.mapAttrs mkHome { + ambroisie = system; }; }; }; diff --git a/hosts/homes/ambroisie/default.nix b/hosts/homes/ambroisie/default.nix new file mode 100644 index 0000000..42ea5b8 --- /dev/null +++ b/hosts/homes/ambroisie/default.nix @@ -0,0 +1,5 @@ +# Default home-manager configuration +{ ... }: +{ + # Default configuration, nothing to do +} From 606cd8cf84f2d07cc26fbce286161f9765bfd37b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 9 Mar 2023 10:21:36 +0000 Subject: [PATCH 15/15] hosts: homes: add work cloudtop The unfortunate host naming can't be fixed at the moment... --- flake/home-manager.nix | 16 +++++++++++++--- hosts/homes/ambroisie@ambroisie/default.nix | 16 ++++++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 hosts/homes/ambroisie@ambroisie/default.nix diff --git a/flake/home-manager.nix b/flake/home-manager.nix index ce6791d..c55c8dd 100644 --- a/flake/home-manager.nix +++ b/flake/home-manager.nix @@ -38,14 +38,24 @@ let inherit inputs; }; }; + + hosts = { + "ambroisie@ambroisie" = "x86_64-linux"; # Unfortunate naming here... + }; in { perSystem = { system, ... }: { # Work-around for https://github.com/nix-community/home-manager/issues/3075 legacyPackages = { - homeConfigurations = lib.mapAttrs mkHome { - ambroisie = system; - }; + homeConfigurations = + let + filteredHosts = lib.filterAttrs (_: v: v == system) hosts; + allHosts = filteredHosts // { + # Default configuration + ambroisie = system; + }; + in + lib.mapAttrs mkHome allHosts; }; }; } diff --git a/hosts/homes/ambroisie@ambroisie/default.nix b/hosts/homes/ambroisie@ambroisie/default.nix new file mode 100644 index 0000000..e4dabcf --- /dev/null +++ b/hosts/homes/ambroisie@ambroisie/default.nix @@ -0,0 +1,16 @@ +# Google Cloudtop configuration +{ ... }: +{ + # Google specific configuration + home.homeDirectory = "/usr/local/google/home/ambroisie"; + + home.sessionVariables = { + # Some tooling (e.g: SSH) need to use this library + LD_PRELOAD = "/lib/x86_64-linux-gnu/libnss_cache.so.2\${LD_PRELOAD:+:}$LD_PRELOAD"; + }; + + my.home = { + # I don't need a GPG agent + gpg.enable = false; + }; +}