diff options
| author | seth <[email protected]> | 2024-05-05 11:35:18 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-05-05 11:35:18 -0400 |
| commit | 34a7a042a36b63eb6b900932b1e420e4b6014a57 (patch) | |
| tree | 40dace9b4bb7b6e99c5d54165d8eb203963f5306 | |
| parent | 9380483bdf038149fc308698e9f115b1474a0c85 (diff) | |
simplify some things (#353)
* flake: drop flake-parts
* flake: add back flake-parts
* flake: use flake module again for configurations
| -rw-r--r-- | ci.nix | 32 | ||||
| -rw-r--r-- | ext/openwrt.nix | 82 | ||||
| -rw-r--r-- | ext/terranix/default.nix | 29 | ||||
| -rw-r--r-- | flake.lock | 120 | ||||
| -rw-r--r-- | flake.nix | 64 | ||||
| -rw-r--r-- | lib/default.nix | 50 | ||||
| -rw-r--r-- | modules/darwin/traits/default.nix | 1 | ||||
| -rw-r--r-- | modules/darwin/traits/users.nix (renamed from users/seth/darwin.nix) | 6 | ||||
| -rw-r--r-- | modules/default.nix | 8 | ||||
| -rw-r--r-- | modules/flake/configurations.nix | 46 | ||||
| -rw-r--r-- | modules/flake/default.nix | 2 | ||||
| -rw-r--r-- | modules/flake/openwrt.nix | 67 | ||||
| -rw-r--r-- | modules/flake/terranix.nix | 55 | ||||
| -rw-r--r-- | modules/nixos/archetypes/default.nix | 2 | ||||
| -rw-r--r-- | modules/nixos/traits/default.nix | 1 | ||||
| -rw-r--r-- | modules/nixos/traits/users.nix (renamed from users/seth/nixos.nix) | 20 | ||||
| -rw-r--r-- | modules/shared/traits/default.nix | 3 | ||||
| -rw-r--r-- | modules/shared/traits/users.nix | 39 | ||||
| -rw-r--r-- | overlay/default.nix | 26 | ||||
| -rw-r--r-- | parts/checks.nix | 21 | ||||
| -rw-r--r-- | parts/ci.nix | 34 | ||||
| -rw-r--r-- | parts/default.nix | 11 | ||||
| -rw-r--r-- | parts/shell.nix | 33 | ||||
| -rw-r--r-- | pre-commit.nix | 15 | ||||
| -rw-r--r-- | shell.nix | 33 | ||||
| -rw-r--r-- | systems/default.nix | 36 | ||||
| -rw-r--r-- | treefmt.nix | 19 | ||||
| -rw-r--r-- | users/default.nix | 20 | ||||
| -rw-r--r-- | users/seth/base/default.nix (renamed from users/seth/module/base/default.nix) | 0 | ||||
| -rw-r--r-- | users/seth/base/standalone.nix (renamed from users/seth/module/base/standalone.nix) | 0 | ||||
| -rw-r--r-- | users/seth/default.nix | 13 | ||||
| -rw-r--r-- | users/seth/desktop/budgie/default.nix (renamed from users/seth/module/desktop/budgie/default.nix) | 0 | ||||
| -rw-r--r-- | users/seth/desktop/default.nix (renamed from users/seth/module/desktop/default.nix) | 0 | ||||
| -rw-r--r-- | users/seth/desktop/gnome/default.nix (renamed from users/seth/module/desktop/gnome/default.nix) | 0 | ||||
| -rw-r--r-- | users/seth/desktop/plasma/default.nix (renamed from users/seth/module/desktop/plasma/default.nix) | 0 | ||||
| -rw-r--r-- | users/seth/desktop/plasma5/default.nix (renamed from users/seth/module/desktop/plasma5/default.nix) | 0 | ||||
| -rw-r--r-- | users/seth/home.nix | 7 | ||||
| -rw-r--r-- | users/seth/module/default.nix | 8 | ||||
| -rw-r--r-- | users/seth/programs/bat.nix (renamed from users/seth/module/programs/bat.nix) | 0 | ||||
| -rw-r--r-- | users/seth/programs/chromium.nix (renamed from users/seth/module/programs/chromium.nix) | 0 | ||||
| -rw-r--r-- | users/seth/programs/default.nix (renamed from users/seth/module/programs/default.nix) | 0 | ||||
| -rw-r--r-- | users/seth/programs/eza.nix (renamed from users/seth/module/programs/eza.nix) | 0 | ||||
| -rw-r--r-- | users/seth/programs/firefox/arkenfox.nix (renamed from users/seth/module/programs/firefox/arkenfox.nix) | 0 | ||||
| -rw-r--r-- | users/seth/programs/firefox/default.nix (renamed from users/seth/module/programs/firefox/default.nix) | 0 | ||||
| -rw-r--r-- | users/seth/programs/git.nix (renamed from users/seth/module/programs/git.nix) | 0 | ||||
| -rw-r--r-- | users/seth/programs/gpg.nix (renamed from users/seth/module/programs/gpg.nix) | 0 | ||||
| -rw-r--r-- | users/seth/programs/mangohud.nix (renamed from users/seth/module/programs/mangohud.nix) | 0 | ||||
| -rw-r--r-- | users/seth/programs/neovim.nix (renamed from users/seth/module/programs/neovim.nix) | 0 | ||||
| -rw-r--r-- | users/seth/programs/ssh.nix (renamed from users/seth/module/programs/ssh.nix) | 0 | ||||
| -rw-r--r-- | users/seth/programs/starship/default.nix (renamed from users/seth/module/programs/starship/default.nix) | 0 | ||||
| -rw-r--r-- | users/seth/programs/starship/starship.toml (renamed from users/seth/module/programs/starship/starship.toml) | 0 | ||||
| -rw-r--r-- | users/seth/programs/vim.nix (renamed from users/seth/module/programs/vim.nix) | 0 | ||||
| -rw-r--r-- | users/seth/programs/vscode.nix (renamed from users/seth/module/programs/vscode.nix) | 0 | ||||
| -rw-r--r-- | users/seth/shell/bash.nix (renamed from users/seth/module/shell/bash.nix) | 0 | ||||
| -rw-r--r-- | users/seth/shell/default.nix (renamed from users/seth/module/shell/default.nix) | 0 | ||||
| -rw-r--r-- | users/seth/shell/fish.nix (renamed from users/seth/module/shell/fish.nix) | 0 | ||||
| -rw-r--r-- | users/seth/shell/nu.nix (renamed from users/seth/module/shell/nu.nix) | 0 | ||||
| -rw-r--r-- | users/seth/shell/zsh.nix (renamed from users/seth/module/shell/zsh.nix) | 0 | ||||
| -rw-r--r-- | users/seth/system.nix | 36 |
59 files changed, 379 insertions, 560 deletions
@@ -1,32 +0,0 @@ -{self, ...}: { - perSystem = { - lib, - pkgs, - system, - self', - ... - }: { - packages.ciGate = let - toTopLevel = cfg: cfg.config.system.build.toplevel or cfg.activationPackage; - isCompatible = cfg: cfg.pkgs.system == system; - - configurations = - map - (type: - lib.mapAttrs (lib.const toTopLevel) - (lib.filterAttrs (lib.const isCompatible) self.${type})) - [ - "nixosConfigurations" - "darwinConfigurations" - "homeConfigurations" - ]; - - required = lib.concatMap lib.attrValues ( - lib.flatten [self'.checks self'.devShells configurations] - ); - in - pkgs.writeText "ci-gate" ( - lib.concatMapStringsSep "\n" toString required - ); - }; -} diff --git a/ext/openwrt.nix b/ext/openwrt.nix index d0e8d08..f02f8ef 100644 --- a/ext/openwrt.nix +++ b/ext/openwrt.nix @@ -1,42 +1,54 @@ -{withSystem, ...}: let - mkScript = script: - withSystem "x86_64-linux" ( - {pkgs, ...}: - pkgs.runCommand "image-files" {} script - ); +{ + lib, + inputs, + withSystem, + ... +}: let + pkgs = withSystem "x86_64-linux" ({pkgs, ...}: pkgs); + + profileFromRelease = release: + (inputs.openwrt-imagebuilder.lib.profiles { + inherit pkgs release; + }) + .identifyProfile; - setDefaults = opts: - mkScript '' - mkdir -p $out/etc/uci-defaults + mkImage = {profile, ...} @ args: + inputs.openwrt-imagebuilder.lib.build ( + profileFromRelease args.release profile + // builtins.removeAttrs args ["profile" "release"] + ); - cat > $out/etc/uci-defaults/99-custom << EOF - uci -q batch << EOI - ${opts} - commit - EOI - EOF - ''; + mapImages = lib.mapAttrs (lib.const mkImage); in { - openWrtImages = { - turret = { - release = "23.05.0"; - profile = "netgear_wac104"; + flake.legacyPackages.x86_64-linux = { + openWrtImages = mapImages { + turret = { + release = "23.05.0"; + profile = "netgear_wac104"; + + files = pkgs.runCommand "image-files" {} '' + mkdir -p $out/etc/uci-defaults - files = setDefaults '' - set system.@system[0].hostname="turret" - del_list network.@device[0].ports="lan4" - set network.wan="interface" - set network.wan.device="lan4" - set network.wan.proto="dhcp" - set wireless.default_radio0.ssid="Box-2.4G" - set wireless.default_radio0.encryption="psk2" - set wireless.default_radio0.key="CorrectHorseBatteryStaple" - set wireless.default_radio1.ssid="Box-5G" - set wireless.default_radio1.encryption="psk2" - set wireless.default_radio1.key="CorrectHorseBatteryStaple" - add_list dhcp.@dnsmasq[0].server="1.1.1.1" - add_list dhcp.@dnsmasq[0].server="1.0.0.1" - ''; + cat > $out/etc/uci-defaults/99-custom << EOF + uci -q batch << EOI + set system.@system[0].hostname="turret" + del_list network.@device[0].ports="lan4" + set network.wan="interface" + set network.wan.device="lan4" + set network.wan.proto="dhcp" + set wireless.default_radio0.ssid="Box-2.4G" + set wireless.default_radio0.encryption="psk2" + set wireless.default_radio0.key="CorrectHorseBatteryStaple" + set wireless.default_radio1.ssid="Box-5G" + set wireless.default_radio1.encryption="psk2" + set wireless.default_radio1.key="CorrectHorseBatteryStaple" + add_list dhcp.@dnsmasq[0].server="1.1.1.1" + add_list dhcp.@dnsmasq[0].server="1.0.0.1" + commit + EOI + EOF + ''; + }; }; }; } diff --git a/ext/terranix/default.nix b/ext/terranix/default.nix index 93e73a6..c70d4d8 100644 --- a/ext/terranix/default.nix +++ b/ext/terranix/default.nix @@ -1,18 +1,25 @@ -{ - perSystem = {pkgs, ...}: { - terranix = { - package = pkgs.opentofu.withPlugins (plugins: [ +{inputs, ...}: { + perSystem = { + pkgs, + system, + ... + }: { + packages = { + opentofu = pkgs.opentofu.withPlugins (plugins: [ plugins.cloudflare plugins.tailscale ]); - modules = [ - ./cloudflare - ./tailscale - ./cloud.nix - ./vars.nix - ./versions.nix - ]; + terranix = inputs.terranix.lib.terranixConfiguration { + inherit system; + modules = [ + ./cloudflare + ./tailscale + ./cloud.nix + ./vars.nix + ./versions.nix + ]; + }; }; }; } @@ -8,7 +8,7 @@ "nixpkgs" ], "systems": [ - "pre-commit", + "lanzaboote", "flake-utils", "systems" ] @@ -31,7 +31,7 @@ "inputs": { "flake-compat": [], "flake-utils": [ - "pre-commit", + "lanzaboote", "flake-utils" ], "nixpkgs": [ @@ -57,14 +57,14 @@ "locked": { "lastModified": 1714607657, "narHash": "sha256-AnmN+JOzrpHv7Uw7JSPJ9JEjuqF7gjhx29UuuldNpas=", - "owner": "Stonks3141", - "repo": "ctp-nix", + "owner": "catppuccin", + "repo": "nix", "rev": "b0dc7f3181063daa6532dc5f757ded1a605dfbd5", "type": "github" }, "original": { - "owner": "Stonks3141", - "repo": "ctp-nix", + "owner": "catppuccin", + "repo": "nix", "type": "github" } }, @@ -116,7 +116,7 @@ "nixpkgs" ], "utils": [ - "pre-commit", + "lanzaboote", "flake-utils" ] }, @@ -159,7 +159,7 @@ "firefox-addons": { "inputs": { "flake-utils": [ - "pre-commit", + "lanzaboote", "flake-utils" ], "nixpkgs": [ @@ -182,6 +182,21 @@ "type": "sourcehut" } }, + "flake-checks": { + "locked": { + "lastModified": 1714464432, + "narHash": "sha256-MYeWsW8BDA3KO17wwuc8D+7l8PSidbdQIv64QNNVEcI=", + "owner": "getchoo", + "repo": "flake-checks", + "rev": "a711dab545e8b964914ac01ed06971a5a37ae22b", + "type": "github" + }, + "original": { + "owner": "getchoo", + "repo": "flake-checks", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -240,27 +255,6 @@ "type": "github" } }, - "gitignore": { - "inputs": { - "nixpkgs": [ - "pre-commit", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, "home-manager": { "inputs": { "nixpkgs": [ @@ -308,16 +302,11 @@ "flake-parts": [ "flake-parts" ], - "flake-utils": [ - "pre-commit", - "flake-utils" - ], + "flake-utils": "flake-utils", "nixpkgs": [ "nixpkgs" ], - "pre-commit-hooks-nix": [ - "pre-commit" - ], + "pre-commit-hooks-nix": [], "rust-overlay": "rust-overlay" }, "locked": { @@ -358,7 +347,7 @@ "inputs": { "flake-compat": [], "flake-utils": [ - "pre-commit", + "lanzaboote", "flake-utils" ], "nixpkgs": [ @@ -396,8 +385,8 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1714685007, - "narHash": "sha256-Q4ddhb5eC5pwci0QhAapFwnsc8X8H9ZMQiWpsofBsDc=", + "lastModified": 1714531828, + "narHash": "sha256-ILsf3bdY/hNNI/Hu5bSt2/KbmHaAVhBbNUOdGztTHEg=", "owner": "NixOS", "repo": "nixpkgs", "rev": "383ffe076d9b633a2e97b6e4dd97fc15fcf30159", @@ -445,32 +434,6 @@ "type": "github" } }, - "pre-commit": { - "inputs": { - "flake-compat": [], - "flake-utils": "flake-utils", - "gitignore": "gitignore", - "nixpkgs": [ - "nixpkgs" - ], - "nixpkgs-stable": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1714478972, - "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "2849da033884f54822af194400f8dff435ada242", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, "root": { "inputs": { "agenix": "agenix", @@ -479,6 +442,7 @@ "darwin": "darwin", "deploy": "deploy", "firefox-addons": "firefox-addons", + "flake-checks": "flake-checks", "flake-parts": "flake-parts", "getchvim": "getchvim", "home-manager": "home-manager", @@ -490,10 +454,8 @@ "nixpkgs-stable": "nixpkgs-stable", "nu-scripts": "nu-scripts", "openwrt-imagebuilder": "openwrt-imagebuilder", - "pre-commit": "pre-commit", "teawiebot": "teawiebot", - "terranix": "terranix", - "treefmt-nix": "treefmt-nix" + "terranix": "terranix" } }, "rust-analyzer-src": { @@ -579,7 +541,7 @@ "bats-assert": [], "bats-support": [], "flake-utils": [ - "pre-commit", + "lanzaboote", "flake-utils" ], "nixpkgs": [ @@ -600,26 +562,6 @@ "repo": "terranix", "type": "github" } - }, - "treefmt-nix": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1714058656, - "narHash": "sha256-Qv4RBm4LKuO4fNOfx9wl40W2rBbv5u5m+whxRYUMiaA=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "c6aaf729f34a36c445618580a9f95a48f5e4e03f", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "treefmt-nix", - "type": "github" - } } }, "root": "root", @@ -10,6 +10,13 @@ flakeModules = import ./modules/flake; in inputs.flake-parts.lib.mkFlake {inherit inputs;} { + systems = [ + "x86_64-linux" + "aarch64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; + imports = [ # primary outputs ./lib @@ -18,28 +25,14 @@ ./systems ./users - # some tools to help me out - ./pre-commit.nix - ./shell.nix - ./treefmt.nix + # development related outputs + ./parts - ./ext # expressions for *external*, not so nix-y things - ./ci.nix # how i make sure my systems wont implode before i update + # external, not so nix-y things + ./ext - inputs.pre-commit.flakeModule - inputs.treefmt-nix.flakeModule - - # dogfooding + # dogfood some modules flakeModules.configurations - flakeModules.openwrt - flakeModules.terranix - ]; - - systems = [ - "x86_64-linux" - "aarch64-linux" - "x86_64-darwin" - "aarch64-darwin" ]; }; @@ -62,7 +55,7 @@ nixpkgs.follows = "nixpkgs"; darwin.follows = ""; home-manager.follows = ""; - systems.follows = "pre-commit/flake-utils/systems"; + systems.follows = "lanzaboote/flake-utils/systems"; }; }; @@ -72,18 +65,18 @@ nixpkgs.follows = "nixpkgs"; flake-compat.follows = ""; pre-commit.follows = ""; - flake-utils.follows = "pre-commit/flake-utils"; + flake-utils.follows = "lanzaboote/flake-utils"; }; }; - catppuccin.url = "github:Stonks3141/ctp-nix"; + catppuccin.url = "github:catppuccin/nix"; deploy = { url = "github:serokell/deploy-rs"; inputs = { nixpkgs.follows = "nixpkgs"; flake-compat.follows = ""; - utils.follows = "pre-commit/flake-utils"; + utils.follows = "lanzaboote/flake-utils"; }; }; @@ -91,10 +84,12 @@ url = "sourcehut:~rycee/nur-expressions?dir=pkgs/firefox-addons"; inputs = { nixpkgs.follows = "nixpkgs"; - flake-utils.follows = "pre-commit/flake-utils"; + flake-utils.follows = "lanzaboote/flake-utils"; }; }; + flake-checks.url = "github:getchoo/flake-checks"; + getchvim = { url = "github:getchoo/getchvim"; inputs.nixpkgs.follows = "nixpkgs"; @@ -116,8 +111,7 @@ nixpkgs.follows = "nixpkgs"; flake-compat.follows = ""; flake-parts.follows = "flake-parts"; - flake-utils.follows = "pre-commit/flake-utils"; - pre-commit-hooks-nix.follows = "pre-commit"; + pre-commit-hooks-nix.follows = ""; }; }; @@ -131,7 +125,7 @@ inputs = { nixpkgs.follows = "nixpkgs"; flake-compat.follows = ""; - flake-utils.follows = "pre-commit/flake-utils"; + flake-utils.follows = "lanzaboote/flake-utils"; }; }; @@ -145,15 +139,6 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - pre-commit = { - url = "github:cachix/pre-commit-hooks.nix"; - inputs = { - nixpkgs.follows = "nixpkgs"; - nixpkgs-stable.follows = "nixpkgs"; - flake-compat.follows = ""; - }; - }; - teawiebot = { url = "github:getchoo/teawiebot"; inputs.nixpkgs.follows = "nixpkgs"; @@ -163,16 +148,11 @@ url = "github:terranix/terranix"; inputs = { nixpkgs.follows = "nixpkgs"; - flake-utils.follows = "pre-commit/flake-utils"; + flake-utils.follows = "lanzaboote/flake-utils"; terranix-examples.follows = ""; bats-support.follows = ""; bats-assert.follows = ""; }; }; - - treefmt-nix = { - url = "github:numtide/treefmt-nix"; - inputs.nixpkgs.follows = "nixpkgs"; - }; }; } diff --git a/lib/default.nix b/lib/default.nix index c6ca2ca..9a67a2e 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -4,31 +4,29 @@ ... }: { flake.lib = - ( - lib.extend (final: prev: let - readDir' = dir: - prev.filterAttrs (name: ( - prev.const (name != "default.nix") - )) (builtins.readDir dir); - in { - my = - prev.recursiveUpdate - ( - prev.mapAttrs' (name: ( - prev.const ( - prev.nameValuePair - (prev.removeSuffix ".nix" name) - (import ./${name} { - lib = final; - inherit inputs; - }) - ) - )) (readDir' ./.) - ) - { - inherit readDir'; - }; - }) - ) + (lib.extend (final: prev: let + readDir' = dir: + prev.filterAttrs (name: ( + prev.const (name != "default.nix") + )) (builtins.readDir dir); + in { + my = + prev.recursiveUpdate + ( + prev.mapAttrs' (name: ( + prev.const ( + prev.nameValuePair + (prev.removeSuffix ".nix" name) + (import ./${name} { + lib = final; + inherit inputs; + }) + ) + )) (readDir' ./.) + ) + { + inherit readDir'; + }; + })) .my; } diff --git a/modules/darwin/traits/default.nix b/modules/darwin/traits/default.nix index 1e9a5a4..0939a66 100644 --- a/modules/darwin/traits/default.nix +++ b/modules/darwin/traits/default.nix @@ -1,5 +1,6 @@ { imports = [ ./home-manager.nix + ./users.nix ]; } diff --git a/users/seth/darwin.nix b/modules/darwin/traits/users.nix index e2c59c8..7ad7491 100644 --- a/users/seth/darwin.nix +++ b/modules/darwin/traits/users.nix @@ -3,12 +3,10 @@ lib, ... }: let - cfg = config.traits.users.seth; + cfg = config.traits.users; in { - imports = [./system.nix]; - config = lib.mkMerge [ - (lib.mkIf cfg.enable { + (lib.mkIf cfg.seth.enable { home-manager.users.seth = { seth.desktop.enable = false; }; diff --git a/modules/default.nix b/modules/default.nix index 198ba0f..ef449b6 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -1,5 +1,7 @@ { - nixosModules = import ./nixos; - darwinModules = import ./darwin; - flakeModules = import ./flake; + flake = { + darwinModules = import ./darwin; + flakeModules = import ./flake; + nixosModules = import ./nixos; + }; } diff --git a/modules/flake/configurations.nix b/modules/flake/configurations.nix index 7b745fc..210f23e 100644 --- a/modules/flake/configurations.nix +++ b/modules/flake/configurations.nix @@ -1,33 +1,43 @@ { config, lib, - moduleLocation, flake-parts-lib, - withSystem, inputs, - self, + moduleLocation, + withSystem, ... }: let inherit (flake-parts-lib) mkSubmoduleOptions; inherit + (builtins) + removeAttrs + ; + + inherit (lib) attrValues literalExpression mapAttrs - mdDoc mkAliasOptionModule mkOption recursiveUpdate types ; - builderType = types.functionTo pkgsType; + inherit + (inputs) + nixpkgs + darwin + home-manager + ; + pkgsType = types.lazyAttrsOf types.raw; + builderType = types.functionTo pkgsType; defaultBuilderFor = { - nixos = inputs.nixpkgs.lib.nixosSystem; - darwin = (inputs.darwin or inputs.nix-darwin).lib.darwinSystem; + nixos = nixpkgs.lib.nixosSystem; + darwin = (inputs.nix-darwin or darwin).lib.darwinSystem; }; builderStringFor = { @@ -48,13 +58,13 @@ toSystem = type: name: args: args.builder ( - recursiveUpdate (builtins.removeAttrs args ["builder"]) { + recursiveUpdate (removeAttrs args ["builder"]) { modules = [ ../../systems/${name} {networking.hostName = name;} ] - ++ attrValues (self."${type}Modules" or {}) + ++ attrValues (inputs.self."${type}Modules" or {}) ++ (args.modules or []); specialArgs = applySpecialArgsFor args.system (args.specialArgs or {}); @@ -62,18 +72,18 @@ ); toUser = name: args: - inputs.home-manager.lib.homeManagerConfiguration ( + home-manager.lib.homeManagerConfiguration ( recursiveUpdate args { modules = [ - ../../users/${name} + ../../users/${name}/home.nix { _module.args.osConfig = {}; programs.home-manager.enable = true; } ] - ++ attrValues (self.homeModules or {}) + ++ attrValues (inputs.self.homeModules or {}) ++ (args.modules or []); extraSpecialArgs = let @@ -96,7 +106,7 @@ type = builderType; default = defaultBuilderFor.${type}; example = literalExpression (builderStringFor type); - description = mdDoc '' + description = '' Function to build this ${type}Configuration with ''; }; @@ -105,7 +115,7 @@ type = types.str; default = "x86_64-${kernelFor type}"; example = literalExpression "aarch64-${kernelFor type}"; - description = mdDoc '' + description = '' System to build this ${type}Configuration for ''; }; @@ -118,8 +128,10 @@ options = { pkgs = mkOption { type = pkgsType; + default = nixpkgs.legacyPackages.x86_64-linux; + defaultText = "inputs.nixpkgs.legacyPackages.x86_64-linux"; example = literalExpression "inputs.nixpkgs.legacyPackages.aarch64-linux"; - description = mdDoc '' + description = '' Instance of nixpkgs to use in this homeConfiguration ''; }; @@ -137,7 +149,7 @@ }; } ''; - description = mdDoc '' + description = '' Attribute set of `lib.${type}System` options. The names of each attribute will be used to import files in the `systems/` directory @@ -178,7 +190,7 @@ in { }; } ''; - description = mdDoc '' + description = '' Attribute set of `lib.homeManagerConfiguration` arguments. The name of each attribute will be used to import files in the `users/` directory. diff --git a/modules/flake/default.nix b/modules/flake/default.nix index 04c495d..8d671c2 100644 --- a/modules/flake/default.nix +++ b/modules/flake/default.nix @@ -1,5 +1,3 @@ { configurations = import ./configurations.nix; - openwrt = import ./openwrt.nix; - terranix = import ./terranix.nix; } diff --git a/modules/flake/openwrt.nix b/modules/flake/openwrt.nix deleted file mode 100644 index bdf4235..0000000 --- a/modules/flake/openwrt.nix +++ /dev/null @@ -1,67 +0,0 @@ -{ - config, - lib, - withSystem, - inputs, - ... -}: let - namespace = "openWrtImages"; - cfg = config.${namespace}; - - inherit - (lib) - literalExpression - mdDoc - mkOption - types - ; - - openWrtSubmodule = { - freeformType = types.attrsOf types.anything; - options = { - profile = mkOption { - type = types.str; - example = literalExpression "netgear_wac104"; - description = mdDoc '' - Device profile to build images for. - ''; - }; - - release = mkOption { - type = types.str; - default = "23.05.0"; - example = literalExpression "23.05.2"; - description = mdDoc '' - OpenWRT release to base image off of - ''; - }; - }; - }; -in { - options.${namespace} = mkOption { - type = types.attrsOf (types.submodule openWrtSubmodule); - default = {}; - description = mdDoc '' - Generated OpenWRT images - ''; - }; - - config.flake.legacyPackages.x86_64-linux = { - ${namespace} = withSystem "x86_64-linux" ( - {pkgs, ...}: let - profileFromRelease = release: - (inputs.openwrt-imagebuilder.lib.profiles { - inherit pkgs release; - }) - .identifyProfile; - - mkImage = {profile, ...} @ args: - inputs.openwrt-imagebuilder.lib.build ( - profileFromRelease args.release profile - // builtins.removeAttrs args ["profile" "release"] - ); - in - lib.mapAttrs (lib.const mkImage) cfg - ); - }; -} diff --git a/modules/flake/terranix.nix b/modules/flake/terranix.nix deleted file mode 100644 index 0d39043..0000000 --- a/modules/flake/terranix.nix +++ /dev/null @@ -1,55 +0,0 @@ -{ - lib, - flake-parts-lib, - inputs, - ... -}: let - namespace = "terranix"; - - inherit - (lib) - literalExpression - mkOption - mkPackageOption - types - ; - - inherit - (flake-parts-lib) - mkPerSystemOption - ; -in { - options = { - perSystem = mkPerSystemOption ({ - config, - pkgs, - system, - ... - }: let - cfg = config.${namespace}; - in { - options.${namespace} = { - modules = mkOption { - type = types.listOf types.unspecified; - default = []; - example = literalExpression "[ ./terranix ]"; - description = '' - Modules to use in this terranixConfiguration - ''; - }; - - package = mkPackageOption pkgs "opentofu" { - default = ["opentofu"]; - example = literalExpression "pkgs.opentofu.withPlugins (plugins: [ plugins.tailscale ] )"; - }; - }; - - config = { - packages.terranix = inputs.terranix.lib.terranixConfiguration { - inherit system; - inherit (cfg) modules; - }; - }; - }); - }; -} diff --git a/modules/nixos/archetypes/default.nix b/modules/nixos/archetypes/default.nix index dfdb4e4..0d11285 100644 --- a/modules/nixos/archetypes/default.nix +++ b/modules/nixos/archetypes/default.nix @@ -1,6 +1,6 @@ { imports = [ - ./server.nix ./personal.nix + ./server.nix ]; } diff --git a/modules/nixos/traits/default.nix b/modules/nixos/traits/default.nix index 6816c56..1a69edb 100644 --- a/modules/nixos/traits/default.nix +++ b/modules/nixos/traits/default.nix @@ -7,6 +7,7 @@ ./nvidia.nix ./secrets.nix ./tailscale.nix + ./users.nix ./zram.nix ]; } diff --git a/users/seth/nixos.nix b/modules/nixos/traits/users.nix index fd65322..2802901 100644 --- a/users/seth/nixos.nix +++ b/modules/nixos/traits/users.nix @@ -4,20 +4,20 @@ secretsDir, ... }: let - cfg = config.traits.users.seth; + cfg = config.traits.users; in { - options.traits.users.seth = { - manageSecrets = - lib.mkEnableOption "automatic secrets management" - // { - default = config.traits.secrets.enable; - }; + options.traits.users = { + seth = { + manageSecrets = + lib.mkEnableOption "automatic secrets management" + // { + default = config.traits.secrets.enable; + }; + }; }; - imports = [./system.nix]; - config = lib.mkMerge [ - (lib.mkIf (cfg.enable && cfg.manageSecrets) { + (lib.mkIf (cfg.seth.enable && cfg.seth.manageSecrets) { age.secrets = { sethPassword.file = secretsDir + "/sethPassword.age"; }; diff --git a/modules/shared/traits/default.nix b/modules/shared/traits/default.nix index fa5ba25..2c409a7 100644 --- a/modules/shared/traits/default.nix +++ b/modules/shared/traits/default.nix @@ -1,6 +1,7 @@ { imports = [ - ./locale.nix ./home-manager.nix + ./locale.nix + ./users.nix ]; } diff --git a/modules/shared/traits/users.nix b/modules/shared/traits/users.nix new file mode 100644 index 0000000..e18e40a --- /dev/null +++ b/modules/shared/traits/users.nix @@ -0,0 +1,39 @@ +{ + config, + lib, + pkgs, + ... +}: let + cfg = config.traits.users; +in { + options.traits.users = { + seth = { + enable = lib.mkEnableOption "Seth's user & home configurations"; + }; + }; + + config = lib.mkMerge [ + (lib.mkIf cfg.seth.enable { + users.users.seth = + { + shell = pkgs.fish; + home = lib.mkDefault ( + if pkgs.stdenv.isDarwin + then "/Users/seth" + else "/home/seth" + ); + } + // lib.optionalAttrs pkgs.stdenv.isLinux { + extraGroups = ["wheel"]; + isNormalUser = true; + }; + + programs.fish.enable = lib.mkDefault true; + + home-manager.users.seth = { + imports = [../../../users/seth]; + seth.enable = true; + }; + }) + ]; +} diff --git a/overlay/default.nix b/overlay/default.nix index f423d88..fdcf7c9 100644 --- a/overlay/default.nix +++ b/overlay/default.nix @@ -1,14 +1,16 @@ { - flake.overlays.default = final: prev: - prev.lib.composeManyExtensions - ( - prev.lib.pipe ./. [ - builtins.readDir - builtins.attrNames - (builtins.filter (name: name != "default.nix")) - (map (file: import ./${file})) - ] - ) - final - prev; + flake = { + overlays.default = final: prev: + prev.lib.composeManyExtensions + ( + prev.lib.pipe ./. [ + builtins.readDir + builtins.attrNames + (builtins.filter (name: name != "default.nix")) + (map (file: import ./${file})) + ] + ) + final + prev; + }; } diff --git a/parts/checks.nix b/parts/checks.nix new file mode 100644 index 0000000..5ccc308 --- /dev/null +++ b/parts/checks.nix @@ -0,0 +1,21 @@ +{inputs, ...}: { + perSystem = { + lib, + pkgs, + ... + }: { + checks = { + inherit + (inputs.flake-checks.lib.mkChecks { + root = ../.; + inherit pkgs; + }) + actionlint + alejandra + deadnix + editorconfig + statix + ; + }; + }; +} diff --git a/parts/ci.nix b/parts/ci.nix new file mode 100644 index 0000000..5ddc81c --- /dev/null +++ b/parts/ci.nix @@ -0,0 +1,34 @@ +{self, ...}: { + perSystem = { + lib, + pkgs, + system, + self', + ... + }: { + packages = { + ciGate = let + toTopLevel = cfg: cfg.config.system.build.toplevel or cfg.activationPackage; + isCompatible = cfg: cfg.pkgs.system == system; + + configurations = + map + (type: + lib.mapAttrs (lib.const toTopLevel) + (lib.filterAttrs (lib.const isCompatible) self.${type})) + [ + "nixosConfigurations" + "darwinConfigurations" + "homeConfigurations" + ]; + + required = lib.concatMap lib.attrValues ( + lib.flatten [self'.checks self'.devShells configurations] + ); + in + pkgs.writeText "ci-gate" ( + lib.concatMapStringsSep "\n" toString required + ); + }; + }; +} diff --git a/parts/default.nix b/parts/default.nix new file mode 100644 index 0000000..d8da3fe --- /dev/null +++ b/parts/default.nix @@ -0,0 +1,11 @@ +{ + imports = [ + ./checks.nix + ./ci.nix + ./shell.nix + ]; + + perSystem = {pkgs, ...}: { + formatter = pkgs.alejandra; + }; +} diff --git a/parts/shell.nix b/parts/shell.nix new file mode 100644 index 0000000..ada1ecf --- /dev/null +++ b/parts/shell.nix @@ -0,0 +1,33 @@ +{ + perSystem = { + lib, + pkgs, + inputs', + self', + ... + }: { + devShells = { + default = pkgs.mkShellNoCC { + packages = + [ + pkgs.nix + + # format + lint + pkgs.actionlint + self'.formatter + pkgs.deadnix + pkgs.nil + pkgs.statix + + # utils + pkgs.deploy-rs + pkgs.fzf + pkgs.just + self'.packages.opentofu + ] + ++ lib.optional pkgs.stdenv.isDarwin [inputs'.darwin.packages.darwin-rebuild] + ++ lib.optionals pkgs.stdenv.isLinux [pkgs.nixos-rebuild inputs'.agenix.packages.agenix]; + }; + }; + }; +} diff --git a/pre-commit.nix b/pre-commit.nix deleted file mode 100644 index b70ceba..0000000 --- a/pre-commit.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ - perSystem = {config, ...}: { - pre-commit.settings.hooks = { - actionlint.enable = true; - - treefmt = { - enable = true; - package = config.treefmt.build.wrapper; - }; - - nil.enable = true; - statix.enable = true; - }; - }; -} diff --git a/shell.nix b/shell.nix deleted file mode 100644 index 942a9fc..0000000 --- a/shell.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ - perSystem = { - config, - lib, - pkgs, - inputs', - self', - ... - }: { - devShells.default = pkgs.mkShellNoCC { - shellHook = config.pre-commit.installationScript; - packages = - [ - pkgs.nix - - # format + lint - pkgs.actionlint - self'.formatter - pkgs.deadnix - pkgs.nil - pkgs.statix - - # utils - pkgs.deploy-rs - pkgs.fzf - pkgs.just - config.terranix.package - ] - ++ lib.optional pkgs.stdenv.isDarwin [inputs'.darwin.packages.darwin-rebuild] - ++ lib.optionals pkgs.stdenv.isLinux [pkgs.nixos-rebuild inputs'.agenix.packages.agenix]; - }; - }; -} diff --git a/systems/default.nix b/systems/default.nix index f708430..441628f 100644 --- a/systems/default.nix +++ b/systems/default.nix @@ -2,24 +2,7 @@ inputs, self, ... -}: let - nixos-stable = inputs.nixpkgs-stable.lib.nixosSystem; -in { - nixosConfigurations = { - glados = { - system = "x86_64-linux"; - }; - - glados-wsl = { - system = "x86_64-linux"; - }; - - atlas = { - builder = nixos-stable; - system = "aarch64-linux"; - }; - }; - +}: { darwinConfigurations = { caroline = { system = "x86_64-darwin"; @@ -33,4 +16,21 @@ in { "atlas" ]; }; + + nixosConfigurations = let + stable = inputs.nixpkgs-stable.lib.nixosSystem; + in { + glados = { + system = "x86_64-linux"; + }; + + glados-wsl = { + system = "x86_64-linux"; + }; + + atlas = { + builder = stable; + system = "aarch64-linux"; + }; + }; } diff --git a/treefmt.nix b/treefmt.nix deleted file mode 100644 index d26409e..0000000 --- a/treefmt.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - perSystem = { - treefmt = { - projectRootFile = "flake.nix"; - - programs = { - alejandra.enable = true; - deadnix.enable = true; - prettier.enable = true; - }; - - settings.global = { - excludes = [ - "./flake.lock" - ]; - }; - }; - }; -} diff --git a/users/default.nix b/users/default.nix index fb474b8..32bb9dc 100644 --- a/users/default.nix +++ b/users/default.nix @@ -1,21 +1,5 @@ -{inputs, ...}: let - unstableFor = inputs.nixpkgs.legacyPackages; -in { +{ homeConfigurations = { - seth = { - pkgs = unstableFor.x86_64-linux; - }; - }; - - homeModules = { - seth = import ./seth/module; - }; - - nixosModules = { - seth = import ./seth/nixos.nix; - }; - - darwinModules = { - seth = import ./seth/darwin.nix; + seth = {}; }; } diff --git a/users/seth/module/base/default.nix b/users/seth/base/default.nix index b6c7571..b6c7571 100644 --- a/users/seth/module/base/default.nix +++ b/users/seth/base/default.nix diff --git a/users/seth/module/base/standalone.nix b/users/seth/base/standalone.nix index 4b02690..4b02690 100644 --- a/users/seth/module/base/standalone.nix +++ b/users/seth/base/standalone.nix diff --git a/users/seth/default.nix b/users/seth/default.nix index dfaa8d5..c7394a9 100644 --- a/users/seth/default.nix +++ b/users/seth/default.nix @@ -1,7 +1,8 @@ -{inputs, ...}: { - imports = [inputs.self.homeModules.seth]; - seth = { - enable = true; - standalone.enable = true; - }; +{ + imports = [ + ./base + ./desktop + ./programs + ./shell + ]; } diff --git a/users/seth/module/desktop/budgie/default.nix b/users/seth/desktop/budgie/default.nix index bf72ee5..bf72ee5 100644 --- a/users/seth/module/desktop/budgie/default.nix +++ b/users/seth/desktop/budgie/default.nix diff --git a/users/seth/module/desktop/default.nix b/users/seth/desktop/default.nix index d7b5176..d7b5176 100644 --- a/users/seth/module/desktop/default.nix +++ b/users/seth/desktop/default.nix diff --git a/users/seth/module/desktop/gnome/default.nix b/users/seth/desktop/gnome/default.nix index 2ed45b2..2ed45b2 100644 --- a/users/seth/module/desktop/gnome/default.nix +++ b/users/seth/desktop/gnome/default.nix diff --git a/users/seth/module/desktop/plasma/default.nix b/users/seth/desktop/plasma/default.nix index bcff9f5..bcff9f5 100644 --- a/users/seth/module/desktop/plasma/default.nix +++ b/users/seth/desktop/plasma/default.nix diff --git a/users/seth/module/desktop/plasma5/default.nix b/users/seth/desktop/plasma5/default.nix index e3735f1..e3735f1 100644 --- a/users/seth/module/desktop/plasma5/default.nix +++ b/users/seth/desktop/plasma5/default.nix diff --git a/users/seth/home.nix b/users/seth/home.nix new file mode 100644 index 0000000..ca5b7c6 --- /dev/null +++ b/users/seth/home.nix @@ -0,0 +1,7 @@ +{ + imports = [./.]; + seth = { + enable = true; + standalone.enable = true; + }; +} diff --git a/users/seth/module/default.nix b/users/seth/module/default.nix deleted file mode 100644 index c7394a9..0000000 --- a/users/seth/module/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ - imports = [ - ./base - ./desktop - ./programs - ./shell - ]; -} diff --git a/users/seth/module/programs/bat.nix b/users/seth/programs/bat.nix index a046be2..a046be2 100644 --- a/users/seth/module/programs/bat.nix +++ b/users/seth/programs/bat.nix diff --git a/users/seth/module/programs/chromium.nix b/users/seth/programs/chromium.nix index 5c44dec..5c44dec 100644 --- a/users/seth/module/programs/chromium.nix +++ b/users/seth/programs/chromium.nix diff --git a/users/seth/module/programs/default.nix b/users/seth/programs/default.nix index bc18b6e..bc18b6e 100644 --- a/users/seth/module/programs/default.nix +++ b/users/seth/programs/default.nix diff --git a/users/seth/module/programs/eza.nix b/users/seth/programs/eza.nix index 6280651..6280651 100644 --- a/users/seth/module/programs/eza.nix +++ b/users/seth/programs/eza.nix diff --git a/users/seth/module/programs/firefox/arkenfox.nix b/users/seth/programs/firefox/arkenfox.nix index 98bc107..98bc107 100644 --- a/users/seth/module/programs/firefox/arkenfox.nix +++ b/users/seth/programs/firefox/arkenfox.nix diff --git a/users/seth/module/programs/firefox/default.nix b/users/seth/programs/firefox/default.nix index ac67a31..ac67a31 100644 --- a/users/seth/module/programs/firefox/default.nix +++ b/users/seth/programs/firefox/default.nix diff --git a/users/seth/module/programs/git.nix b/users/seth/programs/git.nix index 674b3c8..674b3c8 100644 --- a/users/seth/module/programs/git.nix +++ b/users/seth/programs/git.nix diff --git a/users/seth/module/programs/gpg.nix b/users/seth/programs/gpg.nix index e709180..e709180 100644 --- a/users/seth/module/programs/gpg.nix +++ b/users/seth/programs/gpg.nix diff --git a/users/seth/module/programs/mangohud.nix b/users/seth/programs/mangohud.nix index f104823..f104823 100644 --- a/users/seth/module/programs/mangohud.nix +++ b/users/seth/programs/mangohud.nix diff --git a/users/seth/module/programs/neovim.nix b/users/seth/programs/neovim.nix index c06d513..c06d513 100644 --- a/users/seth/module/programs/neovim.nix +++ b/users/seth/programs/neovim.nix diff --git a/users/seth/module/programs/ssh.nix b/users/seth/programs/ssh.nix index 7872510..7872510 100644 --- a/users/seth/module/programs/ssh.nix +++ b/users/seth/programs/ssh.nix diff --git a/users/seth/module/programs/starship/default.nix b/users/seth/programs/starship/default.nix index ca3a99b..ca3a99b 100644 --- a/users/seth/module/programs/starship/default.nix +++ b/users/seth/programs/starship/default.nix diff --git a/users/seth/module/programs/starship/starship.toml b/users/seth/programs/starship/starship.toml index db66325..db66325 100644 --- a/users/seth/module/programs/starship/starship.toml +++ b/users/seth/programs/starship/starship.toml diff --git a/users/seth/module/programs/vim.nix b/users/seth/programs/vim.nix index a67effa..a67effa 100644 --- a/users/seth/module/programs/vim.nix +++ b/users/seth/programs/vim.nix diff --git a/users/seth/module/programs/vscode.nix b/users/seth/programs/vscode.nix index a2be13c..a2be13c 100644 --- a/users/seth/module/programs/vscode.nix +++ b/users/seth/programs/vscode.nix diff --git a/users/seth/module/shell/bash.nix b/users/seth/shell/bash.nix index 958794d..958794d 100644 --- a/users/seth/module/shell/bash.nix +++ b/users/seth/shell/bash.nix diff --git a/users/seth/module/shell/default.nix b/users/seth/shell/default.nix index b86697c..b86697c 100644 --- a/users/seth/module/shell/default.nix +++ b/users/seth/shell/default.nix diff --git a/users/seth/module/shell/fish.nix b/users/seth/shell/fish.nix index 0b37273..0b37273 100644 --- a/users/seth/module/shell/fish.nix +++ b/users/seth/shell/fish.nix diff --git a/users/seth/module/shell/nu.nix b/users/seth/shell/nu.nix index b5b1529..b5b1529 100644 --- a/users/seth/module/shell/nu.nix +++ b/users/seth/shell/nu.nix diff --git a/users/seth/module/shell/zsh.nix b/users/seth/shell/zsh.nix index b3f31b9..b3f31b9 100644 --- a/users/seth/module/shell/zsh.nix +++ b/users/seth/shell/zsh.nix diff --git a/users/seth/system.nix b/users/seth/system.nix deleted file mode 100644 index 3ca1da1..0000000 --- a/users/seth/system.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ - config, - lib, - pkgs, - inputs, - ... -}: let - cfg = config.traits.users.seth; -in { - options.traits.users.seth = { - enable = lib.mkEnableOption "Seth's user & home configurations"; - }; - - config = lib.mkIf cfg.enable { - users.users.seth = - { - shell = pkgs.fish; - home = lib.mkDefault ( - if pkgs.stdenv.isDarwin - then "/Users/seth" - else "/home/seth" - ); - } - // lib.optionalAttrs pkgs.stdenv.isLinux { - extraGroups = ["wheel"]; - isNormalUser = true; - }; - - programs.fish.enable = lib.mkDefault true; - - home-manager.users.seth = { - imports = [inputs.self.homeModules.seth]; - seth.enable = true; - }; - }; -} |
