forked from jan-leila/nix-config
		
	reconfigured how home manager gets applied
This commit is contained in:
		
							parent
							
								
									26b231a329
								
							
						
					
					
						commit
						ff295dc7ac
					
				
					 8 changed files with 438 additions and 361 deletions
				
			
		|  | @ -30,6 +30,7 @@ | |||
| - Look into this for flake templates https://nix.dev/manual/nix/2.22/command-ref/new-cli/nix3-flake-init | ||||
| - Look into this for headscale https://carlosvaz.com/posts/setting-up-headscale-on-nixos/ | ||||
| - Look into this for home assistant configuration https://nixos.wiki/wiki/Home_Assistant https://myme.no/posts/2021-11-25-nixos-home-assistant.html | ||||
| - This person seams to know what they are doing with home manager https://github.com/arvigeus/nixos-config/ | ||||
| 
 | ||||
| ## Configuration | ||||
| set up git configuration for local development: `git config --local include.path .gitconfig` | ||||
|  |  | |||
							
								
								
									
										14
									
								
								flake.nix
									
										
									
									
									
								
							
							
						
						
									
										14
									
								
								flake.nix
									
										
									
									
									
								
							|  | @ -71,13 +71,13 @@ | |||
|         modules = [ | ||||
|           ./hosts/horizon/configuration.nix | ||||
|           nixos-hardware.nixosModules.framework-11th-gen-intel | ||||
|           home-manager.nixosModules.default | ||||
|           # { | ||||
|           #   home-manager.useGlobalPkgs = true; | ||||
|           #   home-manager.useUserPackages = true; | ||||
|           #   home-manager.extraSpecialArgs = { inherit inputs; }; | ||||
|           #   home-manager.users = import ./users; | ||||
|           # } | ||||
|           home-manager.nixosModules.home-manager | ||||
|           { | ||||
|             home-manager.useGlobalPkgs = true; | ||||
|             home-manager.useUserPackages = true; | ||||
|             home-manager.backupFileExtension = "backup"; | ||||
|             home-manager.extraSpecialArgs = { inherit inputs; }; | ||||
|           } | ||||
|         ]; | ||||
|       }; | ||||
|       # Leyla Desktop | ||||
|  |  | |||
|  | @ -14,6 +14,10 @@ | |||
|     ../../enviroments/client | ||||
|   ]; | ||||
| 
 | ||||
|   home-manager.users.leyla.config = { | ||||
|     isFullUser = true; | ||||
|   }; | ||||
| 
 | ||||
|   users = { | ||||
|     leyla.isFullUser = true; | ||||
|     ester.isFullUser = true; | ||||
|  |  | |||
|  | @ -4,4 +4,5 @@ | |||
|   users.mutableUsers = false; | ||||
| 
 | ||||
|   home-manager.extraSpecialArgs = {inherit inputs;}; | ||||
|   home-manager.users = import ./home.nix; | ||||
| } | ||||
|  |  | |||
							
								
								
									
										5
									
								
								users/home.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								users/home.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | |||
