diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..f60b817 --- /dev/null +++ b/flake.nix @@ -0,0 +1,19 @@ +{ + description = "NixOS system flake"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.11"; + nixos-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; + nixos-hardware.url = "github:NixOS/nixos-hardware/master"; + }; + + outputs = { self, nixpkgs, ... }@inputs: { + + nixosConfigurations.thinknix = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ ./nixos/configuration.nix ]; + # necessary to make the top-level inputs available to system configuration + specialArgs = { inherit inputs; }; + }; + }; +} diff --git a/nixos/configuration.nix b/nixos/configuration.nix index af6b0f3..df6224e 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -2,10 +2,10 @@ # your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running ‘nixos-help’). -{ config, pkgs, ... }: +{ config, pkgs, lib, inputs, ... }: let - unstable = import { }; + unstable = inputs.nixos-unstable; localfork = import /home/spiollinux/src/nixpkgs { }; in @@ -234,15 +234,22 @@ in # Enable all sysrq functions (useful to recover from some issues): boot.kernel.sysctl."kernel.sysrq" = 1; # NixOS default: 16 (only the sync command) + nix = { + # expose all flake inputs through nix Path and registry + registry = (lib.mapAttrs (_: value: { flake = value; }) inputs) // { + nixpkgs.flake = inputs.nixpkgs; + }; + nixPath = lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry; # keep build-time deps around for offline-rebuilding - nix.settings = { - # keep around all inputs necessary for offline-rebuilding the system - keep-outputs = true; - keep-derivations = true; - trusted-users = [ "spiollinux" ]; - experimental-features = [ "nix-command" "flakes" ]; - # use all cores for building - cores = 0; + settings = { + # keep around all inputs necessary for offline-rebuilding the system + keep-outputs = true; + keep-derivations = true; + trusted-users = [ "spiollinux" ]; + experimental-features = [ "nix-command" "flakes" ]; + # use all cores for building + cores = 0; + }; }; # override tmpdir for daemon #systemd.services.nix-daemon.environment.TMPDIR = "/var/tmp"; diff --git a/nixos/hardware-configuration.nix b/nixos/hardware-configuration.nix index 77fed4a..4c1b5c1 100644 --- a/nixos/hardware-configuration.nix +++ b/nixos/hardware-configuration.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, pkgs, modulesPath, inputs, ... }: let @@ -7,13 +7,8 @@ in { imports = [ - - ( - builtins.fetchGit { - url = "https://github.com/NixOS/nixos-hardware"; - rev = "a4bc66709604ab78abc575b60baa6d23ae027a59"; - } + "/lenovo/thinkpad/t440s" - ) + (modulesPath + "/installer/scan/not-detected.nix") + (inputs.nixos-hardware + "/lenovo/thinkpad/t440s") ]; boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];