diff --git a/configuration/common.nix b/configuration/common.nix deleted file mode 100644 index 8c2a11b..0000000 --- a/configuration/common.nix +++ /dev/null @@ -1,112 +0,0 @@ -{ pkgs, ... }: -{ - # NixOS version. - system.stateVersion = "25.05"; - - # Enable flakes. - nix.settings.experimental-features = [ - "nix-command" - "flakes" - ]; - - # Allow unfree packages. - nixpkgs.config.allowUnfree = true; - - # Set time zone. - time.timeZone = "Australia/Perth"; - - # Select internationalisation properties. - i18n.defaultLocale = "en_AU.UTF-8"; - - i18n.extraLocaleSettings = { - LC_ADDRESS = "en_AU.UTF-8"; - LC_IDENTIFICATION = "en_AU.UTF-8"; - LC_MEASUREMENT = "en_AU.UTF-8"; - LC_MONETARY = "en_AU.UTF-8"; - LC_NAME = "en_AU.UTF-8"; - LC_NUMERIC = "en_AU.UTF-8"; - LC_PAPER = "en_AU.UTF-8"; - LC_TELEPHONE = "en_AU.UTF-8"; - LC_TIME = "en_AU.UTF-8"; - }; - - # Configure keymap in X11. - services.xserver.xkb = { - layout = "us"; - variant = ""; - }; - - # Use fish shell - programs.fish = { - enable = true; - interactiveShellInit = '' - function n --wraps nnn --description 'support nnn quit and change directory' - if test -n "$NNNLVL" -a "$NNNLVL" -ge 1 - echo "nnn is already running" - return - end - - if test -n "$XDG_CONFIG_HOME" - set -x NNN_TMPFILE "$XDG_CONFIG_HOME/nnn/.lastd" - else - set -x NNN_TMPFILE "$HOME/.config/nnn/.lastd" - end - - command ${pkgs.nnn}/bin/nnn $argv - - if test -e $NNN_TMPFILE - source $NNN_TMPFILE - rm -- $NNN_TMPFILE - end - end - ''; - }; - - programs.bash = { - interactiveShellInit = '' - if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] - then - shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" - exec ${pkgs.fish}/bin/fish $LOGIN_OPTION - fi - ''; - }; # https://nixos.wiki/wiki/Fish#Setting_fish_as_your_shell - - # Install some packages. - programs.git.enable = true; - - programs.neovim = { - enable = true; - defaultEditor = true; # Use neovim as default terminal editor. - configure = { - customRC = '' - set expandtab - set shiftwidth=2 - set tabstop=8 - set softtabstop=2 - set number - colorscheme kanagawa-dragon - ''; - packages.myVimPackage = with pkgs.vimPlugins; { - start = [ kanagawa-nvim ]; - }; - }; - }; - - environment.systemPackages = with pkgs; [ - aria2 - btop - lynx - ncdu - nnn - rsync - tmux - trash-cli - ]; - - # Enable avahi hostname resolution. - services.avahi = { - enable = true; - nssmdns4 = true; - }; -} \ No newline at end of file diff --git a/configuration/desktop.nix b/configuration/desktop.nix index 38b139b..bb8fccb 100755 --- a/configuration/desktop.nix +++ b/configuration/desktop.nix @@ -7,6 +7,18 @@ }: { + # NixOS version. + system.stateVersion = "25.05"; + + # Enable flakes. + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; + + # Allow unfree packages. + nixpkgs.config.allowUnfree = true; + # Configure the bootloader. boot = { # Enable secure boot. @@ -42,9 +54,36 @@ # Enable smart card support (for YubiKey). services.pcscd.enable = true; + # Define hostname. + networking.hostName = "muskduck"; + # Enable networking. networking.networkmanager.enable = true; + # Set time zone. + time.timeZone = "Australia/Perth"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_AU.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_AU.UTF-8"; + LC_IDENTIFICATION = "en_AU.UTF-8"; + LC_MEASUREMENT = "en_AU.UTF-8"; + LC_MONETARY = "en_AU.UTF-8"; + LC_NAME = "en_AU.UTF-8"; + LC_NUMERIC = "en_AU.UTF-8"; + LC_PAPER = "en_AU.UTF-8"; + LC_TELEPHONE = "en_AU.UTF-8"; + LC_TIME = "en_AU.UTF-8"; + }; + + # Configure keymap in X11. + services.xserver.xkb = { + layout = "us"; + variant = ""; + }; + # Define a user account. users.users.fern = { isNormalUser = true; @@ -111,21 +150,35 @@ # Install some packages. programs.steam.enable = true; + programs.git.enable = true; programs.firefox.enable = true; + programs.neovim = { + enable = true; + defaultEditor = true; # Use neovim as default terminal editor. + configure = { + customRC = '' + set expandtab + set shiftwidth=2 + set tabstop=8 + set softtabstop=2 + set number + colorscheme kanagawa-dragon + ''; + packages.myVimPackage = with pkgs.vimPlugins; { + start = [ kanagawa-nvim ]; + }; + }; + }; + environment.systemPackages = with pkgs; [ adwsteamgtk ansible celluloid discord feishin0_16_0.feishin - ghostty gimp3 glabels-qt - gnome-tweaks - gnomeExtensions.auto-move-windows - gnomeExtensions.rounded-window-corners-reborn - gnomeExtensions.smile-complementary-extension jellyfin-media-player libreoffice nixd # nix language server @@ -134,8 +187,13 @@ protonmail-desktop signal-desktop smile - vscodium yubioath-flutter + gnomeExtensions.rounded-window-corners-reborn + gnomeExtensions.smile-complementary-extension + gnomeExtensions.auto-move-windows + gnome-tweaks + vscodium + ghostty # PrismLauncher with temurin jre. (prismlauncher.override { @@ -157,6 +215,9 @@ # Enable gamemode service programs.gamemode.enable = true; + # Enable avahi hostname resolution. + services.avahi.nssmdns4 = true; + # Enable CUPS to print documents. services.printing.enable = true; diff --git a/configuration/vm.nix b/configuration/vm.nix index d37f694..45e4473 100755 --- a/configuration/vm.nix +++ b/configuration/vm.nix @@ -1,10 +1,51 @@ { + pkgs, + ... +}: + +{ + # NixOS version. + system.stateVersion = "25.05"; + + # Enable flakes. + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; + + # Allow unfree packages. + nixpkgs.config.allowUnfree = true; + # Configure the bootloader. boot.loader.grub = { enable = true; device = "/dev/sda"; }; + # Set time zone. + time.timeZone = "Australia/Perth"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_AU.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_AU.UTF-8"; + LC_IDENTIFICATION = "en_AU.UTF-8"; + LC_MEASUREMENT = "en_AU.UTF-8"; + LC_MONETARY = "en_AU.UTF-8"; + LC_NAME = "en_AU.UTF-8"; + LC_NUMERIC = "en_AU.UTF-8"; + LC_PAPER = "en_AU.UTF-8"; + LC_TELEPHONE = "en_AU.UTF-8"; + LC_TIME = "en_AU.UTF-8"; + }; + + # Configure keymap in X11. + services.xserver.xkb = { + layout = "us"; + variant = ""; + }; + # Define a user account. users.users.docker = { isNormalUser = true; @@ -12,19 +53,35 @@ "wheel" "docker" ]; - openssh.authorizedKeys.keys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIETPyuxUVEmYyEW6PVC6BXqkhULHd/RvMm8fMbYhjTMV fern@muskduck" - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKzW4epTmK01kGVXcuAXUNJQPltnogf4uab9FA5m8S3n fern@pardalote" - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBEJYq1fMxVOzCMfE/td6DtWS8nUk76U9seYD3Z9RYAz u0_a399@fairywren" - "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIMoJvPcUJDVVzO4dHROCFNlgJdDZSP5xyPx2s40zcx5QAAAABHNzaDo= YubiKey5NFC" - ]; + }; + + # Install some packages. + programs.git.enable = true; + + programs.neovim = { + enable = true; + defaultEditor = true; # Use neovim as default terminal editor. + configure = { + customRC = '' + set expandtab + set shiftwidth=2 + set tabstop=8 + set softtabstop=2 + set number + colorscheme kanagawa-dragon + ''; + packages.myVimPackage = with pkgs.vimPlugins; { + start = [ kanagawa-nvim ]; + }; + }; }; # Enable SSH server services.openssh.enable = true; - - # Enable docker - virtualisation.docker = { + + # Enable avahi hostname resolution. + services.avahi = { enable = true; + nssmdns4 = true; }; } diff --git a/flake.nix b/flake.nix index 1e5a2b2..faa523a 100755 --- a/flake.nix +++ b/flake.nix @@ -31,24 +31,18 @@ }; modules = [ - { networking.hostName = "muskduck"; } - lanzaboote.nixosModules.lanzaboote nixos-hardware.nixosModules.lenovo-thinkpad-t480 - ./configuration/common.nix ./configuration/desktop.nix ./hardware-configuration/muskduck.nix # Include the results of the hardware scan. ]; }; - nixosConfigurations.vm-minecraft = nixpkgs.lib.nixosSystem { + nixosConfigurations.vm = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ - { networking.hostName = "minecraft"; } - - ./configuration/common.nix ./configuration/vm.nix ./hardware-configuration/vm.nix # Include the results of the hardware scan. ];