Flake for my NixOS devices
at kill-rofi 73 lines 1.9 kB view raw
1{...}: { 2 pkgs, 3 inputs, 4 config, 5 lib, 6 ... 7}: { 8 time.timeZone = lib.mkDefault "America/New_York"; 9 10 environment.etc."machine-id".text = lib.mkDefault ( 11 builtins.hashString "md5" config.networking.hostName 12 ); 13 14 environment.variables."HOSTNAME" = lib.mkDefault config.networking.hostName; 15 environment.systemPackages = with pkgs; [ 16 uutils-coreutils-noprefix 17 nh 18 nix-output-monitor 19 git 20 just 21 ]; 22 environment.etc."flake-src".source = inputs.self; 23 24 programs.ssh.startAgent = true; 25 documentation.man.generateCaches = false; 26 services.upower.enable = true; 27 services.udisks2.enable = true; 28 29 boot.tmp.cleanOnBoot = lib.mkDefault true; 30 services.logind.settings.Login.RuntimeDirectorySize = lib.mkDefault "100M"; 31 32 # Make Nix builder lower OOM priority so it's killed before other stuff 33 systemd.services.nix-daemon.serviceConfig.OOMScoreAdjust = lib.mkDefault 250; 34 35 # Keep flake inputs when GC-ing 36 system.extraDependencies = with builtins; let 37 flakeDeps = flake: 38 [flake.outPath] ++ (foldl' (a: b: a ++ b) [] (map flakeDeps (attrValues flake.inputs or {}))); 39 in 40 flakeDeps inputs.self; 41 42 boot = { 43 initrd.systemd = { 44 enable = lib.mkDefault true; 45 }; 46 47 # Use latest kernel with sysrqs and lockdown enabled 48 kernelPackages = lib.mkDefault pkgs.linuxPackages_latest; 49 kernelParams = lib.mkDefault ["lockdown=confidentiality"]; 50 kernel.sysctl."kernel.sysrq" = lib.mkDefault 1; 51 }; 52 53 nix = { 54 channel.enable = false; 55 registry.p.flake = inputs.self; 56 package = pkgs.lix; 57 settings = { 58 # So we can do `import <nixpkgs>` 59 nix-path = "nixpkgs=${inputs.nixpkgs}"; 60 experimental-features = [ 61 "nix-command" 62 "flakes" 63 "pipe-operator" 64 ]; 65 auto-optimise-store = true; 66 fallback = true; 67 }; 68 gc = { 69 automatic = lib.mkDefault false; 70 dates = lib.mkDefault "weekly"; 71 }; 72 }; 73}