From c52c7f314ccadcc2fcd91e28c8fd1b88f6d5ce0c Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Fri, 18 Oct 2024 17:07:46 +0200 Subject: refactor(modules): Move all system modules to `by-name` From now on all modules should be added to the new `by-name` directory. This should help remove the (superficial and utterly useless) distinction between `home-manager` and `NixOS` modules. --- modules/by-name/ni/nix/module.nix | 61 +++++++++++++++++++++++++++++++++++ modules/by-name/ni/nixpkgs/config.nix | 28 ++++++++++++++++ modules/by-name/ni/nixpkgs/module.nix | 17 ++++++++++ 3 files changed, 106 insertions(+) create mode 100644 modules/by-name/ni/nix/module.nix create mode 100644 modules/by-name/ni/nixpkgs/config.nix create mode 100644 modules/by-name/ni/nixpkgs/module.nix (limited to 'modules/by-name/ni') diff --git a/modules/by-name/ni/nix/module.nix b/modules/by-name/ni/nix/module.nix new file mode 100644 index 00000000..980bbd39 --- /dev/null +++ b/modules/by-name/ni/nix/module.nix @@ -0,0 +1,61 @@ +{ + pkgs, + # flakes + nixpkgs_as_input, + templates, + self, + system, + ... +}: { + nix = { + package = pkgs.nixVersions.latest; + + # Disable nix channels (this is a remnant of old days) + channel.enable = false; + + registry = { + nixpkgs.flake = nixpkgs_as_input; + n.flake = + nixpkgs_as_input + // { + # Otherwise nixpkgs's config and overlays are not available: + + # Both attrs exists, so we just override both and hope + outputs.legacyPackages."${system}" = pkgs; + legacyPackages."${system}" = pkgs; + }; + + t.flake = templates; + + my_flake.flake = self; + m.flake = self; + }; + + gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 7d"; + }; + + settings = { + auto-optimise-store = true; + experimental-features = [ + "nix-command" + "flakes" + #"ca-derivations" + ]; + + use-xdg-base-directories = true; + + #substituters = ["https://cache.ngi0.nixos.org/"]; + #trusted-public-keys = ["cache.ngi0.nixos.org-1:KqH5CBLNSyX184S9BKZJo1LxrxJ9ltnY2uAs5c/f1MA="]; + + fallback = true; # Build from source, if binary can't be substituted + + keep-failed = true; # keep failed tmp build dirs + pure-eval = true; # restrict file system and network access to hash + + sandbox-fallback = false; # Don't disable the sandbox, if the kernel doesn't support it + }; + }; +} diff --git a/modules/by-name/ni/nixpkgs/config.nix b/modules/by-name/ni/nixpkgs/config.nix new file mode 100644 index 00000000..1a24444d --- /dev/null +++ b/modules/by-name/ni/nixpkgs/config.nix @@ -0,0 +1,28 @@ +{ + cfg, + myPkgs, + lib, + ... +}: let + myPkgsOverlay = self: super: myPkgs; +in { + nixpkgs = { + hostPlatform = cfg.systemName; + + overlays = [ + myPkgsOverlay + ]; + + config = { + # TODO: this fails because of the root tempsize, which should be increased + # contentAddressedByDefault = true; + + hostSystem = cfg.systemName; + + allowUnfreePredicate = pkg: + builtins.elem (lib.getName pkg) [ + "pypemicro" # required by pynitrokey + ]; + }; + }; +} diff --git a/modules/by-name/ni/nixpkgs/module.nix b/modules/by-name/ni/nixpkgs/module.nix new file mode 100644 index 00000000..eda3ac89 --- /dev/null +++ b/modules/by-name/ni/nixpkgs/module.nix @@ -0,0 +1,17 @@ +{ + lib, + config, + ... +} @ args: let + cfg = config.soispha.nixpkgs; +in { + options.soispha.nixpkgs = { + enable = lib.mkEnableOption "Nixpkgs config"; + systemName = lib.mkOption { + description = "The name of the system."; + example = "x86_64-linux"; + type = lib.types.str; + }; + }; + config = lib.mkIf cfg.enable (import ./config.nix (args // {inherit cfg;})); +} -- cgit 1.4.1