nixos-dots

nixos dots
git clone git://popovic.xyz/nixos-dots.git
Log | Files | Refs

host-frame.nix (3079B)


      1 {
      2   pkgs,
      3   hostName,
      4   ...
      5 } :
      6 {
      7   imports =
      8     [
      9       ../../users/root.nix
     10       ../../modules/nix_settings.nix
     11       ../../modules/nm.nix
     12     ];
     13 
     14   sops.defaultSopsFile = ../../secrets.yaml;
     15   sops.defaultSopsFormat = "yaml";
     16   sops.age.keyFile = "/home/mika/.config/sops/age/keys.txt";
     17 
     18   system.stateVersion = "25.11";
     19 
     20   # vm
     21   virtualisation.vmVariant = {
     22     virtualisation = {
     23       diskSize = 50 * 1028; # 50 GB
     24       memorySize = 16 * 1028; # 16 GB
     25       cores = 6;
     26       resolution = {
     27         x = 1600;
     28         y = 900;
     29       };
     30       qemu.options = [
     31         "-enable-kvm"
     32         "-cpu host"
     33         "-display gtk,zoom-to-fit=false"
     34         "-vga virtio"
     35       ];
     36     };
     37   };
     38 
     39   # boot
     40   boot = {
     41     loader = {
     42       systemd-boot.enable = true;
     43       efi.canTouchEfiVariables = true;
     44     };
     45     kernelPackages = pkgs.linuxPackages_latest;
     46     kernelParams = [
     47       "loglevel=3"
     48       "nowatchdog"
     49       "migrations=auto"
     50       "amd_iommu=on"
     51       "iommu=pt"
     52       "rtc_cmos.use_acpi_alarm=1"
     53     ];
     54   };
     55 
     56   # netowrk
     57   networking.hostName = "${hostName}";
     58   networking.wireless.enable = true;
     59 
     60   # time/locale
     61   time.timeZone = "Europe/Lisbon";
     62   i18n.defaultLocale = "en_US.UTF-8";
     63 
     64   # programs
     65   programs = {
     66     zsh.enable = true;
     67     dconf.enable = true;
     68     gnupg.agent = {
     69       enable = true;
     70       enableSSHSupport = true;
     71     };
     72   };
     73 
     74   environment.variables = {
     75     __ETC_ZSHRC_SOURCED = "1";
     76     __ETC_ZSHENV_SOURCED = "1";
     77   };
     78 
     79   # users
     80   users = {
     81     users = {
     82       mika = {
     83         isNormalUser = true;
     84         extraGroups = [ "wheel" ];
     85         initialPassword = "123";
     86         shell = pkgs.zsh;
     87       };
     88       root = {
     89         shell = pkgs.zsh;
     90       };
     91     };
     92   };
     93   security.sudo.wheelNeedsPassword = false;
     94 
     95   # services
     96   services = {
     97     upower.enable = true;
     98     fwupd.enable = true;
     99     openssh.enable = true;
    100     power-profiles-daemon.enable = true;
    101 
    102     pipewire = {
    103       enable = true;
    104       alsa.enable = true;
    105       alsa.support32Bit = true;
    106       pulse.enable = true;
    107     };
    108 
    109     xserver = {
    110       enable = true;
    111       displayManager.startx = {
    112           enable = true;
    113       };
    114     };
    115 
    116     getty.autologinUser = "mika";
    117 
    118     logind.settings.Login = {
    119       SleepOperation = "suspend-then-hibernate";
    120       HandlePowerKey = "suspend-then-hibernate";
    121       HandleLidSwitch = "suspend-then-hibernate";
    122       HandlePowerKeyLongPress = "poweroff";
    123     };
    124 
    125   };
    126 
    127   systemd.sleep.extraConfig = ''
    128     HibernateDelaySec=20m
    129   '';
    130 
    131   systemd.network.links."10-wlan0" = {
    132     matchConfig.MACAddress = "14:AC:60:29:82:AB";
    133     linkConfig.Name = "wlan0";
    134   };
    135 
    136   # hardware
    137   hardware.bluetooth.enable = true;
    138   security.rtkit.enable = true;
    139 
    140   # packages
    141   nixpkgs.config.allowUnfree = true;
    142   environment.systemPackages = with pkgs; [
    143     neovim
    144     wget
    145     git
    146     nix
    147     curl
    148     tree
    149     coreutils
    150     stdenv
    151     dbus-broker
    152     pciutils
    153     util-linux
    154     pstree
    155     wireguard-tools
    156 
    157     upower
    158     lm_sensors
    159     acpilight
    160   ];
    161 
    162   # fonts
    163   fonts.packages = with pkgs; [
    164     nerd-fonts.terminess-ttf
    165     terminus_font
    166   ];
    167 }
    168