From f1bf506b55a26189a0137fe3f97fe2a2e4f20a08 Mon Sep 17 00:00:00 2001 From: tdpeuter Date: Tue, 4 Apr 2023 12:08:13 +0200 Subject: [PATCH] Restructuring --- nixos/flake.nix | 1 + nixos/hosts/Tibo-NixFat/default.nix | 106 +++++++++----------------- nixos/modules/apps/default.nix | 8 ++ nixos/modules/default.nix | 97 +++++++++++++++++++++++ nixos/modules/shells/default.nix | 5 ++ nixos/modules/utils/default.nix | 1 + nixos/users/tdpeuter/home.nix | 114 ---------------------------- 7 files changed, 148 insertions(+), 184 deletions(-) create mode 100644 nixos/modules/apps/default.nix create mode 100644 nixos/modules/default.nix create mode 100644 nixos/modules/shells/default.nix delete mode 100644 nixos/users/tdpeuter/home.nix diff --git a/nixos/flake.nix b/nixos/flake.nix index 235c9da..2144758 100644 --- a/nixos/flake.nix +++ b/nixos/flake.nix @@ -43,6 +43,7 @@ inherit system; modules = [ home-manager.nixosModule + ./modules ]; }; diff --git a/nixos/hosts/Tibo-NixFat/default.nix b/nixos/hosts/Tibo-NixFat/default.nix index 5041d2a..f3423cb 100644 --- a/nixos/hosts/Tibo-NixFat/default.nix +++ b/nixos/hosts/Tibo-NixFat/default.nix @@ -1,30 +1,22 @@ -# Edit this configuration file to define what should be installed on -# your system. Help is available in the configuration.nix(5) man page -# and in the NixOS manual (accessible by running ‘nixos-help’). - { config, pkgs, ... }: { - imports = - [ - ./hardware-configuration.nix - ]; - - # Nix Flakes - nix.package = pkgs.nixFlakes; - nix.extraOptions = '' - experimental-features = nix-command flakes - ''; + imports = [ + ./hardware-configuration.nix + ../../modules/apps/virtualbox + ../../modules/des/gnome + ]; + # Use the systemd-boot EFI boot loader.] boot.loader = { systemd-boot.enable = true; efi = { - canTouchEfiVariables = true; - efiSysMountPoint = "/boot/efi"; + canTouchEfiVariables = true; + efiSysMountPoint = "/boot/efi"; }; }; - + # Setup keyfile boot.initrd.secrets = { "/crypto_keyfile.bin" = null; @@ -34,14 +26,14 @@ # Pick only one of the below networking options. # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. - + # Set your time zone. time.timeZone = "Europe/Brussels"; - + # Configure network proxy if necessary # networking.proxy.default = "http://user:password@proxy:port/"; # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; - + # Select internationalisation properties. i18n.defaultLocale = "en_GB.UTF-8"; # console = { @@ -54,27 +46,15 @@ enable = true; videoDrivers = [ "nvidia" ]; # Also for wayland compositors - - # Enable the GNOME Desktop Environment. - displayManager.gdm.enable = true; - desktopManager.gnome.enable = true; - - - # Enable the Plasma 5 Desktop Environment. - # displayManager.sddm = { - # enable = true; - # defaultSession = "plasmawayland"; - # }; - # desktopManager.plasma.enable = true; - + # Configure keymap in X11 layout = "us"; xkbVariant = ""; }; - + # Enable CUPS to print documents. # services.printing.enable = true; - + # Enable sound with pipewire. sound.enable = true; hardware.pulseaudio.enable = false; @@ -86,50 +66,36 @@ pulse.enable = true; # If you want to use JACK applications, uncomment this #jack.enable = true; - + # use the example session manager (no others are packaged yet so this is enabled by default, # no need to redefine it in your config for now) #media-session.enable = true; }; - + # Enable Bluetooth. hardware.bluetooth.enable = true; - + # Enable touchpad support (enabled default in most desktopManager). services.xserver.libinput.enable = true; - + # NVIDIA drivers - hardware.opengl.enable = true; - hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.stable; - hardware.nvidia.modesetting.enable = true; - - # Define a user account. Don't forget to set a password with ‘passwd’. - users.users.tdpeuter = { - description = "Tibo De Peuter"; - isNormalUser = true; - extraGroups = [ "networkmanager" "wheel" ]; - initialPassword = "ChangeMe"; - packages = with pkgs; [ - home-manager - ]; - shell = pkgs.zsh; + hardware = { + opengl.enable = true; + nvidia = { + open = true; + # package = config.boot.kernelPackages.nvidiaPackages.stable; + modesetting.enable = true; + # prime = { + # offload.enable = true; + # intelBusId = "PCI::00:02:0"; + # nvidiaBusId = "PCI:01:00:0"; + # }; + }; }; # Allow unfree packages nixpkgs.config.allowUnfree = true; - - # List packages installed in system profile. To search, run: - # $ nix search wget - environment.systemPackages = with pkgs; [ - ]; - # Computer architecture - virtualisation.virtualbox.host.enable = true; - virtualisation.virtualbox.host.enableExtensionPack = true; - virtualisation.virtualbox.guest.enable = true; - virtualisation.virtualbox.guest.x11 = true; - users.extraGroups.vboxusers.members = [ "user-with-access-to-virtualbox" ]; - # Some programs need SUID wrappers, can be configured further or are # started in user sessions. # programs.mtr.enable = true; @@ -137,23 +103,23 @@ # enable = true; # enableSSHSupport = true; # }; - + # List services that you want to enable: - + # Enable the OpenSSH daemon. # services.openssh.enable = true; - + # Open ports in the firewall. # networking.firewall.allowedTCPPorts = [ ... ]; # networking.firewall.allowedUDPPorts = [ ... ]; # Or disable the firewall altogether. # networking.firewall.enable = false; - + # 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 diff --git a/nixos/modules/apps/default.nix b/nixos/modules/apps/default.nix new file mode 100644 index 0000000..59b8250 --- /dev/null +++ b/nixos/modules/apps/default.nix @@ -0,0 +1,8 @@ +{ + imports = [ + ./alacritty + ./firefox + ./thunderbird + # ./virtualbox + ]; +} diff --git a/nixos/modules/default.nix b/nixos/modules/default.nix new file mode 100644 index 0000000..2e4ca3f --- /dev/null +++ b/nixos/modules/default.nix @@ -0,0 +1,97 @@ +{ inputs, lib, config, pkgs, ... }: + +{ + imports = [ + ./apps + ./shells + ./utils + ]; + + # Nix Flakes + nix.package = pkgs.nixFlakes; + nix.extraOptions = '' + experimental-features = nix-command flakes + keep-outputs = true + keep-derivations = true + ''; + + users.users.tdpeuter = { + description = "Tibo De Peuter"; + isNormalUser = true; + extraGroups = [ "networkmanager" "wheel" ]; + initialPassword = "ChangeMe"; + packages = with pkgs; [ + home-manager + ]; + shell = pkgs.zsh; + }; + + home-manager.users.tdpeuter = { pkgs, ... }: { + home = { + username = "tdpeuter"; + homeDirectory = "/home/tdpeuter"; + stateVersion = "22.11"; + + packages = with pkgs; [ + brave + caprine-bin + direnv + discord + duf + git-crypt + gnupg + jellyfin-media-player + libreoffice-fresh-unwrapped + lynx + mattermost-desktop + nextcloud-client + obsidian + pinentry_qt + spotify + w3m + zathura + zenith + zoom-us + + # Fonts + corefonts # Calibri for Uni + ]; + }; + + programs = { + home-manager.enable = true; + + direnv = { + enable = true; + nix-direnv.enable = true; + }; + + git = { + enable = true; + userName = "tdpeuter"; + userEmail = "tibo.depeuter@gmail.com"; + extraConfig = { + core.editor = "vim"; + }; + includes = [ + { + path = "~/.gitconfig-ugent"; + condition = "gitdir:~/Nextcloud/Documenten/UGent"; + } + ]; + }; + + gpg.enable = true; + + }; + + services = { + gpg-agent = { + enable = true; + pinentryFlavor = "qt"; + }; + + }; + }; + +} diff --git a/nixos/modules/shells/default.nix b/nixos/modules/shells/default.nix new file mode 100644 index 0000000..87b90be --- /dev/null +++ b/nixos/modules/shells/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./zsh + ]; +} diff --git a/nixos/modules/utils/default.nix b/nixos/modules/utils/default.nix index 153d3ad..5a3ee62 100644 --- a/nixos/modules/utils/default.nix +++ b/nixos/modules/utils/default.nix @@ -1,6 +1,7 @@ { imports = [ ./vifm + ./vim ./zellij ]; } diff --git a/nixos/users/tdpeuter/home.nix b/nixos/users/tdpeuter/home.nix deleted file mode 100644 index 32ed637..0000000 --- a/nixos/users/tdpeuter/home.nix +++ /dev/null @@ -1,114 +0,0 @@ -{ inputs, lib, config, pkgs, ... }: - -{ - # Check documentation at - # https://rycee.gitlab.io/home-manager/options.html - - imports = [ - ]; - - # Home manager - home = { - # Home Manager needs a bit of information about you and the - # paths it should manage. - username = "tdpeuter"; - homeDirectory = "/home/tdpeuter"; - - # 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 can update Home Manager without changing this value. See - # the Home Manager release notes for a list of state version - # changes in each release. - stateVersion = "22.11"; - - packages = with pkgs; [ - alacritty - discord - duf - git-crypt - gnupg - libreoffice-fresh-unwrapped - lynx - mattermost-desktop - nextcloud-client - pinentry_qt - spotify - vifm - vim - w3m - zathura - zellij - zenith - zoom-us - - # Webdevelopment - jetbrains.webstorm - - # Software Engineering Lab 1 - android-studio - - # Fonts - font-awesome_5 # Vifm and zsh dependency - ]; - - file = { - ".config/alacritty".source = ../../../stow/alacritty/.config/alacritty; - ".config/vifm".source = ../../../stow/vifm/.config/vifm; - ".vim".source = ../../../stow/vim/.vim; - ".vimrc".source = ../../../stow/vim/.vimrc; - ".config/zellij".source = ../../../stow/zellij/.config/zellij; - ".oh-my-zsh".source = ../../../stow/zsh/.oh-my-zsh; - }; - - }; - - programs = { - # Let Home Manager install and manage itself. - home-manager.enable = true; - - git = { - enable = true; - userName = "tdpeuter"; - userEmail = "tibo.depeuter@gmail.com"; - extraConfig = { - core.editor = "vim"; - }; - }; - - gpg.enable = true; - - zsh = { - enable = true; - oh-my-zsh = { - enable = true; - custom = "$HOME/.oh-my-zsh"; - plugins = [ "dirhistory" "git" "screen" ]; - theme = "mrfortem"; - }; - plugins = [ - { - name = "cmdtime"; - src = pkgs.fetchFromGitHub { - owner = "tom-auger"; - repo = "cmdtime"; - rev = "ffc72641dcfa0ee6666ceb1dc712b61be30a1e8b"; - hash = "sha256-v6wCfNoPXDD3sS6yUYE6lre8Ir1yJcLGoAW3O8sUOCg="; - }; - } - ]; - }; - }; - - - services = { - gpg-agent = { - enable = true; - pinentryFlavor = "qt"; - }; - - }; - -}