diff --git a/flake.nix b/flake.nix index bc2f081..df6ff70 100644 --- a/flake.nix +++ b/flake.nix @@ -20,66 +20,47 @@ outputs = inputs @ { self, nixpkgs, agenix, home-manager, ... }: let - inherit (lib) attrValues; - inherit (lib.my) mapModules mapModulesRec; - - system = "x86_64-linux"; - - mkPkgs = pkgs: extraOverlays: - import pkgs { - inherit system; - config.allowUnfree = true; - overlays = extraOverlays ++ (lib.attrValues self.overlays); + nixpkgsForSystem = system: inputs.nixpkgs; + overlays = [ + agenix.overlays.default + (import ./overlays/gnome.nix) + ]; + commonModules = [ + agenix.nixosModules.age + home-manager.nixosModule + ./modules + ]; + nixosSystem = system: name: + let + nixpkgs = nixpkgsForSystem system; + lib = (import nixpkgs { inherit overlays system; }).lib; + in + inputs.nixpkgs.lib.nixosSystem { + inherit lib system; + specialArgs = { modulesPath = toString (nixpkgs + "/nixos/modules"); inherit inputs; }; + baseModules = import (nixpkgs + "/nixos/modules/module-list.nix"); + modules = commonModules ++ [ + ({ config, ... }: + { + nixpkgs.pkgs = import nixpkgs { + inherit overlays system; + config.allowUnfree = true; + }; + networking.hostName = name; + nix = { + extraOptions = "experimental-features = nix-command flakes"; + }; + }) + ./hosts/${name} + ]; }; - pkgs = mkPkgs nixpkgs []; - - lib = nixpkgs.lib.extend (self: super: { - my = import ./lib { - inherit pkgs inputs; - lib = self; - }; - }); - in { - lib = lib.my; - nixosConfigurations = { - atlas = nixpkgs.lib.nixosSystem { - modules = [ - home-manager.nixosModules.home-manager - { nixpkgs.overlays = [ (import ./overlays/gnome.nix) ]; } - (import ./modules) - ./hosts/atlas - ]; - specialArgs = { inherit lib inputs; }; - }; - eos = nixpkgs.lib.nixosSystem { - modules = [ - home-manager.nixosModules.home-manager - { nixpkgs.overlays = [ (import ./overlays/gnome.nix) ]; } - (import ./modules) - ./hosts/eos - ]; - specialArgs = { inherit lib inputs; }; - }; - helios = nixpkgs.lib.nixosSystem { - modules = [ - home-manager.nixosModules.home-manager - { nixpkgs.overlays = [ (import ./overlays/gnome.nix) ]; } - (import ./modules) - ./hosts/helios - ]; - specialArgs = { inherit lib inputs; }; - }; - odyssey = nixpkgs.lib.nixosSystem { - modules = [ - home-manager.nixosModules.home-manager - agenix.nixosModules.default - { nixpkgs.overlays = [ (import ./overlays/gnome.nix) ]; } - (import ./modules) - ./hosts/odyssey - ]; - specialArgs = { inherit lib inputs; }; - }; + atlas = nixosSystem "x86_64-linux" "atlas"; + eos = nixosSystem "x86_64-linux" "eos"; + helios = nixosSystem "x86_64-linux" "helios"; + odyssey = nixosSystem "x86_64-linux" "odyssey"; }; - }; + in + { inherit nixosConfigurations; }; } + diff --git a/hosts/atlas/default.nix b/hosts/atlas/default.nix index fd384f7..1314b42 100644 --- a/hosts/atlas/default.nix +++ b/hosts/atlas/default.nix @@ -1,6 +1,5 @@ { config, lib, pkgs, ... }: -with lib.my; { imports = [ ./hardware-configuration.nix diff --git a/hosts/desktop.nix b/hosts/desktop.nix index 8bf1818..387ac59 100644 --- a/hosts/desktop.nix +++ b/hosts/desktop.nix @@ -1,7 +1,5 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; { time.timeZone = "Europe/London"; diff --git a/hosts/eos/default.nix b/hosts/eos/default.nix index e2a1ffd..f21faa8 100644 --- a/hosts/eos/default.nix +++ b/hosts/eos/default.nix @@ -1,6 +1,5 @@ { config, lib, pkgs, ... }: -with lib.my; { imports = [ ./hardware-configuration.nix diff --git a/hosts/helios/default.nix b/hosts/helios/default.nix index 01b581d..b6a5a98 100644 --- a/hosts/helios/default.nix +++ b/hosts/helios/default.nix @@ -1,6 +1,5 @@ { config, lib, pkgs, ... }: -with lib.my; { imports = [ ./hardware-configuration.nix diff --git a/hosts/odyssey/default.nix b/hosts/odyssey/default.nix index 775bd96..f27e671 100644 --- a/hosts/odyssey/default.nix +++ b/hosts/odyssey/default.nix @@ -1,6 +1,5 @@ { config, lib, pkgs, ... }: -with lib.my; { imports = [ ./hardware-configuration.nix diff --git a/hosts/server.nix b/hosts/server.nix index c0a34a0..f957a59 100644 --- a/hosts/server.nix +++ b/hosts/server.nix @@ -1,7 +1,5 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; { time.timeZone = "Europe/London"; diff --git a/lib/attrs.nix b/lib/attrs.nix deleted file mode 100644 index b83e826..0000000 --- a/lib/attrs.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ lib, ... }: - -with builtins; -with lib; -rec { - # attrsToList - attrsToList = attrs: - mapAttrsToList (name: value: { inherit name value; }) attrs; - - # mapFilterAttrs :: - # (name -> value -> bool) - # (name -> value -> { name = any; value = any; }) - # attrs - mapFilterAttrs = pred: f: attrs: filterAttrs pred (mapAttrs' f attrs); - - # Generate an attribute set by mapping a function over a list of values. - genAttrs' = values: f: listToAttrs (map f values); - - # anyAttrs :: (name -> value -> bool) attrs - anyAttrs = pred: attrs: - any (attr: pred attr.name attr.value) (attrsToList attrs); - - # countAttrs :: (name -> value -> bool) attrs - countAttrs = pred: attrs: - count (attr: pred attr.name attr.value) (attrsToList attrs); -} \ No newline at end of file diff --git a/lib/default.nix b/lib/default.nix deleted file mode 100644 index 158a538..0000000 --- a/lib/default.nix +++ /dev/null @@ -1,19 +0,0 @@ - -{ inputs, lib, pkgs, ... }: - -let - inherit (lib) makeExtensible attrValues foldr; - inherit (modules) mapModules; - - modules = import ./modules.nix { - inherit lib; - self.attrs = import ./attrs.nix { inherit lib; self = {}; }; - }; - - mylib = makeExtensible (self: - with self; mapModules ./. - (file: import file { inherit self lib pkgs inputs; })); -in -mylib.extend - (self: super: - foldr (a: b: a // b) {} (attrValues super)) diff --git a/lib/modules.nix b/lib/modules.nix deleted file mode 100644 index 2124f6c..0000000 --- a/lib/modules.nix +++ /dev/null @@ -1,53 +0,0 @@ -{ self, lib, ... }: - -let - inherit (builtins) attrValues readDir pathExists concatLists; - inherit (lib) id mapAttrsToList filterAttrs hasPrefix hasSuffix nameValuePair removeSuffix; - inherit (self.attrs) mapFilterAttrs; -in -rec { - mapModules = dir: fn: - mapFilterAttrs - (n: v: - v != null && - !(hasPrefix "_" n)) - (n: v: - let path = "${toString dir}/${n}"; in - if v == "directory" && pathExists "${path}/default.nix" - then nameValuePair n (fn path) - else if v == "regular" && - n != "default.nix" && - hasSuffix ".nix" n - then nameValuePair (removeSuffix ".nix" n) (fn path) - else nameValuePair "" null) - (readDir dir); - - mapModules' = dir: fn: - attrValues (mapModules dir fn); - - mapModulesRec = dir: fn: - mapFilterAttrs - (n: v: - v != null && - !(hasPrefix "_" n)) - (n: v: - let path = "${toString dir}/${n}"; in - if v == "directory" - then nameValuePair n (mapModulesRec path fn) - else if v == "regular" && n != "default.nix" && hasSuffix ".nix" n - then nameValuePair (removeSuffix ".nix" n) (fn path) - else nameValuePair "" null) - (readDir dir); - - mapModulesRec' = dir: fn: - let - dirs = - mapAttrsToList - (k: _: "${dir}/${k}") - (filterAttrs - (n: v: v == "directory" && !(hasPrefix "_" n)) - (readDir dir)); - files = attrValues (mapModules dir id); - paths = files ++ concatLists (map (d: mapModulesRec' d id) dirs); - in map fn paths; -} \ No newline at end of file diff --git a/lib/nixos.nix b/lib/nixos.nix deleted file mode 100644 index 4595af7..0000000 --- a/lib/nixos.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ inputs, lib, pkgs, ... }: - -with lib; -with lib.my; -let sys = "x86_64-linux"; -in { - mkHost = path: attrs @ { system ? sys, ... }: - nixosSystem { - inherit system; - specialArgs = { inherit lib inputs system; }; - modules = [ - { - nixpkgs.pkgs = pkgs; - networking.hostName = mkDefault (removeSuffix ".nix" (baseNameOf path)); - } - (filterAttrs (n: v: !elem n [ "system" ]) attrs) - ../. # /default.nix - (import path) - ]; - }; - - mapHosts = dir: attrs @ { system ? system, ... }: - mapModules dir - (hostPath: mkHost hostPath attrs); -} diff --git a/lib/options.nix b/lib/options.nix deleted file mode 100644 index da61a5a..0000000 --- a/lib/options.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ lib, ... }: - -let - inherit (lib) mkOption types; -in -rec { - mkOpt = type: default: - mkOption { inherit type default; }; - - mkOpt' = type: default: description: - mkOption { inherit type default description; }; - - mkBoolOpt = default: mkOption { - inherit default; - type = types.bool; - example = true; - }; - - mkStringOpt = default: mkOption { - inherit default; - type = types.lines; - example = ""; - }; - - mkListOfStringOpt = default: mkOption { - inherit default; - type = types.listOf types.lines; - example = [ "a" "b" "c" ]; - }; - - mkPath = path: - if path != null - then toString path - else ""; -} \ No newline at end of file diff --git a/modules/desktop/apps/qbittorrent.nix b/modules/desktop/apps/qbittorrent.nix index 60b0c44..e3b59f0 100644 --- a/modules/desktop/apps/qbittorrent.nix +++ b/modules/desktop/apps/qbittorrent.nix @@ -1,16 +1,17 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.desktop.apps.qbittorrent; in { options.modules.desktop.apps.qbittorrent = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { user.packages = with pkgs; [ qbittorrent ]; }; -} \ No newline at end of file +} diff --git a/modules/desktop/apps/slack.nix b/modules/desktop/apps/slack.nix index 86e3dfd..e6abb17 100644 --- a/modules/desktop/apps/slack.nix +++ b/modules/desktop/apps/slack.nix @@ -1,14 +1,15 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.desktop.apps.slack; in { options.modules.desktop.apps.slack = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { user.packages = with pkgs; [ slack ]; diff --git a/modules/desktop/apps/thunderbird.nix b/modules/desktop/apps/thunderbird.nix index 0abe473..eea70c0 100644 --- a/modules/desktop/apps/thunderbird.nix +++ b/modules/desktop/apps/thunderbird.nix @@ -1,14 +1,15 @@ { config, lib, pkgs, inputs, ... }: -with lib; -with lib.my; let cfg = config.modules.desktop.apps.thunderbird; in { options.modules.desktop.apps.thunderbird = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { home.file.".thunderbird/Default/chrome/thunderbird-gnome-theme".source = inputs.thunderbird-gnome-theme; home.programs.thunderbird = { diff --git a/modules/desktop/apps/zoom.nix b/modules/desktop/apps/zoom.nix index 3072d8d..8c651c3 100644 --- a/modules/desktop/apps/zoom.nix +++ b/modules/desktop/apps/zoom.nix @@ -1,14 +1,15 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.desktop.apps.zoom; in { options.modules.desktop.apps.zoom = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { user.packages = with pkgs; [ zoom-us ]; diff --git a/modules/desktop/browsers/firefox.nix b/modules/desktop/browsers/firefox.nix index 4948e03..5c077c3 100644 --- a/modules/desktop/browsers/firefox.nix +++ b/modules/desktop/browsers/firefox.nix @@ -1,14 +1,15 @@ { config, lib, pkgs, inputs, ... }: -with lib; -with lib.my; let cfg = config.modules.desktop.browsers.firefox; in { options.modules.desktop.browsers.firefox = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { home.file.".mozilla/firefox/Default/chrome/firefox-gnome-theme".source = inputs.firefox-gnome-theme; home.programs.firefox = { diff --git a/modules/desktop/gaming/emulators.nix b/modules/desktop/gaming/emulators.nix index d06a89a..4b93f43 100644 --- a/modules/desktop/gaming/emulators.nix +++ b/modules/desktop/gaming/emulators.nix @@ -1,34 +1,59 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.desktop.gaming.emulators; in { options.modules.desktop.gaming.emulators = { - ds.enable = mkBoolOpt false; - gb.enable = mkBoolOpt false; - gba.enable = mkBoolOpt false; - gamecube.enable = mkBoolOpt false; - ps2.enable = mkBoolOpt false; - ps3.enable = mkBoolOpt false; - psp.enable = mkBoolOpt false; - snes.enable = mkBoolOpt false; - wii.enable = mkBoolOpt false; + ds.enable = lib.mkOption { + default = false; + example = true; + }; + gb.enable = lib.mkOption { + default = false; + example = true; + }; + gba.enable = lib.mkOption { + default = false; + example = true; + }; + gamecube.enable = lib.mkOption { + default = false; + example = true; + }; + ps2.enable = lib.mkOption { + default = false; + example = true; + }; + ps3.enable = lib.mkOption { + default = false; + example = true; + }; + psp.enable = lib.mkOption { + default = false; + example = true; + }; + snes.enable = lib.mkOption { + default = false; + example = true; + }; + wii.enable = lib.mkOption { + default = false; + example = true; + }; }; config = { user.packages = with pkgs; [ - (mkIf cfg.ps2.enable pcsx2) - (mkIf cfg.ps3.enable rpcs3) - (mkIf cfg.psp.enable ppsspp) - (mkIf cfg.ds.enable desmume) - (mkIf (cfg.gba.enable || + (lib.mkIf cfg.ps2.enable pcsx2) + (lib.mkIf cfg.ps3.enable rpcs3) + (lib.mkIf cfg.psp.enable ppsspp) + (lib.mkIf cfg.ds.enable desmume) + (lib.mkIf (cfg.gba.enable || cfg.gb.enable || cfg.snes.enable) higan) - (mkIf (cfg.wii.enable || + (lib.mkIf (cfg.wii.enable || cfg.gamecube.enable) dolphin-emu) ]; }; -} \ No newline at end of file +} diff --git a/modules/desktop/gaming/lutris.nix b/modules/desktop/gaming/lutris.nix index dffc93f..16d7f73 100644 --- a/modules/desktop/gaming/lutris.nix +++ b/modules/desktop/gaming/lutris.nix @@ -1,14 +1,15 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.desktop.gaming.lutris; in { options.modules.desktop.gaming.lutris = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { user.packages = with pkgs; [ lutris vulkan-loader diff --git a/modules/desktop/gaming/steam.nix b/modules/desktop/gaming/steam.nix index 262089a..62fb5c1 100644 --- a/modules/desktop/gaming/steam.nix +++ b/modules/desktop/gaming/steam.nix @@ -1,16 +1,17 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.desktop.gaming.steam; in { options.modules.desktop.gaming.steam = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { programs.steam.enable = true; systemd.extraConfig = "DefaultLimitNOFILE=1048576"; }; -} \ No newline at end of file +} diff --git a/modules/desktop/gnome.nix b/modules/desktop/gnome.nix index caf3e6f..bfe0521 100644 --- a/modules/desktop/gnome.nix +++ b/modules/desktop/gnome.nix @@ -1,14 +1,15 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.desktop.gnome; in { options.modules.desktop.gnome = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { services.xserver = { enable = true; displayManager.gdm.enable = true; diff --git a/modules/desktop/media/graphics.nix b/modules/desktop/media/graphics.nix index 800e7b7..d79e1f0 100644 --- a/modules/desktop/media/graphics.nix +++ b/modules/desktop/media/graphics.nix @@ -1,21 +1,28 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.desktop.media.graphics; in { options.modules.desktop.media.graphics = { - modeling.enable = mkBoolOpt false; - raster.enable = mkBoolOpt false; - vector.enable = mkBoolOpt false; + modeling.enable = lib.mkOption { + default = false; + example = true; + }; + raster.enable = lib.mkOption { + default = false; + example = true; + }; + vector.enable = lib.mkOption { + default = false; + example = true; + }; }; config = { user.packages = with pkgs; [ - (mkIf cfg.modeling.enable blender) - (mkIf cfg.raster.enable gimp) - (mkIf cfg.raster.enable krita) - (mkIf cfg.vector.enable inkscape) + (lib.mkIf cfg.modeling.enable blender) + (lib.mkIf cfg.raster.enable gimp) + (lib.mkIf cfg.raster.enable krita) + (lib.mkIf cfg.vector.enable inkscape) ]; }; -} \ No newline at end of file +} diff --git a/modules/desktop/media/recording.nix b/modules/desktop/media/recording.nix index 556fc2f..b1424bf 100644 --- a/modules/desktop/media/recording.nix +++ b/modules/desktop/media/recording.nix @@ -1,12 +1,16 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.desktop.media.recording; in { options.modules.desktop.media.recording = { - audio.enable = mkBoolOpt false; - video.enable = mkBoolOpt false; + audio.enable = lib.mkOption { + default = false; + example = true; + }; + video.enable = lib.mkOption { + default = false; + example = true; + }; }; config = { @@ -21,4 +25,4 @@ in { obs-studio ] else []); }; -} \ No newline at end of file +} diff --git a/modules/desktop/mimeapps.nix b/modules/desktop/mimeapps.nix index 55fc1f9..f098350 100644 --- a/modules/desktop/mimeapps.nix +++ b/modules/desktop/mimeapps.nix @@ -1,17 +1,18 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.desktop.mimeapps; avApp = "io.github.celluloid_player.Celluloid.desktop"; imageApp = "org.gnome.eog.desktop"; in { options.modules.desktop.mimeapps = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { xdg.mime.defaultApplications = { # Audio/video "audio/x-vorbis+ogg" = avApp; diff --git a/modules/desktop/office/libreoffice.nix b/modules/desktop/office/libreoffice.nix index ad4b6b5..bb01545 100644 --- a/modules/desktop/office/libreoffice.nix +++ b/modules/desktop/office/libreoffice.nix @@ -1,14 +1,15 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.desktop.office.libreoffice; in { options.modules.desktop.office.libreoffice = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { user.packages = with pkgs; [ libreoffice ]; diff --git a/modules/dev/cc.nix b/modules/dev/cc.nix index b711ad0..924f762 100644 --- a/modules/dev/cc.nix +++ b/modules/dev/cc.nix @@ -1,14 +1,15 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.dev.cc; in { options.modules.dev.cc = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { user.packages = with pkgs; [ clang gcc @@ -17,4 +18,4 @@ in { llvmPackages.libcxx ]; }; -} \ No newline at end of file +} diff --git a/modules/dev/java.nix b/modules/dev/java.nix index 1ec11a7..41033ad 100644 --- a/modules/dev/java.nix +++ b/modules/dev/java.nix @@ -1,16 +1,17 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.dev.java; in { options.modules.dev.java = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { user.packages = with pkgs; [ jdk ]; }; -} \ No newline at end of file +} diff --git a/modules/dev/lua.nix b/modules/dev/lua.nix index db7f5d0..547d912 100644 --- a/modules/dev/lua.nix +++ b/modules/dev/lua.nix @@ -1,16 +1,17 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.dev.lua; in { options.modules.dev.lua = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { user.packages = with pkgs; [ lua ]; }; -} \ No newline at end of file +} diff --git a/modules/dev/node.nix b/modules/dev/node.nix index 42ad34d..ca784d9 100644 --- a/modules/dev/node.nix +++ b/modules/dev/node.nix @@ -1,16 +1,17 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.dev.node; in { options.modules.dev.node = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { user.packages = with pkgs; [ nodejs_latest ]; }; -} \ No newline at end of file +} diff --git a/modules/dev/python.nix b/modules/dev/python.nix index 5ba84b0..32d0bc6 100644 --- a/modules/dev/python.nix +++ b/modules/dev/python.nix @@ -1,16 +1,17 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.dev.python; in { options.modules.dev.python = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { user.packages = with pkgs; [ python310 ]; }; -} \ No newline at end of file +} diff --git a/modules/dev/rust.nix b/modules/dev/rust.nix index 556eb35..d7767f1 100644 --- a/modules/dev/rust.nix +++ b/modules/dev/rust.nix @@ -1,14 +1,15 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.dev.rust; in { options.modules.dev.rust = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { user.packages = with pkgs; [ rustc rustup @@ -16,4 +17,4 @@ in { rust-bindgen ]; }; -} \ No newline at end of file +} diff --git a/modules/dev/scala.nix b/modules/dev/scala.nix index 08b1425..9b07f1d 100644 --- a/modules/dev/scala.nix +++ b/modules/dev/scala.nix @@ -1,18 +1,19 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.dev.scala; in { options.modules.dev.scala = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { user.packages = with pkgs; [ jdk sbt scala ]; }; -} \ No newline at end of file +} diff --git a/modules/dev/shell.nix b/modules/dev/shell.nix index 7fc8687..f3eabb2 100644 --- a/modules/dev/shell.nix +++ b/modules/dev/shell.nix @@ -1,16 +1,17 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.dev.shell; in { options.modules.dev.shell = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { user.packages = with pkgs; [ shellcheck ]; }; -} \ No newline at end of file +} diff --git a/modules/dev/zig.nix b/modules/dev/zig.nix index eaef914..e237073 100644 --- a/modules/dev/zig.nix +++ b/modules/dev/zig.nix @@ -1,16 +1,17 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.dev.zig; in { options.modules.dev.zig = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { user.packages = with pkgs; [ zig ]; }; -} \ No newline at end of file +} diff --git a/modules/editors/neovim/default.nix b/modules/editors/neovim/default.nix index 98c5f55..feecbaf 100644 --- a/modules/editors/neovim/default.nix +++ b/modules/editors/neovim/default.nix @@ -1,16 +1,17 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.editors.neovim; dev = config.modules.dev; in { options.modules.editors.neovim = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { user.packages = with pkgs; [ (neovim.override { configure = { diff --git a/modules/editors/vscode.nix b/modules/editors/vscode.nix index 01b32e4..1c525af 100644 --- a/modules/editors/vscode.nix +++ b/modules/editors/vscode.nix @@ -1,14 +1,15 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.editors.vscode; in { options.modules.editors.vscode = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { environment.sessionVariables.NIXOS_OZONE_WL = "1"; home.programs.vscode = { diff --git a/modules/networking/tailscale.nix b/modules/networking/tailscale.nix index fafd533..550d2e7 100644 --- a/modules/networking/tailscale.nix +++ b/modules/networking/tailscale.nix @@ -1,15 +1,19 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.networking.tailscale; in { options.modules.networking.tailscale = { - enable = mkBoolOpt false; - restrictSSH = mkBoolOpt true; + enable = lib.mkOption { + default = false; + example = true; + }; + restrictSSH = lib.mkOption { + default = true; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { services.tailscale.enable = true; services.openssh.openFirewall = !cfg.restrictSSH; networking.firewall = { diff --git a/modules/options.nix b/modules/options.nix index 13a6a36..da3a505 100644 --- a/modules/options.nix +++ b/modules/options.nix @@ -1,21 +1,20 @@ { config, options, lib, home-manager, ... }: with lib; -with lib.my; { options = with types; { - user = mkOpt attrs { }; + user = mkOption { type = attrs; default = { }; }; home = { - configFile = mkOpt' attrs { } "Files to place in $XDG_CONFIG_HOME"; - dataFile = mkOpt' attrs { } "Files to place in $XDG_DATA_HOME"; - file = mkOpt' attrs { } "Files to place directly in $HOME"; - packages = mkOpt' attrs { } "User-level installed packages"; - programs = mkOpt' attrs { } "Programs managed directly from home-manager"; - services = mkOpt' attrs { } "Services managed directly from home-manager"; + configFile = mkOption { type = attrs; default = { }; description = "Files to place in $XDG_CONFIG_HOME"; }; + dataFile = mkOption { type = attrs; default = { }; description = "Files to place in $XDG_DATA_HOME"; }; + file = mkOption { type = attrs; default = { }; description = "Files to place directly in $HOME"; }; + packages = mkOption { type = attrs; default = { }; description = "User-level installed packages"; }; + programs = mkOption { type = attrs; default = { }; description = "Programs managed directly from home-manager"; }; + services = mkOption { type = attrs; default = { }; description = "Services managed directly from home-manager"; }; }; - dconf.settings = mkOpt' attrs { } "dconf settings to enable"; + dconf.settings = mkOption { type = attrs; default = { }; description = "dconf settings to enable"; }; env = mkOption { type = attrsOf (oneOf [ str path (listOf (either str path)) ]); @@ -69,8 +68,6 @@ with lib.my; users.users.${config.user.name} = mkAliasDefinitions options.user; - nixpkgs.config.allowUnfree = true; - environment.extraInit = concatStringsSep "\n" (mapAttrsToList (n: v: "export ${n}=\"${v}\"") config.env); diff --git a/modules/security/gpg.nix b/modules/security/gpg.nix index deb4d6c..62d6b4b 100644 --- a/modules/security/gpg.nix +++ b/modules/security/gpg.nix @@ -1,14 +1,15 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.security.gpg; in { options.modules.security.gpg = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { home.programs.gpg = { enable = true; }; @@ -18,4 +19,4 @@ in { enableSshSupport = true; }; }; -} \ No newline at end of file +} diff --git a/modules/security/pass.nix b/modules/security/pass.nix index 511e6d8..8572551 100644 --- a/modules/security/pass.nix +++ b/modules/security/pass.nix @@ -1,17 +1,18 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.security.pass; in { options.modules.security.pass = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { home.programs.password-store = { enable = true; package = pkgs.pass.withExtensions (exts: [ exts.pass-otp ]); }; }; -} \ No newline at end of file +} diff --git a/modules/shell/git/default.nix b/modules/shell/git/default.nix index e8e129f..ac71379 100644 --- a/modules/shell/git/default.nix +++ b/modules/shell/git/default.nix @@ -1,14 +1,15 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.shell.git; in { options.modules.shell.git = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { home.programs.git = { enable = true; aliases = { @@ -35,4 +36,4 @@ in { "git/ignore".source = ./ignore; }; }; -} \ No newline at end of file +} diff --git a/modules/shell/zsh/default.nix b/modules/shell/zsh/default.nix index a7f6f14..0c35763 100644 --- a/modules/shell/zsh/default.nix +++ b/modules/shell/zsh/default.nix @@ -1,14 +1,15 @@ { config, lib, pkgs, ... }: -with lib; -with lib.my; let cfg = config.modules.shell.zsh; in { options.modules.shell.zsh = { - enable = mkBoolOpt false; + enable = lib.mkOption { + default = false; + example = true; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { users.defaultUserShell = pkgs.zsh; programs.zsh = {