diff --git a/hosts/yodaTab/configuration.nix b/hosts/yodaTab/configuration.nix index dc5c209..4f29280 100644 --- a/hosts/yodaTab/configuration.nix +++ b/hosts/yodaTab/configuration.nix @@ -12,135 +12,15 @@ [ # Include the results of the hardware scan. ./hardware-configuration.nix ./home-manager.nix + ../../modules/base.nix ../../modules/programs.nix ../../modules/git.nix + ../../modules/zsh.nix ../../modules/print-and-scan.nix ../../modules/nitrokey-ssh-gpg.nix ../../modules/fde-ssh-unlock.nix ../../modules/nextcloud-integration.nix ]; - # Bootloader. - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - - # Setup keyfile. - boot.initrd.secrets = { - "/crypto_keyfile.bin" = null; - }; - networking.hostName = "yodaTab"; - # Enables wireless support via wpa_supplicant. - # networking.wireless.enable = true; - - # Configure network proxy if necessary. - #networking.proxy.default = "http://user:password@proxy:port/"; - #networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; - - # Enable networking. - networking.networkmanager.enable = true; - - # Set your time zone. - time.timeZone = "Europe/Berlin"; - - # Select internationalisation properties. - i18n.defaultLocale = "en_US.UTF-8"; - - i18n.extraLocaleSettings = { - LC_ADDRESS = "de_DE.UTF-8"; - LC_IDENTIFICATION = "de_DE.UTF-8"; - LC_MEASUREMENT = "de_DE.UTF-8"; - LC_MONETARY = "de_DE.UTF-8"; - LC_NAME = "de_DE.UTF-8"; - LC_NUMERIC = "de_DE.UTF-8"; - LC_PAPER = "de_DE.UTF-8"; - LC_TELEPHONE = "de_DE.UTF-8"; - LC_TIME = "de_DE.UTF-8"; - }; - - # Enable the X11 windowing system. - services.xserver.enable = true; - - # Enable the GNOME Desktop Environment. - services.xserver.displayManager.gdm.enable = true; - services.xserver.desktopManager.gnome.enable = true; - - # Configure keymap in X11. - services.xserver = { - layout = "de"; - xkbVariant = "nodeadkeys"; - }; - - # Configure console keymap. - console.keyMap = "de-latin1-nodeadkeys"; - - # Enable sound with pipewire. - sound.enable = true; - hardware.pulseaudio.enable = false; - security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - 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 touchpad support (enabled default in most desktopManager). - # services.xserver.libinput.enable = true; - - # Allow unfree packages. - nixpkgs.config.allowUnfree = true; - - # https://nixos.wiki/wiki/Command_Shell - # https://nixos.wiki/wiki/Zsh - programs.zsh.enable = true; - users.defaultUserShell = pkgs.zsh; - - # Define a user account. Don't forget to set a password with `passwd`. - users.users.yoda = { - isNormalUser = true; - description = "Yoda"; - # SSH public key(s) to connect via SSH - openssh.authorizedKeys.keys = [ - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCpgihAg8Qzu5q+AGXHLR7p+rrS1yB0KlZb/Y/EwZT15EhEtsUMqBMRiY0TdjKQU0broyygZnymccLmCXvihEgk3zk/hP8VEDmN5wmE2tRBPR4lSjo8E1R8N79G+gaFkwi93QYh57MsGfa9k4tvGrJy0yaD7GrPqtQf+IIuvV14WJQAqnikTdbFqRjk5JGearYLU7jSKa+9NmR7JQ9NExoyIPgmQ/pd0Xc2qt8k5UGfz3HM9MAmIVQ30whK6m1iYZ8nxEidHrfreQx8NOa7ujo4zQnV1NYvRUjObr/qyIhPU6DYLT2mVRNupQFKx6LI38O4U13heugUFqJ3zvog3aDsriFiv8jzJAJvWXx7Q3TqKhqiG9VTkwBw1NDbCAOXKiEdMfiCYbdCfpNgdepU75bMloJcSQQVUqoH2tQhSbwKLuRFgOnyaHpvWbieXBRcUnfG8gg4p4jqiwx5laweEeOIOD/i7G1Mjx7Dj2ctnT/ILat/xsf+Y0W4eJr3bc5L9ghgw6wsKbNSqwjFUCFcHcARK3gvSH+hO2/BpgMVoyvZjO5PNuUqfsZ7bIIs5cDdyB/ly3irKuaRz1+3x1x4gPgSiOcji7HxPwogzhPsyfoRLHNt9tJ5X4nF2Iz1M5RTJpbZCi6yEj+9Q85FVjD76BEWuZe18kRrwhuLf/XgKdF9tQ== openpgp:0xA8B75370" - ]; - extraGroups = [ "networkmanager" "wheel" ]; - packages = with pkgs; [ - # Nix dependency management. - niv - ]; - }; - - # List packages installed in system profile. To search, run: - # $ nix search wget - environment.systemPackages = with pkgs; [ - ]; - - # Some programs need SUID wrappers, can be configured further or are - # started in user sessions. - # programs.mtr.enable = true; - - nix.settings.auto-optimise-store = true; - - # Firewall - # - # Open ports in the firewall. - #networking.firewall.allowedTCPPorts = [ ... ]; - #networking.firewall.allowedUDPPorts = [ ... ]; - # Or disable the firewall altogether. - #networking.firewall.enable = false; - - # 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 = "23.05"; # Did you read the comment? } diff --git a/hosts/yodaTab/home-manager.nix b/hosts/yodaTab/home-manager.nix index a58c8e3..aa635c3 100644 --- a/hosts/yodaTab/home-manager.nix +++ b/hosts/yodaTab/home-manager.nix @@ -7,6 +7,7 @@ in imports = [ (import "${home-manager}/nixos") ../../modules/git.home.nix + ../../modules/zsh.home.nix # TODO #../../modules/nitrokey-ssh-gpg.home.nix ]; @@ -36,32 +37,6 @@ in # #dataHome = "${config.xdg.home.homeDirectory}/.local/share"; # }; - programs.zsh = { - enable = true; - shellAliases = { - #ll = "ls -l"; - #update = "sudo nixos-rebuild switch"; - }; - history.size = 1000; - history.ignoreDups = true; - #history.ignoreAllDups = true; - # TODO: - # Currently, `config` is my NixOS config. However, I want to access Home Manager's `config`. - # I could change home-manager.users.yoda to be a function and take config as an argument there. - #history.path = "${config.xdg.dataHome}/.histfile"; - - oh-my-zsh = { - enable = true; - plugins = [ - # Provides many aliases and a few useful functions. - #"git" - # Easily prefix your current or previous commands with sudo by pressing `esc` twice. - #"sudo" - ]; - #theme = "robbyrussell"; - theme = "agnoster"; - }; - }; }; } diff --git a/modules/base.nix b/modules/base.nix new file mode 100644 index 0000000..3899085 --- /dev/null +++ b/modules/base.nix @@ -0,0 +1,121 @@ +{ config, pkgs, ... }: + +{ + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + # Setup keyfile. + boot.initrd.secrets = { + "/crypto_keyfile.bin" = null; + }; + + # Enables wireless support via wpa_supplicant. + # networking.wireless.enable = true; + + # Configure network proxy if necessary. + #networking.proxy.default = "http://user:password@proxy:port/"; + #networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Enable networking. + networking.networkmanager.enable = true; + + # Set your time zone. + time.timeZone = "Europe/Berlin"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "de_DE.UTF-8"; + LC_IDENTIFICATION = "de_DE.UTF-8"; + LC_MEASUREMENT = "de_DE.UTF-8"; + LC_MONETARY = "de_DE.UTF-8"; + LC_NAME = "de_DE.UTF-8"; + LC_NUMERIC = "de_DE.UTF-8"; + LC_PAPER = "de_DE.UTF-8"; + LC_TELEPHONE = "de_DE.UTF-8"; + LC_TIME = "de_DE.UTF-8"; + }; + + # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the GNOME Desktop Environment. + services.xserver.displayManager.gdm.enable = true; + services.xserver.desktopManager.gnome.enable = true; + + # Configure keymap in X11. + services.xserver = { + layout = "de"; + xkbVariant = "nodeadkeys"; + }; + + # Configure console keymap. + console.keyMap = "de-latin1-nodeadkeys"; + + # Enable sound with pipewire. + sound.enable = true; + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + 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 touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + + # Allow unfree packages. + nixpkgs.config.allowUnfree = true; + + # Define a user account. Don't forget to set a password with `passwd`. + users.users.yoda = { + isNormalUser = true; + description = "Yoda"; + # SSH public key(s) to connect via SSH + openssh.authorizedKeys.keys = [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCpgihAg8Qzu5q+AGXHLR7p+rrS1yB0KlZb/Y/EwZT15EhEtsUMqBMRiY0TdjKQU0broyygZnymccLmCXvihEgk3zk/hP8VEDmN5wmE2tRBPR4lSjo8E1R8N79G+gaFkwi93QYh57MsGfa9k4tvGrJy0yaD7GrPqtQf+IIuvV14WJQAqnikTdbFqRjk5JGearYLU7jSKa+9NmR7JQ9NExoyIPgmQ/pd0Xc2qt8k5UGfz3HM9MAmIVQ30whK6m1iYZ8nxEidHrfreQx8NOa7ujo4zQnV1NYvRUjObr/qyIhPU6DYLT2mVRNupQFKx6LI38O4U13heugUFqJ3zvog3aDsriFiv8jzJAJvWXx7Q3TqKhqiG9VTkwBw1NDbCAOXKiEdMfiCYbdCfpNgdepU75bMloJcSQQVUqoH2tQhSbwKLuRFgOnyaHpvWbieXBRcUnfG8gg4p4jqiwx5laweEeOIOD/i7G1Mjx7Dj2ctnT/ILat/xsf+Y0W4eJr3bc5L9ghgw6wsKbNSqwjFUCFcHcARK3gvSH+hO2/BpgMVoyvZjO5PNuUqfsZ7bIIs5cDdyB/ly3irKuaRz1+3x1x4gPgSiOcji7HxPwogzhPsyfoRLHNt9tJ5X4nF2Iz1M5RTJpbZCi6yEj+9Q85FVjD76BEWuZe18kRrwhuLf/XgKdF9tQ== openpgp:0xA8B75370" + ]; + extraGroups = [ "networkmanager" "wheel" ]; + packages = with pkgs; [ + # Nix dependency management. + niv + ]; + }; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + ]; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + + nix.settings.auto-optimise-store = true; + + # Firewall + # + # Open ports in the firewall. + #networking.firewall.allowedTCPPorts = [ ... ]; + #networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + #networking.firewall.enable = false; + + # 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 = "23.05"; # Did you read the comment? +} diff --git a/modules/zsh.home.nix b/modules/zsh.home.nix new file mode 100644 index 0000000..85793f8 --- /dev/null +++ b/modules/zsh.home.nix @@ -0,0 +1,35 @@ +{ config, pkgs, ... }: + +{ + home-manager.users.yoda = { + + programs.zsh = { + enable = true; + shellAliases = { + #ll = "ls -l"; + #update = "sudo nixos-rebuild switch"; + }; + history.size = 1000; + history.ignoreDups = true; + #history.ignoreAllDups = true; + + # TODO: + # Currently, `config` is my NixOS config. However, I want to access Home Manager's `config`. + # I could change home-manager.users.yoda to be a function and take config as an argument there. + #history.path = "${config.xdg.dataHome}/.histfile"; + + oh-my-zsh = { + enable = true; + plugins = [ + # Provides many aliases and a few useful functions. + #"git" + # Easily prefix your current or previous commands with sudo by pressing `esc` twice. + #"sudo" + ]; + #theme = "robbyrussell"; + theme = "agnoster"; + }; + }; + + }; +} diff --git a/modules/zsh.nix b/modules/zsh.nix new file mode 100644 index 0000000..8866d59 --- /dev/null +++ b/modules/zsh.nix @@ -0,0 +1,8 @@ +{ config, pkgs, ... }: + +{ + # https://nixos.wiki/wiki/Command_Shell + # https://nixos.wiki/wiki/Zsh + programs.zsh.enable = true; + users.defaultUserShell = pkgs.zsh; +}