| { | ||||
|   leyla = import ./leyla/home.nix; | ||||
|   # ester = import ./ester/home.nix; | ||||
|   # eve = import ./eve/home.nix; | ||||
| } | ||||
|  | @ -6,9 +6,9 @@ | |||
| }: let | ||||
|   cfg = config.users.leyla; | ||||
| in { | ||||
|   imports = [ | ||||
|     ./packages.nix | ||||
|   ]; | ||||
|   # imports = [ | ||||
|   #   ./packages.nix | ||||
|   # ]; | ||||
| 
 | ||||
|   options.users.leyla = { | ||||
|     isFullUser = lib.mkEnableOption "create usable leyla user"; | ||||
|  | @ -69,6 +69,6 @@ in { | |||
|       ]; | ||||
|     }; | ||||
| 
 | ||||
|     home-manager.users.leyla = lib.mkIf (cfg.isFullUser || cfg.isThinUser) (import ./home.nix); | ||||
|     # home-manager.users.leyla = lib.mkIf (cfg.isFullUser || cfg.isThinUser) (import ./home.nix); | ||||
|   }; | ||||
| } | ||||
|  |  | |||
|  | @ -1,259 +1,272 @@ | |||
| { | ||||
|   lib, | ||||
|   config, | ||||
|   pkgs, | ||||
|   ... | ||||
| }: { | ||||
|   # Home Manager needs a bit of information about you and the paths it should | ||||
|   # manage. | ||||
|   home = { | ||||
|     username = "leyla"; | ||||
|     homeDirectory = "/home/leyla"; | ||||
|   imports = [ | ||||
|     ./packages.nix | ||||
|   ]; | ||||
| 
 | ||||
|     # This value determines the Home Manager release that your configuration is | ||||
|     # compatible with. This helps avoid breakage when a new Home Manager release | ||||
|     # introduces backwards incompatible changes. | ||||
|     # | ||||
|     # You should not change this value, even if you update Home Manager. If you do | ||||
|     # want to update the value, then make sure to first check the Home Manager | ||||
|     # release notes. | ||||
|     stateVersion = "23.11"; # Please read the comment before changing. | ||||
| 
 | ||||
|     # The home.packages option allows you to install Nix packages into your | ||||
|     # environment. | ||||
|     packages = [ | ||||
|       # # Adds the 'hello' command to your environment. It prints a friendly | ||||
|       # # "Hello, world!" when run. | ||||
|       # pkgs.hello | ||||
| 
 | ||||
|       # # It is sometimes useful to fine-tune packages, for example, by applying | ||||
|       # # overrides. You can do that directly here, just don't forget the | ||||
|       # # parentheses. Maybe you want to install Nerd Fonts with a limited number of | ||||
|       # # fonts? | ||||
|       # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; }) | ||||
| 
 | ||||
|       # # You can also create simple shell scripts directly inside your | ||||
|       # # configuration. For example, this adds a command 'my-hello' to your | ||||
|       # # environment: | ||||
|       # (pkgs.writeShellScriptBin "my-hello" '' | ||||
|       #   echo "Hello, ${config.home.username}!" | ||||
|       # '') | ||||
|     ]; | ||||
| 
 | ||||
|     # Home Manager is pretty good at managing dotfiles. The primary way to manage | ||||
|     # plain files is through 'home.file'. | ||||
|     file = { | ||||
|       # # Building this configuration will create a copy of 'dotfiles/screenrc' in | ||||
|       # # the Nix store. Activating the configuration will then make '~/.screenrc' a | ||||
|       # # symlink to the Nix store copy. | ||||
|       # ".screenrc".source = dotfiles/screenrc; | ||||
| 
 | ||||
|       # # You can also set the file content immediately. | ||||
|       # ".gradle/gradle.properties".text = '' | ||||
|       #   org.gradle.console=verbose | ||||
|       #   org.gradle.daemon.idletimeout=3600000 | ||||
|       # ''; | ||||
|     }; | ||||
| 
 | ||||
|     # Home Manager can also manage your environment variables through | ||||
|     # 'home.sessionVariables'. If you don't want to manage your shell through Home | ||||
|     # Manager then you have to manually source 'hm-session-vars.sh' located at | ||||
|     # either | ||||
|     # | ||||
|     #  ~/.nix-profile/etc/profile.d/hm-session-vars.sh | ||||
|     # | ||||
|     # or | ||||
|     # | ||||
|     #  ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh | ||||
|     # | ||||
|     # or | ||||
|     # | ||||
|     #  /etc/profiles/per-user/leyla/etc/profile.d/hm-session-vars.sh | ||||
|     # | ||||
|     sessionVariables = { | ||||
|       # EDITOR = "emacs"; | ||||
|     }; | ||||
|   options = { | ||||
|     isFullUser = lib.mkEnableOption "create usable leyla user"; | ||||
|     isThinUser = lib.mkEnableOption "create usable user but witohut user applications"; | ||||
|     hasGPU = lib.mkEnableOption "installs gpu intensive programs"; | ||||
|   }; | ||||
| 
 | ||||
|   programs = { | ||||
|     # Let Home Manager install and manage itself. | ||||
|     home-manager.enable = true; | ||||
|   config = { | ||||
|     # Home Manager needs a bit of information about you and the paths it should | ||||
|     # manage. | ||||
|     home = { | ||||
|       username = "leyla"; | ||||
|       homeDirectory = "/home/leyla"; | ||||
| 
 | ||||
|     # set up git defaults | ||||
|     git = { | ||||
|       enable = true; | ||||
|       userName = "Leyla Becker"; | ||||
|       userEmail = "git@jan-leila.com"; | ||||
|       extraConfig.init.defaultBranch = "main"; | ||||
|       # This value determines the Home Manager release that your configuration is | ||||
|       # compatible with. This helps avoid breakage when a new Home Manager release | ||||
|       # introduces backwards incompatible changes. | ||||
|       # | ||||
|       # You should not change this value, even if you update Home Manager. If you do | ||||
|       # want to update the value, then make sure to first check the Home Manager | ||||
|       # release notes. | ||||
|       stateVersion = "23.11"; # Please read the comment before changing. | ||||
| 
 | ||||
|       # The home.packages option allows you to install Nix packages into your | ||||
|       # environment. | ||||
|       packages = [ | ||||
|         # # Adds the 'hello' command to your environment. It prints a friendly | ||||
|         # # "Hello, world!" when run. | ||||
|         # pkgs.hello | ||||
| 
 | ||||
|         # # It is sometimes useful to fine-tune packages, for example, by applying | ||||
|         # # overrides. You can do that directly here, just don't forget the | ||||
|         # # parentheses. Maybe you want to install Nerd Fonts with a limited number of | ||||
|         # # fonts? | ||||
|         # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; }) | ||||
| 
 | ||||
|         # # You can also create simple shell scripts directly inside your | ||||
|         # # configuration. For example, this adds a command 'my-hello' to your | ||||
|         # # environment: | ||||
|         # (pkgs.writeShellScriptBin "my-hello" '' | ||||
|         #   echo "Hello, ${config.home.username}!" | ||||
|         # '') | ||||
|       ]; | ||||
| 
 | ||||
|       # Home Manager is pretty good at managing dotfiles. The primary way to manage | ||||
|       # plain files is through 'home.file'. | ||||
|       file = { | ||||
|         # # Building this configuration will create a copy of 'dotfiles/screenrc' in | ||||
|         # # the Nix store. Activating the configuration will then make '~/.screenrc' a | ||||
|         # # symlink to the Nix store copy. | ||||
|         # ".screenrc".source = dotfiles/screenrc; | ||||
| 
 | ||||
|         # # You can also set the file content immediately. | ||||
|         # ".gradle/gradle.properties".text = '' | ||||
|         #   org.gradle.console=verbose | ||||
|         #   org.gradle.daemon.idletimeout=3600000 | ||||
|         # ''; | ||||
|       }; | ||||
| 
 | ||||
|       # Home Manager can also manage your environment variables through | ||||
|       # 'home.sessionVariables'. If you don't want to manage your shell through Home | ||||
|       # Manager then you have to manually source 'hm-session-vars.sh' located at | ||||
|       # either | ||||
|       # | ||||
|       #  ~/.nix-profile/etc/profile.d/hm-session-vars.sh | ||||
|       # | ||||
|       # or | ||||
|       # | ||||
|       #  ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh | ||||
|       # | ||||
|       # or | ||||
|       # | ||||
|       #  /etc/profiles/per-user/leyla/etc/profile.d/hm-session-vars.sh | ||||
|       # | ||||
|       sessionVariables = { | ||||
|         # EDITOR = "emacs"; | ||||
|       }; | ||||
|     }; | ||||
| 
 | ||||
|     # add direnv to auto load flakes for development | ||||
|     direnv = { | ||||
|       enable = true; | ||||
|       enableBashIntegration = true; # see note on other shells below | ||||
|       nix-direnv.enable = true; | ||||
|     programs = { | ||||
|       # Let Home Manager install and manage itself. | ||||
|       home-manager.enable = true; | ||||
| 
 | ||||
|       # set up git defaults | ||||
|       git = { | ||||
|         enable = true; | ||||
|         userName = "Leyla Becker"; | ||||
|         userEmail = "git@jan-leila.com"; | ||||
|         extraConfig.init.defaultBranch = "main"; | ||||
|       }; | ||||
| 
 | ||||
|       # add direnv to auto load flakes for development | ||||
|       direnv = { | ||||
|         enable = true; | ||||
|         enableBashIntegration = true; # see note on other shells below | ||||
|         nix-direnv.enable = true; | ||||
|       }; | ||||
|       bash.enable = true; # see note on other shells below | ||||
|        | ||||
|       # firefox = { | ||||
|       #   enable = true; | ||||
|       #   profiles.leyla = { | ||||
| 
 | ||||
|       #     settings = { | ||||
|       #         "browser.search.defaultenginename" = "Searx"; | ||||
|       #         "browser.search.order.1" = "Searx"; | ||||
|       #     }; | ||||
| 
 | ||||
|       #     search = { | ||||
|       #       force = true; | ||||
|       #       default = "Searx"; | ||||
|       #       engines = { | ||||
|       #         "Nix Packages" = { | ||||
|       #           urls = [{ | ||||
|       #             template = "https://search.nixos.org/packages"; | ||||
|       #             params = [ | ||||
|       #               { name = "type"; value = "packages"; } | ||||
|       #               { name = "query"; value = "{searchTerms}"; } | ||||
|       #             ]; | ||||
|       #           }]; | ||||
|       #           icon = "''${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; | ||||
|       #           definedAliases = [ "@np" ]; | ||||
|       #         }; | ||||
|       #         "NixOS Wiki" = { | ||||
|       #           urls = [{ template = "https://nixos.wiki/index.php?search={searchTerms}"; }]; | ||||
|       #           iconUpdateURL = "https://nixos.wiki/favicon.png"; | ||||
|       #           updateInterval = 24 * 60 * 60 * 1000; # every day | ||||
|       #           definedAliases = [ "@nw" ]; | ||||
|       #         }; | ||||
|       #         "Searx" = { | ||||
|       #           urls = [{ template = "https://search.jan-leila.com/?q={searchTerms}"; }]; | ||||
|       #           iconUpdateURL = "https://nixos.wiki/favicon.png"; | ||||
|       #           updateInterval = 24 * 60 * 60 * 1000; # every day | ||||
|       #           definedAliases = [ "@searx" ]; | ||||
|       #         }; | ||||
|       #       }; | ||||
|       #     }; | ||||
| 
 | ||||
|       #     extentions = with pkgs.nur.repos.rycee.firefox-addons; [ | ||||
|       #         ublock-origin | ||||
|       #         bitwarden | ||||
| 
 | ||||
|       #     ]; | ||||
| 
 | ||||
|       #     bookmarks = [ | ||||
|       #       { | ||||
|       #         name = "Media"; | ||||
|       #         url = "https://jellyfin.jan-leila.com/"; | ||||
|       #         keyword = ""; | ||||
|       #         tags = [""]; | ||||
|       #       } | ||||
|       #       { | ||||
|       #         name = "Drive"; | ||||
|       #         url = "https://drive.jan-leila.com/"; | ||||
|       #         keyword = ""; | ||||
|       #         tags = [""]; | ||||
|       #       } | ||||
|       #       { | ||||
|       #         name = "Git"; | ||||
|       #         url = "https://git.jan-leila.com/"; | ||||
|       #         keyword = ""; | ||||
|       #         tags = [""]; | ||||
|       #       } | ||||
|       #       { | ||||
|       #         name = "Home Automation"; | ||||
|       #         url = "https://home-assistant.jan-leila.com/"; | ||||
|       #         keyword = ""; | ||||
|       #         tags = [""]; | ||||
|       #       } | ||||
|       #       { | ||||
|       #         name = "Mail"; | ||||
|       #         url = "https://mail.protonmail.com"; | ||||
|       #         keyword = ""; | ||||
|       #         tags = [""]; | ||||
|       #       } | ||||
|       #       { | ||||
|       #         name = "Open Street Map"; | ||||
|       #         url = "https://www.openstreetmap.org/"; | ||||
|       #         keyword = ""; | ||||
|       #         tags = [""]; | ||||
|       #       } | ||||
|       #       { | ||||
|       #         name = "Password Manager"; | ||||
|       #         url = "https://vault.bitwarden.com/"; | ||||
|       #         keyword = ""; | ||||
|       #         tags = [""]; | ||||
|       #       } | ||||
|       #       { | ||||
|       #         name = "Mastodon"; | ||||
|       #         url = "https://tech.lgbt"; | ||||
|       #         keyword = ""; | ||||
|       #         tags = [""]; | ||||
|       #       } | ||||
|       #       { | ||||
|       #         name = "Linked In"; | ||||
|       #         url = "https://www.linkedin.com/"; | ||||
|       #         keyword = ""; | ||||
|       #         tags = [""]; | ||||
|       #       } | ||||
|       #       { | ||||
|       #         name = "Job Search"; | ||||
|       #         url = "https://www.jobsinnetwork.com/?state=cleaned_history&language%5B%5D=en&query=react&locations.countryCode%5B%5D=IT&locations.countryCode%5B%5D=DE&locations.countryCode%5B%5D=NL&experience%5B%5D=medior&experience%5B%5D=junior&page=1"; | ||||
|       #         keyword = ""; | ||||
|       #         tags = [""]; | ||||
|       #       } | ||||
|       #       { | ||||
|       #         name = "React Docs"; | ||||
|       #         url = "https://react.dev/"; | ||||
|       #         keyword = ""; | ||||
|       #         tags = [""]; | ||||
|       #       } | ||||
|       #       # Template | ||||
|       #       # { | ||||
|       #       #   name = ""; | ||||
|       #       #   url = ""; | ||||
|       #       #   keyword = ""; | ||||
|       #       #   tags = [""]; | ||||
|       #       # } | ||||
|       #     ]; | ||||
|       #   }; | ||||
|       # } | ||||
|     }; | ||||
|     bash.enable = true; # see note on other shells below | ||||
| 
 | ||||
|     # firefox = { | ||||
|     #   enable = true; | ||||
|     #   profiles.leyla = { | ||||
|     dconf = { | ||||
|       enable = true; | ||||
|       settings = { | ||||
|         "org/gnome/desktop/interface".color-scheme = "prefer-dark"; | ||||
| 
 | ||||
|     #     settings = { | ||||
|     #         "browser.search.defaultenginename" = "Searx"; | ||||
|     #         "browser.search.order.1" = "Searx"; | ||||
|     #     }; | ||||
|         "org/gnome/shell" = { | ||||
|           disable-user-extensions = false; # enables user extensions | ||||
|           enabled-extensions = [ | ||||
|             # Put UUIDs of extensions that you want to enable here. | ||||
|             # If the extension you want to enable is packaged in nixpkgs, | ||||
|             # you can easily get its UUID by accessing its extensionUuid | ||||
|             # field (look at the following example). | ||||
|             pkgs.gnomeExtensions.dash-to-dock.extensionUuid | ||||
| 
 | ||||
|     #     search = { | ||||
|     #       force = true; | ||||
|     #       default = "Searx"; | ||||
|     #       engines = { | ||||
|     #         "Nix Packages" = { | ||||
|     #           urls = [{ | ||||
|     #             template = "https://search.nixos.org/packages"; | ||||
|     #             params = [ | ||||
|     #               { name = "type"; value = "packages"; } | ||||
|     #               { name = "query"; value = "{searchTerms}"; } | ||||
|     #             ]; | ||||
|     #           }]; | ||||
|     #           icon = "''${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; | ||||
|     #           definedAliases = [ "@np" ]; | ||||
|     #         }; | ||||
|     #         "NixOS Wiki" = { | ||||
|     #           urls = [{ template = "https://nixos.wiki/index.php?search={searchTerms}"; }]; | ||||
|     #           iconUpdateURL = "https://nixos.wiki/favicon.png"; | ||||
|     #           updateInterval = 24 * 60 * 60 * 1000; # every day | ||||
|     #           definedAliases = [ "@nw" ]; | ||||
|     #         }; | ||||
|     #         "Searx" = { | ||||
|     #           urls = [{ template = "https://search.jan-leila.com/?q={searchTerms}"; }]; | ||||
|     #           iconUpdateURL = "https://nixos.wiki/favicon.png"; | ||||
|     #           updateInterval = 24 * 60 * 60 * 1000; # every day | ||||
|     #           definedAliases = [ "@searx" ]; | ||||
|     #         }; | ||||
|     #       }; | ||||
|     #     }; | ||||
|             # Alternatively, you can manually pass UUID as a string. | ||||
|             # "dash-to-dock@micxgx.gmail.com" | ||||
|           ]; | ||||
|         }; | ||||
| 
 | ||||
|     #     extentions = with pkgs.nur.repos.rycee.firefox-addons; [ | ||||
|     #         ublock-origin | ||||
|     #         bitwarden | ||||
|         "org/gnome/shell/extensions/dash-to-dock" = { | ||||
|           "dock-position" = "LEFT"; | ||||
|           "intellihide-mode" = "ALL_WINDOWS"; | ||||
|           "show-trash" = false; | ||||
|           "require-pressure-to-show" = false; | ||||
|           "show-mounts" = false; | ||||
|         }; | ||||
| 
 | ||||
|     #     ]; | ||||
| 
 | ||||
|     #     bookmarks = [ | ||||
|     #       { | ||||
|     #         name = "Media"; | ||||
|     #         url = "https://jellyfin.jan-leila.com/"; | ||||
|     #         keyword = ""; | ||||
|     #         tags = [""]; | ||||
|     #       } | ||||
|     #       { | ||||
|     #         name = "Drive"; | ||||
|     #         url = "https://drive.jan-leila.com/"; | ||||
|     #         keyword = ""; | ||||
|     #         tags = [""]; | ||||
|     #       } | ||||
|     #       { | ||||
|     #         name = "Git"; | ||||
|     #         url = "https://git.jan-leila.com/"; | ||||
|     #         keyword = ""; | ||||
|     #         tags = [""]; | ||||
|     #       } | ||||
|     #       { | ||||
|     #         name = "Home Automation"; | ||||
|     #         url = "https://home-assistant.jan-leila.com/"; | ||||
|     #         keyword = ""; | ||||
|     #         tags = [""]; | ||||
|     #       } | ||||
|     #       { | ||||
|     #         name = "Mail"; | ||||
|     #         url = "https://mail.protonmail.com"; | ||||
|     #         keyword = ""; | ||||
|     #         tags = [""]; | ||||
|     #       } | ||||
|     #       { | ||||
|     #         name = "Open Street Map"; | ||||
|     #         url = "https://www.openstreetmap.org/"; | ||||
|     #         keyword = ""; | ||||
|     #         tags = [""]; | ||||
|     #       } | ||||
|     #       { | ||||
|     #         name = "Password Manager"; | ||||
|     #         url = "https://vault.bitwarden.com/"; | ||||
|     #         keyword = ""; | ||||
|     #         tags = [""]; | ||||
|     #       } | ||||
|     #       { | ||||
|     #         name = "Mastodon"; | ||||
|     #         url = "https://tech.lgbt"; | ||||
|     #         keyword = ""; | ||||
|     #         tags = [""]; | ||||
|     #       } | ||||
|     #       { | ||||
|     #         name = "Linked In"; | ||||
|     #         url = "https://www.linkedin.com/"; | ||||
|     #         keyword = ""; | ||||
|     #         tags = [""]; | ||||
|     #       } | ||||
|     #       { | ||||
|     #         name = "Job Search"; | ||||
|     #         url = "https://www.jobsinnetwork.com/?state=cleaned_history&language%5B%5D=en&query=react&locations.countryCode%5B%5D=IT&locations.countryCode%5B%5D=DE&locations.countryCode%5B%5D=NL&experience%5B%5D=medior&experience%5B%5D=junior&page=1"; | ||||
|     #         keyword = ""; | ||||
|     #         tags = [""]; | ||||
|     #       } | ||||
|     #       { | ||||
|     #         name = "React Docs"; | ||||
|     #         url = "https://react.dev/"; | ||||
|     #         keyword = ""; | ||||
|     #         tags = [""]; | ||||
|     #       } | ||||
|     #       # Template | ||||
|     #       # { | ||||
|     #       #   name = ""; | ||||
|     #       #   url = ""; | ||||
|     #       #   keyword = ""; | ||||
|     #       #   tags = [""]; | ||||
|     #       # } | ||||
|     #     ]; | ||||
|     #   }; | ||||
|     # } | ||||
|   }; | ||||
| 
 | ||||
|   dconf = { | ||||
|     enable = true; | ||||
|     settings = { | ||||
|       "org/gnome/desktop/interface".color-scheme = "prefer-dark"; | ||||
| 
 | ||||
|       "org/gnome/shell" = { | ||||
|         disable-user-extensions = false; # enables user extensions | ||||
|         enabled-extensions = [ | ||||
|           # Put UUIDs of extensions that you want to enable here. | ||||
|           # If the extension you want to enable is packaged in nixpkgs, | ||||
|           # you can easily get its UUID by accessing its extensionUuid | ||||
|           # field (look at the following example). | ||||
|           pkgs.gnomeExtensions.dash-to-dock.extensionUuid | ||||
| 
 | ||||
|           # Alternatively, you can manually pass UUID as a string. | ||||
|           # "dash-to-dock@micxgx.gmail.com" | ||||
|         ]; | ||||
|       }; | ||||
| 
 | ||||
|       "org/gnome/shell/extensions/dash-to-dock" = { | ||||
|         "dock-position" = "LEFT"; | ||||
|         "intellihide-mode" = "ALL_WINDOWS"; | ||||
|         "show-trash" = false; | ||||
|         "require-pressure-to-show" = false; | ||||
|         "show-mounts" = false; | ||||
|       }; | ||||
| 
 | ||||
|       "org/gnome/settings-daemon/plugins/media-keys" = { | ||||
|         custom-keybindings = [ | ||||
|           "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/" | ||||
|         ]; | ||||
|       }; | ||||
|       "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = { | ||||
|         binding = "<Super>t"; | ||||
|         command = "kgx"; | ||||
|         name = "Open Terminal"; | ||||
|         "org/gnome/settings-daemon/plugins/media-keys" = { | ||||
|           custom-keybindings = [ | ||||
|             "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/" | ||||
|           ]; | ||||
|         }; | ||||
|         "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = { | ||||
|           binding = "<Super>t"; | ||||
|           command = "kgx"; | ||||
|           name = "Open Terminal"; | ||||
|         }; | ||||
|       }; | ||||
|     }; | ||||
|   }; | ||||
|  |  | |||
|  | @ -1,17 +1,12 @@ | |||
| { | ||||
|   lib, | ||||
|   config, | ||||
|   osConfig, | ||||
|   pkgs, | ||||
|   inputs, | ||||
|   ... | ||||
| }: let | ||||
|   cfg = config.users.leyla; | ||||
| in { | ||||
|   imports = [ | ||||
|     ../../overlays/intellij.nix | ||||
|     ../../overlays/vscodium.nix | ||||
|   ]; | ||||
| 
 | ||||
| }: | ||||
| { | ||||
|   nixpkgs = { | ||||
|     overlays = [ | ||||
|       inputs.nix-vscode-extensions.overlays.default | ||||
|  | @ -19,119 +14,177 @@ in { | |||
|   }; | ||||
| 
 | ||||
|   programs = { | ||||
|     bash.shellAliases = lib.mkIf cfg.isFullUser { | ||||
|     bash.shellAliases = lib.mkIf config.isFullUser { | ||||
|       code = "codium"; | ||||
|     }; | ||||
| 
 | ||||
|     steam = lib.mkIf cfg.isFullUser { | ||||
|     vscode = let  | ||||
|       extensions = inputs.nix-vscode-extensions.extensions.${pkgs.system}; | ||||
|       open-vsx = extensions.open-vsx; | ||||
|       vscode-marketplace = extensions.vscode-marketplace; | ||||
|     in | ||||
|     { | ||||
|       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 | ||||
|      | ||||
|       package = pkgs.vscodium; | ||||
| 
 | ||||
|       mutableExtensionsDir = false; | ||||
|       enableUpdateCheck = false; | ||||
|       enableExtensionUpdateCheck = false; | ||||
| 
 | ||||
|       userSettings = { | ||||
|         "workbench.colorTheme" = "Atom One Dark"; | ||||
|       }; | ||||
| 
 | ||||
|       extensions = with extensions.open-vsx; [ | ||||
|         # vs code feel extensions | ||||
|         ms-vscode.atom-keybindings | ||||
|         akamud.vscode-theme-onedark | ||||
|         streetsidesoftware.code-spell-checker | ||||
|         streetsidesoftware.code-spell-checker-german | ||||
|         streetsidesoftware.code-spell-checker-italian | ||||
|         jeanp413.open-remote-ssh | ||||
| 
 | ||||
|         # nix extensions | ||||
|         pinage404.nix-extension-pack | ||||
|         jnoortheen.nix-ide | ||||
| 
 | ||||
|         # html extensions | ||||
|         formulahendry.auto-rename-tag | ||||
|         ms-vscode.live-server | ||||
| 
 | ||||
|         # js extensions | ||||
|         dsznajder.es7-react-js-snippets | ||||
|         dbaeumer.vscode-eslint | ||||
|         standard.vscode-standard | ||||
|         firsttris.vscode-jest-runner | ||||
|         stylelint.vscode-stylelint | ||||
|         tauri-apps.tauri-vscode | ||||
| 
 | ||||
|         # misc extensions | ||||
|         bungcip.better-toml | ||||
| 
 | ||||
|         # the number at the start of the name here doesnt resolve nicely so we have to refernce it as a part of open-vsx directly instead of though with | ||||
|         open-vsx."10nates".ollama-autocoder | ||||
|       ] | ||||
|       ++ (with extensions.vscode-marketplace; [ | ||||
|         # js extensions | ||||
|         karyfoundation.nearley | ||||
|       ]); | ||||
|     }; | ||||
| 
 | ||||
|     noisetorch.enable = cfg.isFullUser; | ||||
| 
 | ||||
|     adb.enable = cfg.isFullUser; | ||||
|     # steam = lib.mkIf config.isFullUser { | ||||
|     #   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 | ||||
|     # }; | ||||
| 
 | ||||
|     # noisetorch.enable = config.isFullUser; | ||||
| 
 | ||||
|     # adb.enable = config.isFullUser; | ||||
|   }; | ||||
| 
 | ||||
|   users.users.leyla.packages = lib.mkIf (cfg.isFullUser || cfg.isThinUser) ( | ||||
|     lib.mkMerge [ | ||||
|       ( | ||||
|         with pkgs; [ | ||||
|           # comand line tools | ||||
|           yt-dlp | ||||
|           ffmpeg | ||||
|           imagemagick | ||||
|         ] | ||||
|       ) | ||||
|       ( | ||||
|         lib.mkIf (!cfg.isThinUser) ( | ||||
|   home = { | ||||
|     packages = lib.mkIf (config.isFullUser || config.isThinUser) ( | ||||
|       lib.mkMerge [ | ||||
|         ( | ||||
|           with pkgs; [ | ||||
|             #foss platforms | ||||
|             signal-desktop | ||||
|             bitwarden | ||||
|             firefox | ||||
|             ungoogled-chromium | ||||
|             libreoffice | ||||
|             inkscape | ||||
|             gimp | ||||
|             krita | ||||
|             freecad | ||||
|             # cura | ||||
|             kicad-small | ||||
|             makemkv | ||||
|             transmission_4-gtk | ||||
|             onionshare | ||||
|             easytag | ||||
|             # rhythmbox | ||||
|             (lib.mkIf cfg.hasGPU obs-studio) | ||||
|             # wireshark | ||||
|             # rpi-imager | ||||
|             # fritzing | ||||
| 
 | ||||
|             # proprietary platforms | ||||
|             discord | ||||
|             obsidian | ||||
|             steam | ||||
|             (lib.mkIf cfg.hasGPU davinci-resolve) | ||||
| 
 | ||||
|             # development tools | ||||
|             (vscode-with-extensions.override { | ||||
|               vscode = vscodium; | ||||
|               vscodeExtensions = with open-vsx; | ||||
|                 [ | ||||
|                   # vs code feel extensions | ||||
|                   ms-vscode.atom-keybindings | ||||
|                   akamud.vscode-theme-onedark | ||||
|                   streetsidesoftware.code-spell-checker | ||||
|                   streetsidesoftware.code-spell-checker-german | ||||
|                   streetsidesoftware.code-spell-checker-italian | ||||
|                   jeanp413.open-remote-ssh | ||||
| 
 | ||||
|                   # nix extensions | ||||
|                   pinage404.nix-extension-pack | ||||
|                   jnoortheen.nix-ide | ||||
| 
 | ||||
|                   # html extensions | ||||
|                   formulahendry.auto-rename-tag | ||||
|                   ms-vscode.live-server | ||||
| 
 | ||||
|                   # js extensions | ||||
|                   dsznajder.es7-react-js-snippets | ||||
|                   dbaeumer.vscode-eslint | ||||
|                   standard.vscode-standard | ||||
|                   firsttris.vscode-jest-runner | ||||
|                   stylelint.vscode-stylelint | ||||
|                   tauri-apps.tauri-vscode | ||||
| 
 | ||||
|                   # misc extensions | ||||
|                   bungcip.better-toml | ||||
| 
 | ||||
|                   open-vsx."10nates".ollama-autocoder | ||||
|                 ] | ||||
|                 ++ (with vscode-marketplace; [ | ||||
|                   # js extensions | ||||
|                   karyfoundation.nearley | ||||
|                 ]); | ||||
|             }) | ||||
|             androidStudioPackages.canary | ||||
|             jetbrains.idea-community | ||||
|             dbeaver-bin | ||||
|             bruno | ||||
| 
 | ||||
|             # system tools | ||||
|             protonvpn-gui | ||||
|             openvpn | ||||
|             nextcloud-client | ||||
|             noisetorch | ||||
| 
 | ||||
|             # hardware managment tools | ||||
|             (lib.mkIf config.hardware.piperMouse.enable piper) | ||||
|             (lib.mkIf config.hardware.openRGB.enable openrgb) | ||||
|             (lib.mkIf config.hardware.viaKeyboard.enable via) | ||||
|             # comand line tools | ||||
|             yt-dlp | ||||
|             ffmpeg | ||||
|             imagemagick | ||||
|           ] | ||||
|         ) | ||||
|       ) | ||||
|     ] | ||||
|   ); | ||||
|         ( | ||||
|           lib.mkIf (!config.isThinUser) ( | ||||
|             with pkgs; [ | ||||
|               #foss platforms | ||||
|               signal-desktop | ||||
|               bitwarden | ||||
|               firefox | ||||
|               ungoogled-chromium | ||||
|               libreoffice | ||||
|               inkscape | ||||
|               gimp | ||||
|               krita | ||||
|               freecad | ||||
|               # cura | ||||
|               kicad-small | ||||
|               makemkv | ||||
|               transmission_4-gtk | ||||
|               onionshare | ||||
|               easytag | ||||
|               # rhythmbox | ||||
|               (lib.mkIf config.hasGPU obs-studio) | ||||
|               # wireshark | ||||
|               # rpi-imager | ||||
|               # fritzing | ||||
| 
 | ||||
|               # proprietary platforms | ||||
|               discord | ||||
|               obsidian | ||||
|               steam | ||||
|               (lib.mkIf config.hasGPU davinci-resolve) | ||||
| 
 | ||||
|               # development tools | ||||
|               # (vscode-with-extensions.override { | ||||
|               #   vscode = vscodium; | ||||
|               #   vscodeExtensions = with open-vsx; | ||||
|               #     [ | ||||
|               #       # vs code feel extensions | ||||
|               #       ms-vscode.atom-keybindings | ||||
|               #       akamud.vscode-theme-onedark | ||||
|               #       streetsidesoftware.code-spell-checker | ||||
|               #       streetsidesoftware.code-spell-checker-german | ||||
|               #       streetsidesoftware.code-spell-checker-italian | ||||
|               #       jeanp413.open-remote-ssh | ||||
| 
 | ||||
|               #       # nix extensions | ||||
|               #       pinage404.nix-extension-pack | ||||
|               #       jnoortheen.nix-ide | ||||
| 
 | ||||
|               #       # html extensions | ||||
|               #       formulahendry.auto-rename-tag | ||||
|               #       ms-vscode.live-server | ||||
| 
 | ||||
|               #       # js extensions | ||||
|               #       dsznajder.es7-react-js-snippets | ||||
|               #       dbaeumer.vscode-eslint | ||||
|               #       standard.vscode-standard | ||||
|               #       firsttris.vscode-jest-runner | ||||
|               #       stylelint.vscode-stylelint | ||||
|               #       tauri-apps.tauri-vscode | ||||
| 
 | ||||
|               #       # misc extensions | ||||
|               #       bungcip.better-toml | ||||
| 
 | ||||
|               #       open-vsx."10nates".ollama-autocoder | ||||
|               #     ] | ||||
|               #     ++ (with vscode-marketplace; [ | ||||
|               #       # js extensions | ||||
|               #       karyfoundation.nearley | ||||
|               #     ]); | ||||
|               # }) | ||||
|               androidStudioPackages.canary | ||||
|               jetbrains.idea-community | ||||
|               dbeaver-bin | ||||
|               bruno | ||||
| 
 | ||||
|               # system tools | ||||
|               protonvpn-gui | ||||
|               openvpn | ||||
|               nextcloud-client | ||||
|               noisetorch | ||||
| 
 | ||||
|               # hardware managment tools | ||||
|               (lib.mkIf osConfig.hardware.piperMouse.enable piper) | ||||
|               (lib.mkIf osConfig.hardware.openRGB.enable openrgb) | ||||
|               (lib.mkIf osConfig.hardware.viaKeyboard.enable via) | ||||
|             ] | ||||
|           ) | ||||
|         ) | ||||
|       ] | ||||
|     ); | ||||
|   }; | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue