summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ci.nix32
-rw-r--r--ext/openwrt.nix82
-rw-r--r--ext/terranix/default.nix29
-rw-r--r--flake.lock120
-rw-r--r--flake.nix64
-rw-r--r--lib/default.nix50
-rw-r--r--modules/darwin/traits/default.nix1
-rw-r--r--modules/darwin/traits/users.nix (renamed from users/seth/darwin.nix)6
-rw-r--r--modules/default.nix8
-rw-r--r--modules/flake/configurations.nix46
-rw-r--r--modules/flake/default.nix2
-rw-r--r--modules/flake/openwrt.nix67
-rw-r--r--modules/flake/terranix.nix55
-rw-r--r--modules/nixos/archetypes/default.nix2
-rw-r--r--modules/nixos/traits/default.nix1
-rw-r--r--modules/nixos/traits/users.nix (renamed from users/seth/nixos.nix)20
-rw-r--r--modules/shared/traits/default.nix3
-rw-r--r--modules/shared/traits/users.nix39
-rw-r--r--overlay/default.nix26
-rw-r--r--parts/checks.nix21
-rw-r--r--parts/ci.nix34
-rw-r--r--parts/default.nix11
-rw-r--r--parts/shell.nix33
-rw-r--r--pre-commit.nix15
-rw-r--r--shell.nix33
-rw-r--r--systems/default.nix36
-rw-r--r--treefmt.nix19
-rw-r--r--users/default.nix20
-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.nix13
-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.nix7
-rw-r--r--users/seth/module/default.nix8
-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.nix36
59 files changed, 379 insertions, 560 deletions
diff --git a/ci.nix b/ci.nix
deleted file mode 100644
index f3ec82a..0000000
--- a/ci.nix
+++ /dev/null
@@ -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
+ ];
+ };
};
};
}
diff --git a/flake.lock b/flake.lock
index 5161465..63b628f 100644
--- a/flake.lock
+++ b/flake.lock
@@ -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",
diff --git a/flake.nix b/flake.nix
index 6712991..a093227 100644
--- a/flake.nix
+++ b/flake.nix
@@ -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;
- };
- };
-}