diff --git a/flake.lock b/flake.lock index c93a45c..4a2aa01 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1707830867, - "narHash": "sha256-PAdwm5QqdlwIqGrfzzvzZubM+FXtilekQ/FA0cI49/o=", + "lastModified": 1712079060, + "narHash": "sha256-/JdiT9t+zzjChc5qQiF+jhrVhRt8figYH29rZO7pFe4=", "owner": "ryantm", "repo": "agenix", - "rev": "8cb01a0e717311680e0cbca06a76cbceba6f3ed6", + "rev": "1381a759b205dff7a6818733118d02253340fd5e", "type": "github" }, "original": { @@ -40,11 +40,11 @@ ] }, "locked": { - "lastModified": 1711464622, - "narHash": "sha256-P9joXeVMV4FzNy9Y31bnCgKP7xu1Cw+EV8mghAK8N10=", + "lastModified": 1712572393, + "narHash": "sha256-1rh9Avt4prjMhFl4roOxeoA2wrmHQ+4AdETD57Pb6mo=", "ref": "refs/heads/master", - "rev": "d3875adaaa70a52c127f2519a2e86eb4dbcf34b0", - "revCount": 167, + "rev": "c5bdfd91071fb06261c90655ac56ab61a09aa38c", + "revCount": 169, "type": "git", "url": "https://git.aciceri.dev/aciceri/emacs.git" }, @@ -82,11 +82,11 @@ ] }, "locked": { - "lastModified": 1711934712, - "narHash": "sha256-sBDe+QmX/QohlnKeSEzrftcXyZL5FY09OMjZ59Rpyy4=", + "lastModified": 1712798444, + "narHash": "sha256-aAksVB7zMfBQTz0q2Lw3o78HM3Bg2FRziX2D6qnh+sk=", "owner": "nix-community", "repo": "disko", - "rev": "611c9ea53250f7bb22286b3d26872280a0e608f9", + "rev": "a297cb1cb0337ee10a7a0f9517954501d8f6f74d", "type": "github" }, "original": { @@ -102,11 +102,11 @@ "pyproject-nix": "pyproject-nix" }, "locked": { - "lastModified": 1711684574, - "narHash": "sha256-/7clw2bkbDLzqrToVNPDaqHuijni5VRoB6yqdZdBmhw=", + "lastModified": 1712643040, + "narHash": "sha256-4vkxrZnHulJ8r6lewSr7oHjy0le66CxBRSgGr8WR3qg=", "owner": "nix-community", "repo": "dream2nix", - "rev": "26a6c3a3405cdb2c2218cdc4e1e2bcf7a07af7ba", + "rev": "400032c6303f82b07a09c9784ab5569a51544987", "type": "github" }, "original": { @@ -122,11 +122,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1711443855, - "narHash": "sha256-jPEUYELo7ACEiFU7jKDdQ+yC5OkqG2UcHk1/N+N7f3E=", + "lastModified": 1710320774, + "narHash": "sha256-TrLaYznIzUGy4vIRw4hDDlOKuF/vDD1J49cLtkxvgAI=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "81d4eb044fac45daf51281a046d413a40f05d103", + "rev": "c68aeff603f1b5c4cc7a57b876cf5e7101f2f21c", "type": "github" }, "original": { @@ -170,11 +170,11 @@ "extra-package-combobulate": { "flake": false, "locked": { - "lastModified": 1710138842, - "narHash": "sha256-9Vr5q9z7HmLCxBJW/4/5JAzri/MWB6FNA4BPeV5Ko1s=", + "lastModified": 1710175386, + "narHash": "sha256-rww0/6304xZWTFRo1BVcfSDdXOXtlgmfZOxAoOIjYsk=", "owner": "mickeynp", "repo": "combobulate", - "rev": "f6e092d94ab184b3445fe3d6c0a501f9d7df764a", + "rev": "ee82c568ad639605518f62f82fae4bcc0dfdbb81", "type": "github" }, "original": { @@ -186,11 +186,11 @@ "extra-package-copilot": { "flake": false, "locked": { - "lastModified": 1709987182, - "narHash": "sha256-BLIyJ9z4yI2Iv5eqrmULJ5VXoGnlXSVJx+5lVQyIoO8=", + "lastModified": 1710320315, + "narHash": "sha256-YY/6vODg2MSPMi+61Ii5aQiDQS5B6YPMP1VP1dDNOLs=", "owner": "zerolfx", "repo": "copilot.el", - "rev": "4e203efaa1f4047c800a026ba496d3bda8b67119", + "rev": "57d5e670786ca8156772c6dcb38e6ff67c5efd62", "type": "github" }, "original": { @@ -307,11 +307,11 @@ ] }, "locked": { - "lastModified": 1701473968, - "narHash": "sha256-YcVE5emp1qQ8ieHUnxt1wCZCC3ZfAS+SRRWZ2TMda7E=", + "lastModified": 1709336216, + "narHash": "sha256-Dt/wOWeW6Sqm11Yh+2+t0dfEWxoMxGBvv3JpIocFl9E=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5", + "rev": "f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2", "type": "github" }, "original": { @@ -552,11 +552,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1708547820, - "narHash": "sha256-xU/KC1PWqq5zL9dQ9wYhcdgxAwdeF/dJCLPH3PNZEBg=", + "lastModified": 1710309369, + "narHash": "sha256-pQo1vDEEyULfvTQeqZixryrDVpGICzGBtj4uIfP4cs0=", "owner": "hercules-ci", "repo": "hercules-ci-effects", - "rev": "0ca27bd58e4d5be3135a4bef66b582e57abe8f4a", + "rev": "9cc7ed20043adf381f1b8354c54ba667b527d538", "type": "github" }, "original": { @@ -587,7 +587,7 @@ "hercules-ci-effects_3": { "inputs": { "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_7" + "nixpkgs": "nixpkgs_8" }, "locked": { "lastModified": 1701009247, @@ -624,6 +624,27 @@ "type": "github" } }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "nix-on-droid", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709445365, + "narHash": "sha256-DVv6nd9FQBbMWbOmhq0KVqmlc3y3FMSYl49UXmMcO+0=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "4de84265d7ec7634a69ba75028696d74de9a44a7", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, "homeManager": { "inputs": { "nixpkgs": [ @@ -631,11 +652,11 @@ ] }, "locked": { - "lastModified": 1712016346, - "narHash": "sha256-O2nO7pD+krq+4HgkLB4VThRtAucIPfXDs/jJqCGlK1w=", + "lastModified": 1712759992, + "narHash": "sha256-2APpO3ZW4idlgtlb8hB04u/rmIcKA8O7pYqxF66xbNY=", "owner": "nix-community", "repo": "home-manager", - "rev": "4be0464472675212654dedf3e021bd5f1d58b92f", + "rev": "31357486b0ef6f4e161e002b6893eeb4fafc3ca9", "type": "github" }, "original": { @@ -725,6 +746,52 @@ "type": "github" } }, + "nix-formatter-pack": { + "inputs": { + "nixpkgs": [ + "nix-on-droid", + "nixpkgs" + ], + "nmd": "nmd", + "nmt": "nmt" + }, + "locked": { + "lastModified": 1705252799, + "narHash": "sha256-HgSTREh7VoXjGgNDwKQUYcYo13rPkltW7IitHrTPA5c=", + "owner": "Gerschtli", + "repo": "nix-formatter-pack", + "rev": "2de39dedd79aab14c01b9e2934842051a160ffa5", + "type": "github" + }, + "original": { + "owner": "Gerschtli", + "repo": "nix-formatter-pack", + "type": "github" + } + }, + "nix-on-droid": { + "inputs": { + "home-manager": "home-manager_2", + "nix-formatter-pack": "nix-formatter-pack", + "nixpkgs": "nixpkgs_7", + "nixpkgs-docs": "nixpkgs-docs", + "nixpkgs-for-bootstrap": "nixpkgs-for-bootstrap", + "nmd": "nmd_2" + }, + "locked": { + "lastModified": 1710434231, + "narHash": "sha256-yrWnsG28518tbIapJWiluweHORuuIwAQrA8lga0Sqlw=", + "owner": "nix-community", + "repo": "nix-on-droid", + "rev": "2d93311c4f3f300154d2085e4b4b1d550237da92", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-on-droid", + "type": "github" + } + }, "nixDarwin": { "inputs": { "nixpkgs": [ @@ -771,11 +838,11 @@ }, "nixosHardware": { "locked": { - "lastModified": 1711352745, - "narHash": "sha256-luvqik+i3HTvCbXQZgB6uggvEcxI9uae0nmrgtXJ17U=", + "lastModified": 1712760404, + "narHash": "sha256-4zhaEW1nB+nGbCNMjOggWeY5nXs/H0Y71q0+h+jdxoU=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "9a763a7acc4cfbb8603bb0231fec3eda864f81c0", + "rev": "e1c4bac14beb8c409d0534382cf967171706b9d9", "type": "github" }, "original": { @@ -800,6 +867,38 @@ "type": "github" } }, + "nixpkgs-docs": { + "locked": { + "lastModified": 1705957679, + "narHash": "sha256-Q8LJaVZGJ9wo33wBafvZSzapYsjOaNjP/pOnSiKVGHY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9a333eaa80901efe01df07eade2c16d183761fa3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "release-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-for-bootstrap": { + "locked": { + "lastModified": 1708105575, + "narHash": "sha256-sS4AItZeUnAei6v8FqxNlm+/27MPlfoGym/TZP0rmH0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1d1817869c47682a6bee85b5b0a6537b6c0fba26", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1d1817869c47682a6bee85b5b0a6537b6c0fba26", + "type": "github" + } + }, "nixpkgs-kernel": { "locked": { "lastModified": 1656239181, @@ -908,11 +1007,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1711124224, - "narHash": "sha256-l0zlN/3CiodvWDtfBOVxeTwYSRz93muVbXWSpaMjXxM=", + "lastModified": 1710162809, + "narHash": "sha256-i2R2bcnQp+85de67yjgZVvJhd6rRnJbSYNpGmB6Leb8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "56528ee42526794d413d6f244648aaee4a7b56c0", + "rev": "ddcd7598b2184008c97e6c9c6a21c5f37590b8d2", "type": "github" }, "original": { @@ -924,11 +1023,11 @@ }, "nixpkgsStable": { "locked": { - "lastModified": 1711668574, - "narHash": "sha256-u1dfs0ASQIEr1icTVrsKwg2xToIpn7ZXxW3RHfHxshg=", + "lastModified": 1712588820, + "narHash": "sha256-y31s5idk3jMJMAVE4Ud9AdI7HT3CgTAeMTJ0StqKN7Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "219951b495fc2eac67b1456824cc1ec1fd2ee659", + "rev": "d272ca50d1f7424fbfcd1e6f1c9e01d92f6da167", "type": "github" }, "original": { @@ -940,11 +1039,11 @@ }, "nixpkgsUnstable": { "locked": { - "lastModified": 1711703276, - "narHash": "sha256-iMUFArF0WCatKK6RzfUJknjem0H9m4KgorO/p3Dopkk=", + "lastModified": 1712608508, + "narHash": "sha256-vMZ5603yU0wxgyQeHJryOI+O61yrX2AHwY6LOFyV1gM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d8fe5e6c92d0d190646fb9f1056741a229980089", + "rev": "4cba8b53da471aea2ab2b0c1f30a81e7c451f4b6", "type": "github" }, "original": { @@ -972,11 +1071,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1711163522, - "narHash": "sha256-YN/Ciidm+A0fmJPWlHBGvVkcarYWSC+s3NTPk/P+q3c=", + "lastModified": 1710272261, + "narHash": "sha256-g0bDwXFmTE7uGDOs9HcJsfLFhH7fOsASbAuOzDC+fhQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "44d0940ea560dee511026a53f0e2e2cde489b4d4", + "rev": "0ad13a6833440b8e238947e47bea7f11071dc2b2", "type": "github" }, "original": { @@ -988,11 +1087,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1703637592, - "narHash": "sha256-8MXjxU0RfFfzl57Zy3OfXCITS0qWDNLzlBAdwxGZwfY=", + "lastModified": 1709961763, + "narHash": "sha256-6H95HGJHhEZtyYA3rIQpvamMKAGoa8Yh2rFV29QnuGw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cfc3698c31b1fb9cdcf10f36c9643460264d0ca8", + "rev": "3030f185ba6a4bf4f18b87f345f104e6a6961f34", "type": "github" }, "original": { @@ -1004,11 +1103,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1711624657, - "narHash": "sha256-IViG6BKCJY/I6oRNfAANf/QitYylepQSCzgam0TF+bs=", + "lastModified": 1712482522, + "narHash": "sha256-Ai/xNgZpbwGcw0TSXwEPwwbPi8Iu906sB9M9z3o6UgA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "72c6ed328aa4e5d9151b1a512f6ad83aca7529fa", + "rev": "efe8ce06ca261f370d672def5b1e0be300c726e1", "type": "github" }, "original": { @@ -1051,6 +1150,21 @@ } }, "nixpkgs_7": { + "locked": { + "lastModified": 1708172716, + "narHash": "sha256-3M94oln0b61m3dUmLyECCA9hYAHXZEszM4saE3CmQO4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5d874ac46894c896119bce68e758e9e80bdb28f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_8": { "locked": { "lastModified": 1697723726, "narHash": "sha256-SaTWPkI8a5xSHX/rrKzUe+/uVNy6zCGMXgoeMb7T9rg=", @@ -1066,7 +1180,7 @@ "type": "github" } }, - "nixpkgs_8": { + "nixpkgs_9": { "locked": { "lastModified": 1678470307, "narHash": "sha256-OEeMUr3ueLIXyW/OaFUX5jUdimyQwMg/7e+/Q0gC/QE=", @@ -1082,13 +1196,67 @@ "type": "github" } }, + "nmd": { + "flake": false, + "locked": { + "lastModified": 1666190571, + "narHash": "sha256-Z1hc7M9X6L+H83o9vOprijpzhTfOBjd0KmUTnpHAVjA=", + "owner": "rycee", + "repo": "nmd", + "rev": "b75d312b4f33bd3294cd8ae5c2ca8c6da2afc169", + "type": "gitlab" + }, + "original": { + "owner": "rycee", + "repo": "nmd", + "type": "gitlab" + } + }, + "nmd_2": { + "inputs": { + "nixpkgs": [ + "nix-on-droid", + "nixpkgs-docs" + ], + "scss-reset": "scss-reset" + }, + "locked": { + "lastModified": 1705050560, + "narHash": "sha256-x3zzcdvhJpodsmdjqB4t5mkVW22V3wqHLOun0KRBzUI=", + "owner": "~rycee", + "repo": "nmd", + "rev": "66d9334933119c36f91a78d565c152a4fdc8d3d3", + "type": "sourcehut" + }, + "original": { + "owner": "~rycee", + "repo": "nmd", + "type": "sourcehut" + } + }, + "nmt": { + "flake": false, + "locked": { + "lastModified": 1648075362, + "narHash": "sha256-u36WgzoA84dMVsGXzml4wZ5ckGgfnvS0ryzo/3zn/Pc=", + "owner": "rycee", + "repo": "nmt", + "rev": "d83601002c99b78c89ea80e5e6ba21addcfe12ae", + "type": "gitlab" + }, + "original": { + "owner": "rycee", + "repo": "nmt", + "type": "gitlab" + } + }, "nur": { "locked": { - "lastModified": 1712062467, - "narHash": "sha256-+wD2/uSdixB6wuemURofkIx1ekN4/qm6UXeDLrlQBpo=", + "lastModified": 1712840159, + "narHash": "sha256-IWyQcCfyBW3V1yI1J8DVWwqrbh2mw928Vv3OwW6TEt8=", "owner": "nix-community", "repo": "NUR", - "rev": "91edd2127f8365f9e96b37370dcba75b769305fe", + "rev": "c853b2bdc1d750a4ba2eef266976127eca4dbcdc", "type": "github" }, "original": { @@ -1142,11 +1310,11 @@ ] }, "locked": { - "lastModified": 1712055707, - "narHash": "sha256-4XLvuSIDZJGS17xEwSrNuJLL7UjDYKGJSbK1WWX2AK8=", + "lastModified": 1712579741, + "narHash": "sha256-igpsH+pa6yFwYOdah3cFciCk8gw+ytniG9quf5f/q84=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "e35aed5fda3cc79f88ed7f1795021e559582093a", + "rev": "70f504012f0a132ac33e56988e1028d88a48855c", "type": "github" }, "original": { @@ -1199,7 +1367,7 @@ "fan-control": "fan-control", "flake-parts": "flake-parts_8", "kernel-src": "kernel-src", - "nixpkgs": "nixpkgs_8", + "nixpkgs": "nixpkgs_9", "nixpkgs-kernel": "nixpkgs-kernel", "panfork": "panfork", "tow-boot": "tow-boot", @@ -1232,6 +1400,7 @@ "homeManagerGitWorkspace": "homeManagerGitWorkspace", "homeManagerSwayNC": "homeManagerSwayNC", "nix-fast-build": "nix-fast-build", + "nix-on-droid": "nix-on-droid", "nixDarwin": "nixDarwin", "nixThePlanet": "nixThePlanet", "nixosHardware": "nixosHardware", @@ -1244,6 +1413,22 @@ "treefmt-nix": "treefmt-nix_3" } }, + "scss-reset": { + "flake": false, + "locked": { + "lastModified": 1631450058, + "narHash": "sha256-muDlZJPtXDIGevSEWkicPP0HQ6VtucbkMNygpGlBEUM=", + "owner": "andreymatin", + "repo": "scss-reset", + "rev": "0cf50e27a4e95e9bb5b1715eedf9c54dee1a5a91", + "type": "github" + }, + "original": { + "owner": "andreymatin", + "repo": "scss-reset", + "type": "github" + } + }, "slimlock": { "inputs": { "nixpkgs": [ diff --git a/flake.nix b/flake.nix index 377e1ff..70ca18e 100644 --- a/flake.nix +++ b/flake.nix @@ -55,6 +55,7 @@ url = "github:LnL7/nix-darwin"; inputs.nixpkgs.follows = "nixpkgsUnstable"; }; + nix-on-droid.url = "github:nix-community/nix-on-droid"; }; outputs = inputs @ {flakeParts, ...}: diff --git a/hosts/default.nix b/hosts/default.nix index 3459702..9448dc0 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -8,8 +8,9 @@ imports = [./module.nix]; fleet = { - darwinHosts.archer = { - }; + darwinHosts.archer = {}; + + nixOnDroidHosts.janeway = {}; hosts = { # thinkpad = { @@ -164,14 +165,4 @@ }; }; }; - - flake.nixosConfigurations = - lib.mapAttrs - config.fleet._mkNixosConfiguration - config.fleet.hosts; - - flake.darwinConfigurations = - lib.mapAttrs - config.fleet._mkDarwinConfiguration - config.fleet.darwinHosts; } diff --git a/hosts/janeway/default.nix b/hosts/janeway/default.nix new file mode 100644 index 0000000..54c0975 --- /dev/null +++ b/hosts/janeway/default.nix @@ -0,0 +1,58 @@ +{ + config, + lib, + pkgs, + ... +}: let + sshdTmpDirectory = "${config.user.home}/sshd-tmp"; + sshdDirectory = "${config.user.home}/sshd"; + pathToPubKey = "/mnt/sdcard/Download/picard_host_key.pub"; + port = 8022; +in { + # Backup etc files instead of failing to activate generation if a file already exists in /etc + environment.etcBackupExtension = ".bak"; + + # Read the changelog before changing this value + system.stateVersion = "23.11"; + + # Set up nix for flakes + nix.extraOptions = '' + experimental-features = nix-command flakes + ''; + + # Set your time zone + time.timeZone = "Europe/Rome"; + + build.activation.sshd = '' + $DRY_RUN_CMD mkdir $VERBOSE_ARG --parents "${config.user.home}/.ssh" + $DRY_RUN_CMD cat ${pathToPubKey} > "${config.user.home}/.ssh/authorized_keys" + + if [[ ! -d "${sshdDirectory}" ]]; then + $DRY_RUN_CMD rm $VERBOSE_ARG --recursive --force "${sshdTmpDirectory}" + $DRY_RUN_CMD mkdir $VERBOSE_ARG --parents "${sshdTmpDirectory}" + + $VERBOSE_ECHO "Generating host keys..." + $DRY_RUN_CMD ${pkgs.openssh}/bin/ssh-keygen -t rsa -b 4096 -f "${sshdTmpDirectory}/ssh_host_rsa_key" -N "" + + $VERBOSE_ECHO "Writing sshd_config..." + $DRY_RUN_CMD echo -e "HostKey ${sshdDirectory}/ssh_host_rsa_key\nPort ${toString port}\n" > "${sshdTmpDirectory}/sshd_config" + + $DRY_RUN_CMD mv $VERBOSE_ARG "${sshdTmpDirectory}" "${sshdDirectory}" + fi + ''; + + environment.packages = [ + pkgs.vim + pkgs.bottom + pkgs.helix + pkgs.stress + pkgs.openssh + pkgs.git + (pkgs.writeScriptBin "sshd-start" '' + #!${pkgs.runtimeShell} + + echo "Starting sshd in non-daemonized way on port ${toString port}" + ${pkgs.openssh}/bin/sshd -f "${sshdDirectory}/sshd_config" -D + '') + ]; +} diff --git a/hosts/module.nix b/hosts/module.nix index a1da41a..507d279 100644 --- a/hosts/module.nix +++ b/hosts/module.nix @@ -48,6 +48,42 @@ in { }; })); }; + nixOnDroidHosts = lib.mkOption { + type = lib.types.attrsOf (lib.types.submodule ({name, ...}: { + options = { + name = lib.mkOption { + description = "Host name"; + type = lib.types.strMatching "^$|^[[:alnum:]]([[:alnum:]_-]{0,61}[[:alnum:]])?$"; + default = name; + }; + system = lib.mkOption { + description = "NixOS architecture (a.k.a. system)"; + type = lib.types.str; + default = "aarch64-linux"; + }; + nixpkgs = lib.mkOption { + description = "Used nixpkgs"; + type = lib.types.anything; + default = inputs.nixpkgsUnstable; + }; + extraModules = lib.mkOption { + description = "Extra NixOS modules"; + type = lib.types.listOf lib.types.deferredModule; + default = []; + }; + overlays = lib.mkOption { + description = "Enabled Nixpkgs overlays"; + type = lib.types.listOf (lib.mkOptionType { + name = "nixpkgs-overlay"; + description = "nixpkgs overlay"; + check = lib.isFunction; + merge = lib.mergeOneOption; + }); + default = []; + }; + }; + })); + }; hosts = lib.mkOption { description = "Host configuration"; type = lib.types.attrsOf (lib.types.submodule ({name, ...}: { @@ -243,5 +279,41 @@ in { ]; }; }; + + _mkNixOnDroidConfiguration = lib.mkOption { + description = "Function returning a proper nix-on-droid configuration"; + type = lib.types.functionTo (lib.types.functionTo lib.types.attrs); # TODO improve this type + internal = true; + default = hostname: config: + inputs.nix-on-droid.lib.nixOnDroidConfiguration { + modules = [ + ({ + lib, + pkgs, + ... + }: { + nixpkgs.overlays = config.overlays; + }) + "${self.outPath}/hosts/${hostname}" + ]; + }; + }; + }; + + config = { + flake.nixosConfigurations = + lib.mapAttrs + config.fleet._mkNixosConfiguration + config.fleet.hosts; + + flake.darwinConfigurations = + lib.mapAttrs + config.fleet._mkDarwinConfiguration + config.fleet.darwinHosts; + + flake.nixOnDroidConfigurations = + lib.mapAttrs + config.fleet._mkNixOnDroidConfiguration + config.fleet.nixOnDroidHosts; }; }