aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFranck Cuny <franck@fcuny.net>2022-09-22 18:05:34 -0700
committerFranck Cuny <franck@fcuny.net>2022-09-22 18:05:34 -0700
commit4f1513dfa4fc22240ab7dcbe1c60c14f827645a7 (patch)
treeb81a45ae768dc2620d54e3b6a41b2c485d1f6aac
parentref(flake): move all the checks to external module (diff)
downloadinfra-4f1513dfa4fc22240ab7dcbe1c60c14f827645a7.tar.gz
ref(home-manager): don't use home-manager when building the host
When rebuilding the host (through `nixos-rebuild switch --flake`) I don't want to rebuild also my home-manager configuration. I want these to be two different steps. I rebuild the home-manager configuration more frequently and it's a waste of time and CPU to rebuild the world every time. This is a pretty large refactoring: - move checks back into the flake: if I modify a check, the configuration for `pre-commits` is not regenerated, as the file with the checks is not monitored with `direnv` (I could probably configure it for it, but not now) - remove `home.nix` from the host level configuration - introduce a `mkHomeManagerConfiguration` function to manage the different user@host - fix a warning with the rust overlay
-rw-r--r--README.org17
-rw-r--r--flake.lock64
-rw-r--r--flake.nix149
-rw-r--r--hosts/aptos/default.nix9
-rw-r--r--hosts/carmel/default.nix10
-rw-r--r--hosts/tahoe/default.nix3
-rw-r--r--nix/checks.nix31
-rw-r--r--nix/default.nix5
-rw-r--r--nix/mkHomeManagerConfiguration.nix28
-rw-r--r--nix/mkSystem.nix7
10 files changed, 191 insertions, 132 deletions
diff --git a/README.org b/README.org
index 39660ed..9e59a75 100644
--- a/README.org
+++ b/README.org
@@ -1,7 +1,22 @@
#+TITLE: world - nix configuration
* nixos
-To rebuild the host and home-manager:
+To rebuild the host:
#+begin_src sh
sudo nixos-rebuild switch --flake .
#+end_src
+
+or
+#+begin_src sh
+nix-rebuild-host
+#+end_src
+* home-manager
+To rebuild the configuration for =home-manager=:
+#+begin_src sh
+home-manager switch --flake .
+#+end_src
+* update flakes
+To update the flakes:
+#+begin_src sh
+nix flake update
+#+end_src
diff --git a/flake.lock b/flake.lock
index 3d07120..cfd012e 100644
--- a/flake.lock
+++ b/flake.lock
@@ -7,11 +7,11 @@
]
},
"locked": {
- "lastModified": 1652712410,
- "narHash": "sha256-hMJ2TqLt0DleEnQFGUHK9sV2aAzJPU8pZeiZoqRozbE=",
+ "lastModified": 1662241716,
+ "narHash": "sha256-urqPvSvvGUhkwzTDxUI8N1nsdMysbAfjmBNZaTYBZRU=",
"owner": "ryantm",
"repo": "agenix",
- "rev": "7e5e58b98c3dcbf497543ff6f22591552ebfe65b",
+ "rev": "c96da5835b76d3d8e8d99a0fec6fe32f8539ee2e",
"type": "github"
},
"original": {
@@ -26,11 +26,11 @@
"nixpkgs": "nixpkgs"
},
"locked": {
- "lastModified": 1654803545,
- "narHash": "sha256-XV0gxr2looaXOKbzGn+BZsCh1NsCq7rti1ooYql6Y9g=",
+ "lastModified": 1663700519,
+ "narHash": "sha256-OA7fE3bsG81Sr3XC0tbKlkQqdCNglv1WlmEnUOvnHlI=",
"owner": "nix-community",
"repo": "emacs-overlay",
- "rev": "cf5a17b22ffd987e24770d33b5b59ea496eeac49",
+ "rev": "8e54a8980aa438c4f35807ad676acbf7578acce3",
"type": "github"
},
"original": {
@@ -41,11 +41,11 @@
},
"flake-utils": {
"locked": {
- "lastModified": 1653893745,
- "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
- "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"type": "github"
},
"original": {
@@ -71,11 +71,11 @@
},
"futils": {
"locked": {
- "lastModified": 1656065134,
- "narHash": "sha256-oc6E6ByIw3oJaIyc67maaFcnjYOz1mMcOtHxbEf9NwQ=",
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
- "rev": "bee6a7250dd1b01844a2de7e02e4df7d8a0a206c",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"type": "github"
},
"original": {
@@ -91,11 +91,11 @@
]
},
"locked": {
- "lastModified": 1654113405,
- "narHash": "sha256-VpK+0QaWG2JRgB00lw77N9TjkE3ec0iMYIX1TzGpxa4=",
+ "lastModified": 1656169755,
+ "narHash": "sha256-Nlnm4jeQWEGjYrE6hxi/7HYHjBSZ/E0RtjCYifnNsWk=",
"owner": "nix-community",
"repo": "home-manager",
- "rev": "ac2287df5a2d6f0a44bbcbd11701dbbf6ec43675",
+ "rev": "4a3d01fb53f52ac83194081272795aa4612c2381",
"type": "github"
},
"original": {
@@ -108,8 +108,8 @@
"nixpkgs": {
"locked": {
"lastModified": 0,
- "narHash": "sha256-EFkgVkHuPFuzd8L5W81fZR5YEbfHirh3uDMk3xhQmhc=",
- "path": "/nix/store/s7w8mfm95yylaxp5vp0dh1f9w59grfk8-source",
+ "narHash": "sha256-/l1HI2tFLihda6yh+j848GlRDVUiSJPr+yzA7ip8Z84=",
+ "path": "/nix/store/wi84fkkl5lq0bmf7c1jycax5vrw7fl6s-source",
"type": "path"
},
"original": {
@@ -119,11 +119,11 @@
},
"nixpkgs-unstable": {
"locked": {
- "lastModified": 1654694478,
- "narHash": "sha256-nFAMETXEhIrqnBe28u6vqy4ixSRr0BRrlZLlS0e7eoM=",
+ "lastModified": 1663634720,
+ "narHash": "sha256-wMYXWKgysznBUHmvq5fN0uzUTNpnBLREPupM17xP8MY=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "18de53ca965bd0678aaf09e5ce0daae05c58355a",
+ "rev": "998f0f7924198b2460458728de59fe738997f28e",
"type": "github"
},
"original": {
@@ -135,11 +135,11 @@
},
"nixpkgs_2": {
"locked": {
- "lastModified": 1658355931,
- "narHash": "sha256-/l1HI2tFLihda6yh+j848GlRDVUiSJPr+yzA7ip8Z84=",
+ "lastModified": 1663707118,
+ "narHash": "sha256-eyzwPTQqB9l/viI769epK8NwGOY8v/c2TNrRmcX5u+8=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "d2ff0167ce734340e745ca1f53b11a0996ff17a4",
+ "rev": "cafad185b7486732d6b6e0b8447588e22216c020",
"type": "github"
},
"original": {
@@ -151,11 +151,11 @@
},
"nur": {
"locked": {
- "lastModified": 1654815884,
- "narHash": "sha256-mmYhB+fl2dabl8Osm4d0vHKLxISH+lL4tAG9bsrnuIQ=",
+ "lastModified": 1663698372,
+ "narHash": "sha256-mwbkSx0g/U73DzpxkRL7KuXZtS7rZt5Ks4BbxsftHrY=",
"owner": "nix-community",
"repo": "NUR",
- "rev": "d52f3d30fa7d0672844941450ba07159f4b30f8b",
+ "rev": "8c17e0445fe26f7d44c100f478a5855cd0385d5b",
"type": "github"
},
"original": {
@@ -174,11 +174,11 @@
]
},
"locked": {
- "lastModified": 1656169028,
- "narHash": "sha256-y9DRauokIeVHM7d29lwT8A+0YoGUBXV3H0VErxQeA8s=",
+ "lastModified": 1663082609,
+ "narHash": "sha256-lmCCIu4dj59qbzkGKHQtolhpIEQMeAd2XUbXVPqgPYo=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
- "rev": "db3bd555d3a3ceab208bed48f983ccaa6a71a25e",
+ "rev": "60cad1a326df17a8c6cf2bb23436609fdd83024e",
"type": "github"
},
"original": {
@@ -209,11 +209,11 @@
]
},
"locked": {
- "lastModified": 1661136859,
- "narHash": "sha256-o3y1elFGRs/9kqaIeziAnTy9lIWA6VHtQfq0ARRVO2A=",
+ "lastModified": 1663642835,
+ "narHash": "sha256-xzIWFhLR7iws7ZIu5iHlbyY5bhGQTFECf+XKEjbjwpk=",
"owner": "oxalica",
"repo": "rust-overlay",
- "rev": "6d1418192be90968acfa25e7d7b089e246eb15c4",
+ "rev": "c9cfed9847475dcfc8b821d6ccb0c5229b4130a1",
"type": "github"
},
"original": {
diff --git a/flake.nix b/flake.nix
index 125e214..f659025 100644
--- a/flake.nix
+++ b/flake.nix
@@ -2,14 +2,11 @@
description = "personal NixOS configurations";
inputs = {
- # Nixpkgs, NixOS's official repo
nixpkgs.url = "github:nixos/nixpkgs/release-22.05";
+ nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
futils.url = "github:numtide/flake-utils";
- # We use the unstable nixpkgs repo for some packages.
- nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
-
emacs-overlay.url = "github:nix-community/emacs-overlay";
agenix = {
@@ -43,52 +40,120 @@
};
# Output config, or config for NixOS system
- outputs = { self, pre-commit-hooks, ... }@inputs:
+ outputs = inputs@{ self, ... }:
let
- inherit (inputs.futils.lib) eachSystem system;
- mySystems = [ system.x86_64-linux ];
- eachMySystem = eachSystem mySystems;
- lib = import ./nix { inherit inputs; };
+ myLib = import ./nix inputs;
+ lib = inputs.nixpkgs.lib // builtins;
+ supportedSystems = [ "x86_64-linux" ];
+ forAllSystems = lib.genAttrs supportedSystems;
+
+ # Nixpkgs instantiated for supported system types.
+ nixpkgsFor = forAllSystems (system:
+ import inputs.nixpkgs {
+ inherit system;
+ config = { allowUnfree = true; };
+ });
in
- eachMySystem
- (system:
- let
- pkgs = import inputs.nixpkgs { inherit system; };
- home-manager = inputs.home-manager.defaultPackage."${system}";
+ {
+ checks = forAllSystems (system:
+ let pkgs = nixpkgsFor.${system};
in
- rec {
- packages = pkgs // {
- inherit home-manager;
+ {
+ pre-commit-check = inputs.pre-commit-hooks.lib."${system}".run {
+ src = ./.;
+ hooks = {
+ nixpkgs-fmt.enable = true;
+ terraform-format.enable = true;
+ trailing-whitespace = {
+ enable = true;
+ entry =
+ "${pkgs.python3Packages.pre-commit-hooks}/bin/trailing-whitespace-fixer";
+ types = [ "text" ];
+ };
- tools = import ./tools { inherit pkgs; };
- ops = import ./ops { inherit pkgs; };
- users.fcuny = import ./users/fcuny { inherit pkgs; };
- };
+ end-of-file-fixer = {
+ enable = true;
+ entry =
+ "${pkgs.python3Packages.pre-commit-hooks}/bin/end-of-file-fixer";
+ types = [ "text" ];
+ };
+
+ check-executables-have-shebangs = {
+ entry =
+ "${pkgs.python3Packages.pre-commit-hooks}/check-executables-have-shebangs";
+ types = [ "text" "executable" ];
+ };
+
+ check-json = {
+ enable = true;
+ entry = "${pkgs.python3Packages.pre-commit-hooks}/check-json";
+ types = [ "json" ];
+ };
+
+ check-toml = {
+ enable = true;
+ entry = "${pkgs.python3Packages.pre-commit-hooks}/check-toml";
+ types = [ "toml" ];
+ };
- checks = import ./nix/checks.nix { inherit pkgs pre-commit-hooks; };
-
- devShells = {
- default = pkgs.mkShell {
- name = "NixOS-config";
- buildInputs = with pkgs; [
- gitAndTools.pre-commit
- nixUnstable
- nixfmt
- nixpkgs-fmt
- rnix-lsp
- home-manager
- git
- go
- gopls
- ];
- inherit (self.checks.${system}.pre-commit-check) shellHook;
+ check-yaml = {
+ enable = true;
+ entry = "${pkgs.python3Packages.pre-commit-hooks}/check-yaml";
+ types = [ "yaml" ];
+ };
+
+ shellcheck = {
+ enable = true;
+ files = "\\.sh$";
+ types_or = [ "file" ];
+ };
};
};
- }) // {
+ });
+
+ devShells = forAllSystems (system: {
+ default = inputs.nixpkgs.legacyPackages.${system}.mkShell {
+ name = "fcuny-configuration-on-${system}-system";
+ buildInputs = with inputs.nixpkgs.legacyPackages.${system}.pkgs; [
+ gitAndTools.pre-commit
+ nixfmt
+ nixpkgs-fmt
+ rnix-lsp
+ home-manager
+ git
+ nixos-rebuild
+ ];
+ inherit (self.checks.${system}.pre-commit-check) shellHook;
+ };
+ });
+
nixosConfigurations = {
- carmel = lib.mkSystem { hostname = "carmel"; };
- aptos = lib.mkSystem { hostname = "aptos"; };
- tahoe = lib.mkSystem { hostname = "tahoe"; };
+ aptos = myLib.mkSystem { hostname = "aptos"; };
+ carmel = myLib.mkSystem { hostname = "carmel"; };
+ tahoe = myLib.mkSystem { hostname = "tahoe"; };
+ };
+
+ homeConfigurations = {
+ useGlobalPkgs = true;
+ useUserPackages = true;
+
+ "fcuny@aptos" =
+ myLib.mkHomeManagerConfiguration { hostname = "aptos"; };
+
+ "fcuny@tahoe" =
+ myLib.mkHomeManagerConfiguration { hostname = "tahoe"; };
};
};
+ # in eachMySystem (system:
+ # let
+ # pkgs = import inputs.nixpkgs { inherit system; };
+ # home-manager = inputs.home-manager.defaultPackage."${system}";
+ # in rec {
+ # packages = pkgs // {
+ # inherit home-manager;
+
+ # tools = import ./tools { inherit pkgs; };
+ # ops = import ./ops { inherit pkgs; };
+ # users.fcuny = import ./users/fcuny { inherit pkgs; };
+ # };
}
diff --git a/hosts/aptos/default.nix b/hosts/aptos/default.nix
index 7c51741..f92ce07 100644
--- a/hosts/aptos/default.nix
+++ b/hosts/aptos/default.nix
@@ -1,14 +1,7 @@
{ config, pkgs, hostname, ... }:
{
- imports = [
- # Include the results of the hardware scan.
- ./hardware.nix
- ./sound.nix
- ./networking.nix
- ./home.nix
- ./services.nix
- ];
+ imports = [ ./hardware.nix ./sound.nix ./networking.nix ./services.nix ];
# Allow setting GTK configuration using home-manager
programs.dconf.enable = true;
diff --git a/hosts/carmel/default.nix b/hosts/carmel/default.nix
index 00ae881..8971397 100644
--- a/hosts/carmel/default.nix
+++ b/hosts/carmel/default.nix
@@ -1,14 +1,8 @@
{ config, pkgs, hostname, ... }:
{
- imports = [
- ./hardware.nix
- ./boot.nix
- ./sound.nix
- ./networking.nix
- ./home.nix
- ./services.nix
- ];
+ imports =
+ [ ./hardware.nix ./boot.nix ./sound.nix ./networking.nix ./services.nix ];
# Allow setting GTK configuration using home-manager
programs.dconf.enable = true;
diff --git a/hosts/tahoe/default.nix b/hosts/tahoe/default.nix
index ceb6152..64377b8 100644
--- a/hosts/tahoe/default.nix
+++ b/hosts/tahoe/default.nix
@@ -1,8 +1,7 @@
{ config, pkgs, hostname, ... }:
{
- imports =
- [ ./boot.nix ./hardware.nix ./networking.nix ./home.nix ./services.nix ];
+ imports = [ ./boot.nix ./hardware.nix ./networking.nix ./services.nix ];
users.groups.nas.gid = 5000;
users.users.nas = {
diff --git a/nix/checks.nix b/nix/checks.nix
deleted file mode 100644
index aadb170..0000000
--- a/nix/checks.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ pkgs, pre-commit-hooks, ... }:
-
-with pkgs;
-
-{
- pre-commit-check = pre-commit-hooks.lib.${system}.run {
- src = lib.cleanSource ../.;
- hooks = {
- nix-linter.enable = true;
- nixpkgs-fmt.enable = true;
- trailing-whitespace = {
- enable = true;
- entry =
- "${pkgs.python3Packages.pre-commit-hooks}/bin/trailing-whitespace-fixer";
- types = [ "text" ];
- };
- end-of-file-fixer = {
- enable = true;
- entry =
- "${pkgs.python3Packages.pre-commit-hooks}/bin/end-of-file-fixer";
- types = [ "text" ];
- };
- terraform-format = { enable = true; };
- shellcheck = {
- enable = true;
- files = "\\.sh$";
- types_or = [ "file" ];
- };
- };
- };
-}
diff --git a/nix/default.nix b/nix/default.nix
index 2dfd8a2..2e76200 100644
--- a/nix/default.nix
+++ b/nix/default.nix
@@ -1,5 +1,4 @@
-{ inputs }:
-
-{
+inputs: {
mkSystem = import ./mkSystem.nix inputs;
+ mkHomeManagerConfiguration = import ./mkHomeManagerConfiguration.nix inputs;
}
diff --git a/nix/mkHomeManagerConfiguration.nix b/nix/mkHomeManagerConfiguration.nix
new file mode 100644
index 0000000..bcf374a
--- /dev/null
+++ b/nix/mkHomeManagerConfiguration.nix
@@ -0,0 +1,28 @@
+inputs@{ self, ... }:
+{ system ? "x86_64-linux"
+, username ? "fcuny"
+, hostname
+, stateVersion ? "22.05"
+, extraModules ? [ ]
+,
+}:
+inputs.home-manager.lib.homeManagerConfiguration {
+ inherit system;
+ inherit username;
+ inherit stateVersion;
+
+ homeDirectory = "/home/${username}";
+
+ pkgs = import inputs.nixpkgs {
+ inherit system;
+ config.allowUnfree = true;
+ overlays = [
+ inputs.emacs-overlay.overlay
+ inputs.nur.overlay
+ inputs.rust.overlays.default
+ (final: prev: { tools = import "${self}/tools" { pkgs = prev; }; })
+ ];
+ };
+ configuration.imports =
+ [ "${self}/home" "${self}/hosts/${hostname}/home.nix" ];
+}
diff --git a/nix/mkSystem.nix b/nix/mkSystem.nix
index 1f7ccaf..00b5664 100644
--- a/nix/mkSystem.nix
+++ b/nix/mkSystem.nix
@@ -12,12 +12,9 @@ inputs.nixpkgs.lib.nixosSystem {
nixpkgs = {
config.allowUnfree = true;
overlays = [
- inputs.emacs-overlay.overlay
inputs.nur.overlay
- inputs.rust.overlay
- (final: prev: {
- tools = import "${self}/tools" { pkgs = prev; };
- })
+ inputs.rust.overlays.default
+ (final: prev: { tools = import "${self}/tools" { pkgs = prev; }; })
];
};
# Add each input as a registry