summaryrefslogblamecommitdiff
path: root/nixos/common.nix
blob: e84001418ed61ffb688803f9db14586b0e9dc608 (plain) (tree)
1
2
3
4
5
6
7
8
9

                      





                                                                     
 



             
                                         
                          
 
















                                     
                  

    






                                          
                                        














                                         


                                    

                                 
                                                                                                                     
                                              

                                   

                                                             








                                     
                       

    
                  

                                 


                                                                     

                                                    



                                                                            





                      

    

                                                       
                                    


                                                                  

                                                                                                              



                           




                                           
           

       
          
             






                             


           

           
              
        
       


            
           
            
                 
         

        
        

           




           
          

              

          

        
      
               
          

         
             
        
 


               
                                                                    
            
               
             

       
           
                         
         


            
         
             
                    
            

                  
        
         
        
                









                                                                                   
    
 

                                    

                    



                                                                    

    
                             
 


                                   


                          
                                                             

    



                                                                           
                                        







                                                                             

 
{ config, pkgs, ... }:

let
  compiledXkbLayout = pkgs.runCommand "keyboard-layout" {} ''
    ${pkgs.xorg.xkbcomp}/bin/xkbcomp ${../xkb/symbols/custom-fr} $out
  '';
in

{
  imports = [
    ./bnc.nix
  ];

  boot.supportedFilesystems = [ "ntfs" ];
  boot.cleanTmpDir = true;

  time.timeZone = "Europe/Paris";

  i18n.defaultLocale = "en_US.UTF-8";
  i18n.extraLocaleSettings = {
    LC_ADDRESS = "fr_FR.utf8";
    LC_IDENTIFICATION = "fr_FR.utf8";
    LC_MEASUREMENT = "fr_FR.utf8";
    LC_MONETARY = "fr_FR.utf8";
    LC_NAME = "fr_FR.utf8";
    LC_NUMERIC = "fr_FR.utf8";
    LC_PAPER = "fr_FR.utf8";
    LC_TELEPHONE = "fr_FR.utf8";
    LC_TIME = "fr_FR.utf8";
  };

  console = {
    font = "sun12x22";
    keyMap = "fr";
  };

  # ---- network config ----

  networking.networkmanager.enable = true;

  services.unbound = {
    enable = true;
    resolveLocalQueries = true;
    settings.server.log-servfail = true;
  };
  services.resolved.enable = false;

  # Open ports in the firewall.
  networking.firewall.allowedTCPPorts = [
    22000 # syncthing
  ];
  networking.firewall.allowedUDPPorts = [
    22000 # syncthing
  ];
  # Or disable the firewall altogether.
  # networking.firewall.enable = false;

  # ---- apps config ----

  # Enable the X11 windowing system.
  services.xserver.enable = true;

  # Configure keymap in X11
  services.xserver.layout = "fr";
  services.xserver.displayManager.sessionCommands = "${pkgs.xorg.xkbcomp}/bin/xkbcomp ${compiledXkbLayout} $DISPLAY";
  services.xserver.xkbOptions = "caps:escape";

  # Enable CUPS to print documents.
  services.printing.enable = true;
  #services.printing.drivers = [ pkgs.cups-brother-hl1210w ];

  # Enable sound.
  sound.enable = true;
  hardware.pulseaudio.enable = false;
  services.pipewire = {
    enable = true;
    alsa.enable = true;
    alsa.support32Bit = true;
    pulse.enable = true;
    jack.enable = true;
  };

  # Enable RTL-SDR
  hardware.rtl-sdr.enable = true;

  # Enable touchpad support (enabled default in most desktopManager).
  services.xserver.libinput.enable = true;

  # -------------------- users ---------------------

  # Define a user account. Don't forget to set a password with ‘passwd’.
  users.users.lx = {
    isNormalUser = true;
    description = "Alex";
    extraGroups = [
      "networkmanager"
      "wheel"
      "yggdrasil"
      "plugdev"
    ];
  };

  # -------------------- packages ---------------------

  nixpkgs.config.allowUnfree = true;
  nix.gc.automatic = true;
  nix.gc.options = "--delete-older-than 30d";
  nix.settings.experimental-features = [ "nix-command" "flakes" ];
  nix.settings.substituters = [ "https://nix.web.deuxfleurs.fr" ];
  nix.settings.trusted-public-keys = [ "nix.web.deuxfleurs.fr:eTGL6kvaQn6cDR/F9lDYUIP9nCVR/kkshYfLDJf1yKs=" ];
  nix.extraOptions = ''
    keep-outputs = true
    keep-derivations = true
  '';

  environment.systemPackages = with pkgs; [
    home-manager

    profont
    symbola

    vim
    nixfmt
    nix-index
    aspell
    hunspell
    aspellDicts.fr
    aspellDicts.en
    hunspellDicts.fr-any
    hunspellDicts.en-us-large
    hunspellDicts.en-gb-large
    tmux
    git
    git-lfs
    pass
    openssl
    pkg-config
    htop
    i7z
    powertop
    iotop
    jnettop
    nethogs
    nvme-cli
    speedtest-cli
    socat
    ncdu
    dfc
    wget
    gcc
    gnumake
    clang
    rustc
    rustfmt
    cargo
    clippy
    rclone
    restic
    borgbackup
    nomad
    consul
    hugo
    zola
    jq
    python3Full
    ffmpeg
    gnupg
    dig
    inetutils
    file

    alacritty
    firefox
    qutebrowser
    (tor-browser-bundle-bin.override { useHardenedMalloc = false; })
    lagrange
    thunderbird
    keepassxc
    vlc
    mpv
    spotify
    jellyfin-media-player
    nheko
    gimp
    inkscape
    krita
    mupdf
    xournalpp
    nextcloud-client
    homebank
    nicotine-plus
    gnome.seahorse
    gqrx
    sdrpp
    qgis
    virt-manager

	(st.overrideAttrs (oldAttrs: rec {
	  patches = [
        #../st/st-colorschemes-0.8.5.diff
        #../st/st-copyurl-0.8.4.diff
	  ];
	  configFile = writeText "config.def.h" (builtins.readFile ../st/config.h);
	  postPatch = "${oldAttrs.postPatch}\n cp ${configFile} config.def.h";
	}))

  ];

  programs.vim.defaultEditor = true;

  programs.steam = {
    enable = true;
    remotePlay.openFirewall =
      true; # Open ports in the firewall for Steam Remote Play
    dedicatedServer.openFirewall =
      true; # Open ports in the firewall for Source Dedicated Server
  };

  programs.mtr.enable = true;

  # Enable the OpenSSH daemon.
  # services.openssh.enable = true;

  services.yggdrasil = {
    enable = true;
    persistentKeys = true;
    settings = { Peers = [ "tls://37.187.118.206:53103" ]; };
  };


  # Copy the NixOS configuration file and link it from the resulting system
  # (/run/current-system/configuration.nix). This is useful in case you
  # accidentally delete configuration.nix.
  system.copySystemConfiguration = true;

  # This value determines the NixOS release from which the default
  # settings for stateful data, like file locations and database versions
  # on your system were taken. It‘s perfectly fine and recommended to leave
  # this value at the release version of the first install of this system.
  # Before changing this value read the documentation for this option
  # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
  system.stateVersion = "22.11"; # Did you read the comment?
}