зеркало из
				https://github.com/iharh/notes.git
				synced 2025-11-02 22:56:09 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			203 строки
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			203 строки
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
WillTaylor - NixOS of 8 parts
 | 
						|
    https://www.youtube.com/playlist?list=PL-saUBvIJzOkjAw_vOac75v-x6EzNzZq-
 | 
						|
    p7 - Moving Nixos System Configuration Into A Flake 17:40 of 33:12
 | 
						|
        https://www.youtube.com/watch?v=mJbQ--iBc1U
 | 
						|
        ! 2:30 nix.package = pkgs.nixFlakes
 | 
						|
               nix.extraOptions = ''
 | 
						|
                  experimental-features = nix-command flakes
 | 
						|
               '';
 | 
						|
        ! 4:30 nix flake init
 | 
						|
               vim flake.nix
 | 
						|
                {
 | 
						|
                   inputs = {
 | 
						|
                      nixpkgs.url = "nixpkgs/nixos-unstable";
 | 
						|
                      home-manager.url = "github:nix-community/home-manager/release-20.09";
 | 
						|
                      home-manager.inputs.nixpkgs.follows = "nixpkgs";
 | 
						|
                   };
 | 
						|
                   outputs = { self, nixpkgs, home-manager, ... }:
 | 
						|
                   let
 | 
						|
                      system = "x86_64-linux";
 | 
						|
                      pkgs = import nixpkgs {
 | 
						|
                        inherit system;
 | 
						|
                        config = { allowUnfree = true; };
 | 
						|
                      };
 | 
						|
                      lib = nixpkgs.lib;
 | 
						|
                   in {
 | 
						|
                      homeManagerConfigurations = {
 | 
						|
                        wil = home-manager.lib.homeManagerConfiguration {
 | 
						|
                          inherit system pkgs;
 | 
						|
                          username = "wil";
 | 
						|
                          homeDirectory = "/home/wil";
 | 
						|
                          configuration = {
 | 
						|
                            import = [
 | 
						|
                              ./users/wil/home.nix
 | 
						|
                            ];
 | 
						|
                          };
 | 
						|
                        };
 | 
						|
                      };
 | 
						|
                      nixosConfigurations = {
 | 
						|
                        testbox = lib.nixosSystem {
 | 
						|
                          inherit system;
 | 
						|
                          modules = [
 | 
						|
                            ...
 | 
						|
                          ];
 | 
						|
                        };
 | 
						|
                      };
 | 
						|
                   };
 | 
						|
                }
 | 
						|
        ! 17:00 nixos-rebuild build --flake .#<f-name>
 | 
						|
        !       cat result/activate - massive script
 | 
						|
        ! 20:00 nix flake update --recreate-lock-file
 | 
						|
        ! 25:00 nix build .#homeManagerConfigurations.wil.activationPackage
 | 
						|
        ! 26:30 # home-manager switch -f ./users/wil/home.nix
 | 
						|
        ! 27:00 nix build .#homeManagerConfigurations.wil.activationPackage
 | 
						|
                ./result/activate
 | 
						|
    p6 - Intro to Flakes of 19:31
 | 
						|
        https://www.youtube.com/watch?v=K54KKAx2wNc
 | 
						|
        ! nix = {
 | 
						|
            extraOptions = "experimental-features = nix-command flakes";
 | 
						|
            package = pkgs.nixFlakes; // nix-shell -iA !!!
 | 
						|
        ! }
 | 
						|
        ! 4:00 put this into shell.nix
 | 
						|
            { pkgs ? import <nixpkgs> {} }:
 | 
						|
            pkgs.mkShell {
 | 
						|
              name = "MyAwesomeShell";
 | 
						|
              buildInputs = with pkgs; [
 | 
						|
                nixFlakes
 | 
						|
              ];
 | 
						|
 | 
						|
              shellHook = ''
 | 
						|
                echo "Welcome to my awesome shell";
 | 
						|
              '';
 | 
						|
            }
 | 
						|
        ! 4:40 nix flake
 | 
						|
        !         init
 | 
						|
        !         --help
 | 
						|
        !         info
 | 
						|
        !         list-inputs
 | 
						|
        !         update [--recreate-lock-file]
 | 
						|
        !         show
 | 
						|
        !      nix registry
 | 
						|
                  list
 | 
						|
    p5 - Nix Shell of 10:36
 | 
						|
        https://www.youtube.com/watch?v=SGekN4pDExY
 | 
						|
        ! 3:00 nix-shell -p <package-name>
 | 
						|
        !      nix-shell -p hello --run hello
 | 
						|
        ! 4:30 put this into shell.nix
 | 
						|
            { pkgs ? import <nixpkgs> {} }:
 | 
						|
            let
 | 
						|
               myScript = pkgs.writeScriptBin "foobar" ''
 | 
						|
                  echo "Foobar";
 | 
						|
               '';
 | 
						|
            in pkgs.mkShell {
 | 
						|
              name = "MyAwesomeShell";
 | 
						|
              buildInputs = with pkgs; [
 | 
						|
                figlet
 | 
						|
                myScript
 | 
						|
              ];
 | 
						|
 | 
						|
              shellHook = ''
 | 
						|
                echo "Welcome to my awesome shell";
 | 
						|
              '';
 | 
						|
            }
 | 
						|
        ! and then just type "nix-shell"
 | 
						|
    p4 - Nix Language Overview of 30:50
 | 
						|
        https://www.youtube.com/watch?v=eCapIx9heBw
 | 
						|
        ! 9:00 strAttr = ''
 | 
						|
        !         multi line string
 | 
						|
        !      '';
 | 
						|
        ! sets, lists, functions
 | 
						|
        ! 11:00 functions cat get sets as params
 | 
						|
        ! 13:00 derivation {
 | 
						|
        !     system = "x86_64-linux";
 | 
						|
        !     name = "foo";
 | 
						|
        !     builder = ./builder.sh;
 | 
						|
        !     outputs = [ "out" ];
 | 
						|
        ! };
 | 
						|
        ! Better ways - mkDerivation, runCommand, writeScriptBin
 | 
						|
        ! 14:30 with
 | 
						|
        !   environment.systemPackages = with pkgs; [
 | 
						|
        !     git   # pkgs.git
 | 
						|
        !   ]
 | 
						|
        ! 15:30 import
 | 
						|
        !   x = import ./myfile.nix;
 | 
						|
        !   y = import ./folder;  # loads ./folder/default.nix
 | 
						|
        ! 17:30 inherit
 | 
						|
        !   inherit x;
 | 
						|
        !   x = x;
 | 
						|
        ! 18:00 if
 | 
						|
        !   new_val = if x == 7 then "yes" else "no";
 | 
						|
        ! 19:30 let
 | 
						|
        !   let
 | 
						|
        !     x = 7;
 | 
						|
        !   in {
 | 
						|
        !     y = x;
 | 
						|
        !   }
 | 
						|
        ! 21:00 nix repl (c+d to exit)
 | 
						|
        ! 28:00 man - Trivial Builders
 | 
						|
    p3 - NixOS Filesystem Overview of 20:00
 | 
						|
        https://www.youtube.com/watch?v=jf0nIn2oS8A
 | 
						|
        ! /etc is RO
 | 
						|
        ! /run/current-system/sw/bin
 | 
						|
        ! ~/.nix-profile/bin
 | 
						|
        ! PATH=/run/wrappers/bin:~/.nix-profile/bin:/etc/profiles/per-user/<user>/bin:
 | 
						|
        ! /nix/var/nix/profiles/default/bin:/run/current-system/sw/bin:~/.zsh/plugins/spaceship/prompt
 | 
						|
        ! our compiled cfg goes to
 | 
						|
        !   /run/current-system/sw/
 | 
						|
        ! RO fs mount for
 | 
						|
        !   /nix/store
 | 
						|
        ! man nix-store
 | 
						|
        !   gc
 | 
						|
        !   --optimize
 | 
						|
        ! let's check ~/.nix-profile
 | 
						|
        !   stuff by home-manager
 | 
						|
        ! /var/nix/profile/
 | 
						|
        !     system -> system-<NNN>-link
 | 
						|
        ! /nix/profiles/per-user/<username>
 | 
						|
        !     home-manager
 | 
						|
        !     profile -> profile-<NNN>-link
 | 
						|
        !     system -> system-<NNN>-link
 | 
						|
        !     activate script
 | 
						|
        ! /etc/nix/
 | 
						|
        !     nix.conf
 | 
						|
        ! /etc/nixos/
 | 
						|
        !     ???
 | 
						|
        ! $ nix log /nix/store/<path-to-folder>
 | 
						|
    p2 - Putting Config into Git of 31:29
 | 
						|
        https://www.youtube.com/watch?v=Dy3KHMuDNS8
 | 
						|
            ~/.config/nixpkgs/home.nix,
 | 
						|
                this is the file that home-manager uses by default as it's entry point.
 | 
						|
            with home-manager
 | 
						|
                https://hugoreeves.com/posts/2019/nix-home/
 | 
						|
            cd ~/.config/nixpkgs; git pull; home-manager switch
 | 
						|
                https://github.com/HugoReeves/nix-home/
 | 
						|
        ! 6:30 sudo nixos-rebuild switch -I nixos-config=./system/configuration.nix
 | 
						|
        ! 8:30 home-manager switch -f ./users/will/home.nix
 | 
						|
        ! 14:00 home-manager news
 | 
						|
        ! 17:00 home.nix: enable program.gpg, services.gpg-agent
 | 
						|
        !       home.packages - git-crypt, gnupg, pinentry_qt
 | 
						|
        ! 18:20 gpg --generate-key
 | 
						|
        ! 19:50 gpg --list-key
 | 
						|
        !       gpg --output ../public.gpg --armor --export <my-email>
 | 
						|
        !       gpg --output ../private.gpg --armor --export-secret-key <my-email>
 | 
						|
        !       gpg --edit-key <my-email>
 | 
						|
        !           trust ... quit
 | 
						|
        ! 23:30 git config --global user.email|name ...
 | 
						|
        !       git crypt init
 | 
						|
        !       git crypt add-gpg-user <my-email>
 | 
						|
        !   # ~/.git-crypt/
 | 
						|
        !         keys/
 | 
						|
        !       git crypt export-key ../gitgpg.key
 | 
						|
        !       mkdir ~/.secrets # and put some files inside
 | 
						|
        ! 27:58       
 | 
						|
        !       ~/.gitattributes:
 | 
						|
        !           .secrets/** filter=git-crypt diff=git-crypt
 | 
						|
        ! 29:30 git crypt lock
 | 
						|
 | 
						|
    p2 - Install of 55:33
 | 
						|
        https://www.youtube.com/watch?v=axOxLJ4BWmY
 | 
						|
        ! 18:00 - users.user.will = ...
 | 
						|
        ! 23:00 - at hardware-configuration.nix swapDevices = [ device = "/.swapfile"; ]
 | 
						|
    p1 of 10:47
 | 
						|
        https://www.youtube.com/watch?v=QKoQ1gKJY5A
 |