From 5dac8638a06e084bde437a5b9073b5bd0fc15336 Mon Sep 17 00:00:00 2001 From: Hendrik Sokolowski Date: Sat, 11 Nov 2023 01:06:12 +0100 Subject: [PATCH] rewrite flake.nix --- flake.lock | 309 ++++++++++++++++------------------------------------- flake.nix | 300 ++++++++++++--------------------------------------- 2 files changed, 159 insertions(+), 450 deletions(-) diff --git a/flake.lock b/flake.lock index a3c54d5c..a48673e2 100644 --- a/flake.lock +++ b/flake.lock @@ -3,10 +3,10 @@ "agenix": { "inputs": { "darwin": [ - "darwin" + "nix-darwin" ], "nixpkgs": [ - "nixos" + "nixpkgs" ] }, "locked": { @@ -23,42 +23,22 @@ "type": "github" } }, - "darwin": { - "inputs": { - "nixpkgs": [ - "nixos" - ] - }, - "locked": { - "lastModified": 1686210161, - "narHash": "sha256-cgP8P2Gk4WtOzd/Y7nEmweLpPOtMKVvHCIcq9zm9qMk=", - "owner": "LnL7", - "repo": "nix-darwin", - "rev": "40e4b85baac86969f94d6dba893aeae015c562c1", - "type": "github" - }, - "original": { - "owner": "LnL7", - "repo": "nix-darwin", - "type": "github" - } - }, - "deploy": { + "deploy-rs": { "inputs": { "flake-compat": [ "flake-compat" ], "nixpkgs": [ - "nixos" + "nixpkgs" ], "utils": "utils" }, "locked": { - "lastModified": 1683779844, - "narHash": "sha256-sIeOU0GsCeQEn5TpqE/jFRN4EGsPsjqVRsPdrzIDABM=", + "lastModified": 1698921442, + "narHash": "sha256-7KmvhQ7FuXlT/wG4zjTssap6maVqeAMBdtel+VjClSM=", "owner": "serokell", "repo": "deploy-rs", - "rev": "c80189917086e43d49eece2bd86f56813500a0eb", + "rev": "660180bbbeae7d60dad5a92b30858306945fd427", "type": "github" }, "original": { @@ -67,68 +47,6 @@ "type": "github" } }, - "devshell": { - "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": [ - "digga", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671489820, - "narHash": "sha256-qoei5HDJ8psd1YUPD7DhbHdhLIT9L2nadscp4Qk37uk=", - "owner": "numtide", - "repo": "devshell", - "rev": "5aa3a8039c68b4bf869327446590f4cdf90bb634", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "digga": { - "inputs": { - "darwin": [ - "darwin" - ], - "deploy": [ - "deploy" - ], - "devshell": "devshell", - "flake-compat": [ - "flake-compat" - ], - "flake-utils": "flake-utils_2", - "flake-utils-plus": "flake-utils-plus", - "home-manager": [ - "home" - ], - "nixlib": [ - "nixos" - ], - "nixpkgs": [ - "nixos" - ], - "nixpkgs-unstable": "nixpkgs-unstable" - }, - "locked": { - "lastModified": 1674947971, - "narHash": "sha256-6gKqegJHs72jnfFP9g2sihl4fIZgtKgKuqU2rCkIdGY=", - "owner": "pub-solar", - "repo": "digga", - "rev": "2da608bd8afb48afef82c6b1b6d852a36094a497", - "type": "github" - }, - "original": { - "owner": "pub-solar", - "ref": "fix/bootstrap-iso", - "repo": "digga", - "type": "github" - } - }, "factorio-pr": { "locked": { "lastModified": 1676729025, @@ -161,92 +79,57 @@ "type": "github" } }, - "flake-utils": { + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1698882062, + "narHash": "sha256-HkhafUayIqxXyHH1X8d9RDl1M2CkFgZLjKD3MzabiEo=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8c9fa2545007b49a5db5f650ae91f227672c3877", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "flake-utils-plus": { + "home-manager": { "inputs": { - "flake-utils": [ - "digga", - "flake-utils" + "nixpkgs": [ + "nixpkgs" ] }, "locked": { - "lastModified": 1654029967, - "narHash": "sha256-my3GQ3mQIw/1f6GPV1IhUZrcYQSWh0YJAMPNBjhXJDw=", - "owner": "gytis-ivaskevicius", - "repo": "flake-utils-plus", - "rev": "6271cf3842ff9c8a9af9e3508c547f86bc77d199", - "type": "github" - }, - "original": { - "owner": "gytis-ivaskevicius", - "ref": "refs/pull/120/head", - "repo": "flake-utils-plus", - "type": "github" - } - }, - "flake-utils_2": { - "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "home": { - "inputs": { - "nixpkgs": [ - "nixos" - ], - "utils": "utils_2" - }, - "locked": { - "lastModified": 1681092193, - "narHash": "sha256-JerCqqOqbT2tBnXQW4EqwFl0hHnuZp21rIQ6lu/N4rI=", + "lastModified": 1695108154, + "narHash": "sha256-gSg7UTVtls2yO9lKtP0yb66XBHT1Fx5qZSZbGMpSn2c=", "owner": "nix-community", "repo": "home-manager", - "rev": "f9edbedaf015013eb35f8caacbe0c9666bbc16af", + "rev": "07682fff75d41f18327a871088d20af2710d4744", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-22.11", + "ref": "release-23.05", "repo": "home-manager", "type": "github" } }, - "latest": { + "master": { "locked": { - "lastModified": 1686226982, - "narHash": "sha256-nLuiPoeiVfqqzeq9rmXxpybh77VS37dsY/k8N2LoxVg=", + "lastModified": 1699660051, + "narHash": "sha256-aAdBhxHIiD0Y2LGqidTMw2ywKofRza8RwVqQodnsZIA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "a64b73e07d4aa65cfcbda29ecf78eaf9e72e44bd", + "rev": "02f05fceedefc00f90ecf27bda9e94ed2318aa50", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-unstable", + "ref": "master", "repo": "nixpkgs", "type": "github" } @@ -254,7 +137,7 @@ "musnix": { "inputs": { "nixpkgs": [ - "nixos" + "nixpkgs" ] }, "locked": { @@ -271,53 +154,39 @@ "type": "github" } }, - "nixlib": { - "locked": { - "lastModified": 1685840432, - "narHash": "sha256-VJIbiKsY7Xy4E4WcgwUt/UiwYDmN5BAk8tngAjcWsqY=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "961e99baaaa57f5f7042fe7ce089a88786c839f4", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixos": { - "locked": { - "lastModified": 1686190112, - "narHash": "sha256-BRDO/tnq+ruwv14caQLIqejYJ6w5icja5KYpNunOW24=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "41b86284d3e073bb322da076ae8cd6e116b2ee2a", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixos-generators": { + "nix-darwin": { "inputs": { - "nixlib": "nixlib", - "nixpkgs": "nixpkgs" + "nixpkgs": [ + "nixpkgs" + ] }, "locked": { - "lastModified": 1685943944, - "narHash": "sha256-GpaQwOkvwkmSWxvWaZqbMKyyOSaBAwgdEcHCqLW/240=", - "owner": "nix-community", - "repo": "nixos-generators", - "rev": "122dcc32cadf14c5015aa021fae8882c5058263a", + "lastModified": 1699569089, + "narHash": "sha256-MdOnyXrmMdVU9o7GpcbWKgehoK9L76ihp8rTikPcC1k=", + "owner": "lnl7", + "repo": "nix-darwin", + "rev": "c8f385766ba076a096caa794309c40f89894d88a", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixos-generators", + "owner": "lnl7", + "ref": "master", + "repo": "nix-darwin", + "type": "github" + } + }, + "nixos-flake": { + "locked": { + "lastModified": 1698598244, + "narHash": "sha256-YbvPFt+9CbCiqnuS0dTx+P+W1YRCqzhLXen94sef3Kk=", + "owner": "srid", + "repo": "nixos-flake", + "rev": "f6b7757ad88483afca306c9f3bf387887fba7284", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "nixos-flake", "type": "github" } }, @@ -338,16 +207,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1685894048, - "narHash": "sha256-QKqv1QS+22k9oxncj1AnAxeqS5jGnQiUW3Jq3B+dI1w=", - "owner": "NixOS", + "lastModified": 1699291058, + "narHash": "sha256-5ggduoaAMPHUy4riL+OrlAZE14Kh7JWX4oLEs22ZqfU=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "2e56a850786211972d99d2bb39665a9b5a1801d6", + "rev": "41de143fda10e33be0f47eab2bfe08a50f234267", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", + "owner": "nixos", + "ref": "nixos-23.05", "repo": "nixpkgs", "type": "github" } @@ -370,17 +239,19 @@ "url": "https://git.b12f.io/hensoko/nixpkgs" } }, - "nixpkgs-unstable": { + "nixpkgs-lib": { "locked": { - "lastModified": 1672791794, - "narHash": "sha256-mqGPpGmwap0Wfsf3o2b6qHJW1w2kk/I6cGCGIU+3t6o=", - "owner": "nixos", + "dir": "lib", + "lastModified": 1698611440, + "narHash": "sha256-jPjHjrerhYDy3q9+s5EAsuhyhuknNfowY6yt6pjn9pc=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "9813adc7f7c0edd738c6bdd8431439688bb0cb3d", + "rev": "0cbe9f69c234a7700596e943bfae7ef27a31b735", "type": "github" }, "original": { - "owner": "nixos", + "dir": "lib", + "owner": "NixOS", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" @@ -405,36 +276,38 @@ "root": { "inputs": { "agenix": "agenix", - "darwin": "darwin", - "deploy": "deploy", - "digga": "digga", + "deploy-rs": "deploy-rs", "factorio-pr": "factorio-pr", "flake-compat": "flake-compat", - "home": "home", - "latest": "latest", + "flake-parts": "flake-parts", + "home-manager": "home-manager", + "master": "master", "musnix": "musnix", - "nixos": "nixos", - "nixos-generators": "nixos-generators", + "nix-darwin": "nix-darwin", + "nixos-flake": "nixos-flake", "nixos-hardware": "nixos-hardware", - "nixpkgs-hensoko": "nixpkgs-hensoko" + "nixpkgs": "nixpkgs", + "nixpkgs-hensoko": "nixpkgs-hensoko", + "unstable": "unstable" } }, - "utils": { + "unstable": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "lastModified": 1699099776, + "narHash": "sha256-X09iKJ27mGsGambGfkKzqvw5esP1L/Rf8H3u3fCqIiU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "85f1ba3e51676fa8cc604a3d863d729026a6b8eb", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "utils_2": { + "utils": { "locked": { "lastModified": 1667395993, "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", diff --git a/flake.nix b/flake.nix index 0810fd8e..23a4e9b5 100644 --- a/flake.nix +++ b/flake.nix @@ -1,283 +1,119 @@ { - description = "A highly structured configuration database."; + description = "pub.solar NixOS flake"; nixConfig.extra-experimental-features = "nix-command flakes"; inputs = { # Track channels with commits tested and built by hydra - nixos.url = "github:nixos/nixpkgs/nixos-23.05"; - latest.url = "github:nixos/nixpkgs/nixos-unstable"; - - fork.url = "github:teutat3s/nixpkgs/nvfetcher-fix"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-23.05"; + unstable.url = "github:nixos/nixpkgs/nixos-unstable"; flake-compat.url = "github:edolstra/flake-compat"; flake-compat.flake = false; - digga.url = "github:pub-solar/digga/fix/bootstrap-iso"; - digga.inputs.nixpkgs.follows = "nixos"; - digga.inputs.nixlib.follows = "nixos"; - digga.inputs.home-manager.follows = "home"; - digga.inputs.deploy.follows = "deploy"; - digga.inputs.darwin.follows = "darwin"; - digga.inputs.flake-compat.follows = "flake-compat"; + nix-darwin.url = "github:lnl7/nix-darwin/master"; + nix-darwin.inputs.nixpkgs.follows = "nixpkgs"; - home.url = "github:nix-community/home-manager/release-23.05"; - home.inputs.nixpkgs.follows = "nixos"; + home-manager.url = "github:nix-community/home-manager/release-23.05"; + home-manager.inputs.nixpkgs.follows = "nixpkgs"; - darwin.url = "github:LnL7/nix-darwin"; - darwin.inputs.nixpkgs.follows = "nixos"; + flake-parts.url = "github:hercules-ci/flake-parts"; + nixos-flake.url = "github:srid/nixos-flake"; - deploy.url = "github:serokell/deploy-rs"; - deploy.inputs.nixpkgs.follows = "nixos"; - deploy.inputs.flake-compat.follows = "flake-compat"; + deploy-rs.url = "github:serokell/deploy-rs"; + deploy-rs.inputs.nixpkgs.follows = "nixpkgs"; + deploy-rs.inputs.flake-compat.follows = "flake-compat"; agenix.url = "github:ryantm/agenix"; - agenix.inputs.nixpkgs.follows = "nixos"; - agenix.inputs.darwin.follows = "darwin"; + agenix.inputs.nixpkgs.follows = "nixpkgs"; + agenix.inputs.darwin.follows = "nix-darwin"; nixos-hardware.url = "github:nixos/nixos-hardware"; + master.url = "github:nixos/nixpkgs/master"; # hensoko additions musnix.url = "github:musnix/musnix"; - musnix.inputs.nixpkgs.follows = "nixos"; + musnix.inputs.nixpkgs.follows = "nixpkgs"; nixpkgs-hensoko.url = "git+https://git.b12f.io/hensoko/nixpkgs"; factorio-pr.url = "github:werner291/nixpkgs/master"; }; - outputs = { - self, - digga, - nixos, - home, - nixos-hardware, - agenix, - deploy, - musnix, - ... - } @ inputs: - digga.lib.mkFlake - { - inherit self inputs; - - channelsConfig = { - allowUnfree = true; - }; - - supportedSystems = ["x86_64-linux" "aarch64-linux" "aarch64-darwin"]; - - channels = { - nixos = { - imports = [(digga.lib.importOverlays ./overlays)]; - overlays = [ - (self: super: { - deploy-rs = { - inherit (inputs.nixos.legacyPackages.x86_64-linux) deploy-rs; - lib = inputs.deploy.lib.x86_64-linux; - }; - }) - ]; - }; - latest = {}; - factorio-pr = {}; - fork = {}; - }; - - lib = import ./lib {lib = digga.lib // nixos.lib;}; - - sharedOverlays = [ - (final: prev: { - __dontExport = true; - lib = prev.lib.extend (lfinal: lprev: { - our = self.lib; - }); - }) - agenix.overlays.default - - (import ./pkgs) + outputs = inputs@{ self, ... }: + inputs.flake-parts.lib.mkFlake { inherit inputs; } { + systems = [ + "x86_64-linux" + "aarch64-linux" + "x86_64-darwin" + "aarch64-darwin" ]; - nixos = { - hostDefaults = { - system = "x86_64-linux"; - channelName = "nixos"; - imports = [(digga.lib.importExportableModules ./modules)]; - modules = [ - {lib.our = self.lib;} - # FIXME: upstream module causes a huge number of unnecessary - # dependencies to be pulled in for all systems -- many of them are - # graphical. should only be imported as needed. - # digga.nixosModules.bootstrapIso - digga.nixosModules.nixConfig - home.nixosModules.home-manager - agenix.nixosModules.age - ]; + imports = [ + inputs.nixos-flake.flakeModule + ./lib + ./modules + ./hosts + ./users + ]; + + perSystem = args@{ system, pkgs, config, ... }: { + _module.args = { + inherit inputs; + pkgs = import inputs.nixpkgs { + inherit system; + overlays = [ + inputs.agenix.overlays.default + ]; + }; + + unstable = import inputs.unstable { inherit system; }; + master = import inputs.master { inherit system; }; }; - imports = [(digga.lib.importHosts ./hosts)]; - hosts = { - # Set host-specific properties here - bootstrap = { - modules = [ - digga.nixosModules.bootstrapIso - ]; - }; - PubSolarOS = { - tests = [ - #(import ./tests/first-test.nix { - # pkgs = nixos.legacyPackages.x86_64-linux; - # lib = nixos.lib; - #}) - ]; - }; + devShells.default = pkgs.mkShell { + buildInputs = with pkgs; [ + deploy-rs + nixpkgs-fmt + agenix + cachix + editorconfig-checker + nix + nodePackages.prettier + nvfetcher + shellcheck + shfmt + treefmt + nixos-generators + ]; + }; + }; + flake = { + deploy.nodes = self.pub-solar-os.lib.deploy.mkDeployNodes self.nixosConfigurations { companion = { - system = "aarch64-linux"; - modules = [nixos-hardware.nixosModules.raspberry-pi-4]; + sshUser = "iot"; }; cox = { - system = "aarch64-linux"; - modules = [nixos-hardware.nixosModules.raspberry-pi-4]; + sshUser = "iot"; }; falcone = { - system = "aarch64-linux"; - modules = [nixos-hardware.nixosModules.raspberry-pi-4]; + sshUser = "iot"; }; giggles = { - system = "aarch64-linux"; - modules = [nixos-hardware.nixosModules.raspberry-pi-4]; + sshUser = "iot"; }; norman = {}; harrison = { - modules = [ - musnix.nixosModules.musnix - ]; + sshUser = "iot"; }; surfplace = { - modules = [nixos-hardware.nixosModules.microsoft-surface-pro-intel]; - }; - }; - importables = rec { - profiles = - digga.lib.rakeLeaves ./profiles - // { - users = digga.lib.rakeLeaves ./users; - }; - suites = with profiles; rec { - base = [users.pub-solar users.root]; - iso = base ++ [base-user graphical pub-solar-iso]; - pubsolaros = [base-user users.root]; - anonymous = [pubsolaros users.pub-solar]; - hensoko = pubsolaros ++ [users.hensoko]; - hensoko-iot = [server base-user users.root users.iot]; - - # server - cube = hensoko-iot; - - # home-controller - companion = hensoko-iot; - cox = hensoko-iot; - giggles = hensoko-iot; - - # laptop - ringo = hensoko; - - # vm - redpanda = hensoko; - - # home pc - harrison = hensoko ++ [daw gaming graphical non-free social work]; - - # work laptop - norman = hensoko ++ [graphical non-free social work]; - - # cm4 - falcone = hensoko-iot; - - # surface - surfplace = hensoko ++ [graphical non-free social]; - - # chonk - chonk = hensoko-iot; + sshUser = "iot"; }; }; }; - - home = { - imports = [(digga.lib.importExportableModules ./users/modules)]; - modules = []; - importables = rec { - profiles = digga.lib.rakeLeaves ./users/profiles; - suites = with profiles; rec { - base = [direnv git]; - }; - }; - users = { - pub-solar = {suites, ...}: { - imports = suites.base; - home.stateVersion = "22.05"; - }; - hensoko = {suites, ...}: { - imports = suites.base; - home.stateVersion = "22.05"; - }; - iot = {suites, ...}: { - imports = suites.base; - home.stateVersion = "22.05"; - }; - }; # digga.lib.importers.rakeLeaves ./users/hm; - }; - - devshell = ./shell; - - homeConfigurations = digga.lib.mkHomeConfigurations self.nixosConfigurations; - - deploy.nodes = digga.lib.mkDeployNodes self.nixosConfigurations { - #example = { - # hostname = "example.com:22"; - # sshUser = "bartender"; - # fastConnect = true; - # profilesOrder = ["system" "direnv"]; - # profiles.direnv = { - # user = "bartender"; - # path = self.pkgs.x86_64-linux.nixos.deploy-rs.lib.x86_64-linux.activate.home-manager self.homeConfigurationsPortable.x86_64-linux.bartender; - # }; - #}; - redpanda = { - hostname = "192.168.42.71:22"; - sshUser = "hensoko"; - fastConnect = true; - profilesOrder = ["system" "direnv"]; - profiles.direnv = { - user = "hensoko"; - path = deploy.lib.x86_64-linux.activate.home-manager self.homeConfigurationsPortable.x86_64-linux.hensoko; - }; - }; - - companion = {sshUser = "iot";}; - cox = {sshUser = "iot";}; - giggles = {sshUser = "iot";}; - ringo = {}; - cube = {sshUser = "iot";}; - chonk = {sshUser = "iot";}; - }; - users = { - pub-solar = {suites, ...}: { - imports = suites.base; - home.stateVersion = "21.03"; - }; - hensoko = {suites, ...}: { - imports = suites.base; - home.stateVersion = "21.03"; - }; - iot = {suites, ...}: { - imports = suites.base; - home.stateVersion = "21.03"; - }; - }; # digga.lib.importers.rakeLeaves ./users/hm; }; }