diff --git a/flake.lock b/flake.lock index e14f4e4..caccc7d 100644 --- a/flake.lock +++ b/flake.lock @@ -60,27 +60,6 @@ "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, @@ -206,7 +185,6 @@ "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 058ac27..63ade9a 100644 --- a/flake.nix +++ b/flake.nix @@ -11,16 +11,6 @@ }; }; - flake-parts = { - type = "github"; - owner = "hercules-ci"; - repo = "flake-parts"; - ref = "main"; - inputs = { - nixpkgs-lib.follows = "nixpkgs"; - }; - }; - futils = { type = "github"; owner = "numtide"; @@ -70,7 +60,6 @@ inputs @ { self , agenix - , flake-parts , futils , home-manager , nixpkgs diff --git a/flake/apps.nix b/flake/apps.nix deleted file mode 100644 index f8dc2de..0000000 --- a/flake/apps.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ inputs, ... }: -{ - perSystem = { self', ... }: { - apps = { - diff-flake = inputs.futils.lib.mkApp { drv = self'.packages.diff-flake; }; - default = self'.apps.diff-flake; - }; - }; -} diff --git a/flake/checks.nix b/flake/checks.nix index 4a8c04f..ea77620 100644 --- a/flake/checks.nix +++ b/flake/checks.nix @@ -1,24 +1,16 @@ -{ self, inputs, ... }: +{ self, pre-commit-hooks, ... }: +system: { - imports = [ - inputs.pre-commit-hooks.flakeModule - ]; + pre-commit = pre-commit-hooks.lib.${system}.run { + src = self; - perSystem = { system, ... }: { - pre-commit = { - # Add itself to `nix flake check` - check.enable = true; + hooks = { + nixpkgs-fmt = { + enable = true; + }; - settings = { - hooks = { - nixpkgs-fmt = { - enable = true; - }; - - shellcheck = { - enable = true; - }; - }; + shellcheck = { + enable = true; }; }; }; diff --git a/flake/default.nix b/flake/default.nix index 50eec92..1e0ef12 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -1,5 +1,4 @@ { self -, flake-parts , futils , home-manager , nixpkgs @@ -9,7 +8,7 @@ let inherit (self) lib; - inherit (futils.lib) system; + inherit (futils.lib) eachSystem system; mySystems = [ system.aarch64-darwin @@ -17,18 +16,65 @@ let system.x86_64-darwin system.x86_64-linux ]; -in -flake-parts.lib.mkFlake { inherit inputs; } { - systems = mySystems; - imports = [ - ./apps.nix - ./checks.nix - ./dev-shells.nix - ./home-manager.nix - ./lib.nix - ./nixos.nix - ./overlays.nix - ./packages.nix - ]; -} + eachMySystem = eachSystem mySystems; + + systemDependant = system: { + apps = { + diff-flake = futils.lib.mkApp { drv = self.packages.${system}.diff-flake; }; + 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; + + # 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; + }; + }; + }; + }; + }; + + systemIndependant = { + lib = import ./lib.nix inputs; + + overlays = import ./overlays.nix inputs; + + nixosConfigurations = import ./nixos.nix inputs; + }; +in +(eachMySystem systemDependant) // systemIndependant diff --git a/flake/dev-shells.nix b/flake/dev-shells.nix index daaa0fd..064f57d 100644 --- a/flake/dev-shells.nix +++ b/flake/dev-shells.nix @@ -1,19 +1,17 @@ -{ inputs, ... }: +{ self, nixpkgs, ... }: +system: +let + pkgs = nixpkgs.legacyPackages.${system}; +in { - perSystem = { self', config, pkgs, ... }: { - devShells = { - default = pkgs.mkShell { - name = "NixOS-config"; + default = pkgs.mkShell { + name = "NixOS-config"; - nativeBuildInputs = with pkgs; [ - gitAndTools.pre-commit - nixpkgs-fmt - ]; + nativeBuildInputs = with pkgs; [ + gitAndTools.pre-commit + nixpkgs-fmt + ]; - shellHook = '' - ${config.pre-commit.installationScript} - ''; - }; - }; + inherit (self.checks.${system}.pre-commit) shellHook; }; } diff --git a/flake/home-manager.nix b/flake/home-manager.nix deleted file mode 100644 index c55c8dd..0000000 --- a/flake/home-manager.nix +++ /dev/null @@ -1,61 +0,0 @@ -{ 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; - }; - }; - - 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 = - let - filteredHosts = lib.filterAttrs (_: v: v == system) hosts; - allHosts = filteredHosts // { - # Default configuration - ambroisie = system; - }; - in - lib.mapAttrs mkHome allHosts; - }; - }; -} diff --git a/flake/lib.nix b/flake/lib.nix index 12e89c3..083c56c 100644 --- a/flake/lib.nix +++ b/flake/lib.nix @@ -1,11 +1,7 @@ -{ self, inputs, ... }: +{ self, nixpkgs, ... } @ inputs: let - inherit (inputs) nixpkgs; - lib = nixpkgs.lib.extend (final: _: { my = import "${self}/lib" { inherit inputs; pkgs = nixpkgs; lib = final; }; }); in -{ - flake.lib = lib; -} +lib diff --git a/flake/nixos.nix b/flake/nixos.nix index 2d9d18b..2b117e1 100644 --- a/flake/nixos.nix +++ b/flake/nixos.nix @@ -1,4 +1,4 @@ -{ self, inputs, ... }: +{ self, nixpkgs, nur, ... } @ inputs: let inherit (self) lib; @@ -9,7 +9,7 @@ let }) { nixpkgs.overlays = (lib.attrValues self.overlays) ++ [ - inputs.nur.overlay + nur.overlay ]; } # Include generic settings @@ -21,7 +21,7 @@ let buildHost = name: system: lib.nixosSystem { inherit system; modules = defaultModules ++ [ - "${self}/hosts/nixos/${name}" + "${self}/machines/${name}" ]; specialArgs = { # Use my extended lib in NixOS configuration @@ -31,9 +31,7 @@ let }; }; in -{ - flake.nixosConfigurations = lib.mapAttrs buildHost { - aramis = "x86_64-linux"; - porthos = "x86_64-linux"; - }; +lib.mapAttrs buildHost { + aramis = "x86_64-linux"; + porthos = "x86_64-linux"; } diff --git a/flake/overlays.nix b/flake/overlays.nix index 1a5e8ba..bb5e546 100644 --- a/flake/overlays.nix +++ b/flake/overlays.nix @@ -1,4 +1,5 @@ { self, ... }: + let default-overlays = import "${self}/overlays"; @@ -12,6 +13,4 @@ let }; }; in -{ - flake.overlays = default-overlays // additional-overlays; -} +default-overlays // additional-overlays diff --git a/flake/packages.nix b/flake/packages.nix index 3515071..1eccfa3 100644 --- a/flake/packages.nix +++ b/flake/packages.nix @@ -1,13 +1,10 @@ -{ 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; - }; -} +{ 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 diff --git a/hosts/homes/ambroisie/default.nix b/hosts/homes/ambroisie/default.nix deleted file mode 100644 index 42ea5b8..0000000 --- a/hosts/homes/ambroisie/default.nix +++ /dev/null @@ -1,5 +0,0 @@ -# Default home-manager configuration -{ ... }: -{ - # Default configuration, nothing to do -} diff --git a/hosts/homes/ambroisie@ambroisie/default.nix b/hosts/homes/ambroisie@ambroisie/default.nix deleted file mode 100644 index e4dabcf..0000000 --- a/hosts/homes/ambroisie@ambroisie/default.nix +++ /dev/null @@ -1,16 +0,0 @@ -# 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; - }; -} diff --git a/hosts/nixos/aramis/boot.nix b/machines/aramis/boot.nix similarity index 100% rename from hosts/nixos/aramis/boot.nix rename to machines/aramis/boot.nix diff --git a/hosts/nixos/aramis/default.nix b/machines/aramis/default.nix similarity index 100% rename from hosts/nixos/aramis/default.nix rename to machines/aramis/default.nix diff --git a/hosts/nixos/aramis/hardware.nix b/machines/aramis/hardware.nix similarity index 100% rename from hosts/nixos/aramis/hardware.nix rename to machines/aramis/hardware.nix diff --git a/hosts/nixos/aramis/home.nix b/machines/aramis/home.nix similarity index 100% rename from hosts/nixos/aramis/home.nix rename to machines/aramis/home.nix diff --git a/hosts/nixos/aramis/install.sh b/machines/aramis/install.sh similarity index 100% rename from hosts/nixos/aramis/install.sh rename to machines/aramis/install.sh diff --git a/hosts/nixos/aramis/networking.nix b/machines/aramis/networking.nix similarity index 100% rename from hosts/nixos/aramis/networking.nix rename to machines/aramis/networking.nix diff --git a/hosts/nixos/aramis/profiles.nix b/machines/aramis/profiles.nix similarity index 100% rename from hosts/nixos/aramis/profiles.nix rename to machines/aramis/profiles.nix diff --git a/hosts/nixos/aramis/programs.nix b/machines/aramis/programs.nix similarity index 100% rename from hosts/nixos/aramis/programs.nix rename to machines/aramis/programs.nix diff --git a/hosts/nixos/aramis/services.nix b/machines/aramis/services.nix similarity index 100% rename from hosts/nixos/aramis/services.nix rename to machines/aramis/services.nix diff --git a/hosts/nixos/aramis/sound.nix b/machines/aramis/sound.nix similarity index 100% rename from hosts/nixos/aramis/sound.nix rename to machines/aramis/sound.nix diff --git a/hosts/nixos/porthos/boot.nix b/machines/porthos/boot.nix similarity index 100% rename from hosts/nixos/porthos/boot.nix rename to machines/porthos/boot.nix diff --git a/hosts/nixos/porthos/default.nix b/machines/porthos/default.nix similarity index 100% rename from hosts/nixos/porthos/default.nix rename to machines/porthos/default.nix diff --git a/hosts/nixos/porthos/hardware.nix b/machines/porthos/hardware.nix similarity index 100% rename from hosts/nixos/porthos/hardware.nix rename to machines/porthos/hardware.nix diff --git a/hosts/nixos/porthos/home.nix b/machines/porthos/home.nix similarity index 100% rename from hosts/nixos/porthos/home.nix rename to machines/porthos/home.nix diff --git a/hosts/nixos/porthos/install.sh b/machines/porthos/install.sh similarity index 100% rename from hosts/nixos/porthos/install.sh rename to machines/porthos/install.sh diff --git a/hosts/nixos/porthos/networking.nix b/machines/porthos/networking.nix similarity index 100% rename from hosts/nixos/porthos/networking.nix rename to machines/porthos/networking.nix diff --git a/hosts/nixos/porthos/services.nix b/machines/porthos/services.nix similarity index 100% rename from hosts/nixos/porthos/services.nix rename to machines/porthos/services.nix diff --git a/hosts/nixos/porthos/ssh/drone.pub b/machines/porthos/ssh/drone.pub similarity index 100% rename from hosts/nixos/porthos/ssh/drone.pub rename to machines/porthos/ssh/drone.pub diff --git a/hosts/nixos/porthos/users.nix b/machines/porthos/users.nix similarity index 100% rename from hosts/nixos/porthos/users.nix rename to machines/porthos/users.nix