diff --git a/example-vm/default.nix b/example-vm/default.nix new file mode 100644 index 0000000..89ed84e --- /dev/null +++ b/example-vm/default.nix @@ -0,0 +1,40 @@ +{ + imports = [ ./vm-config.nix ]; + + time.timeZone = "Europe/Berlin"; + i18n.defaultLocale = "en_US.UTF-8"; + users.users.jdoe = { + password = "example"; + isNormalUser = true; + extraGroups = [ + "wheel" + "video" + "networkmanager" + ]; + }; + home-manager.users.jdoe = { + home = { + username = "jdoe"; + homeDirectory = "/home/jdoe"; + }; + jhome = { + enable = true; + gui.enable = true; + dev = { + enable = true; + rust.enable = true; + }; + }; + }; + + # password is 'test' see module documentation for more options + services.jupyter.password = "'sha1:1b961dc713fb:88483270a63e57d18d43cf337e629539de1436ba'"; + jconfig = { + enable = true; + dev = { + enable = true; + jupyter.enable = true; + }; + gui.enable = true; + }; +} diff --git a/machines/vm/default.nix b/example-vm/vm-config.nix similarity index 50% rename from machines/vm/default.nix rename to example-vm/vm-config.nix index ced0faa..1b2b4d0 100644 --- a/machines/vm/default.nix +++ b/example-vm/vm-config.nix @@ -1,31 +1,34 @@ +## Default QEMU guest config { - services.qemuGuest.enable = true; + services = { + qemuGuest.enable = true; + openssh.enable = true; + }; - boot.initrd.availableKernelModules = [ - "xhci_pci" - "ehci_pci" - "ahci" - "usbhid" - "usb_storage" - "sd_mod" - "virtio_balloon" - "virtio_blk" - "virtio_pci" - "virtio_ring" - # "virtio_vga" - "virtio_gpu" - ]; + boot = { + loader.systemd-boot.enable = true; + initrd.availableKernelModules = [ + "xhci_pci" + "ehci_pci" + "ahci" + "usbhid" + "usb_storage" + "sd_mod" + "virtio_balloon" + "virtio_blk" + "virtio_pci" + "virtio_ring" + # "virtio_vga" + "virtio_gpu" + ]; + }; fileSystems."/".device = "/dev/disk/by-label/nixos"; - boot.loader.systemd-boot.enable = true; - - services.openssh.enable = 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 # 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 = "22.11"; # Did you read the comment? + system.stateVersion = "24.11"; # Did you read the comment? } diff --git a/flake-modules/example-vm.nix b/flake-modules/example-vm.nix index a8ce4b3..d6b88de 100644 --- a/flake-modules/example-vm.nix +++ b/flake-modules/example-vm.nix @@ -8,47 +8,11 @@ in { # Example vm configuration flake.nixosConfigurations.vm = lib.nixosSystem { - inherit system pkgs; + inherit pkgs; modules = [ - inputs.self.nixosModules.vm # import vm module - { - time.timeZone = "Europe/Berlin"; - i18n.defaultLocale = "en_US.UTF-8"; - users.users.jdoe = { - password = "example"; - isNormalUser = true; - extraGroups = [ - "wheel" - "video" - "networkmanager" - ]; - }; - home-manager.users.jdoe = { - home = { - username = "jdoe"; - homeDirectory = "/home/jdoe"; - }; - jhome = { - enable = true; - gui.enable = true; - dev = { - enable = true; - rust.enable = true; - }; - }; - }; - nix.registry.nixpkgs.flake = inputs.nixpkgs; - # password is 'test' see module documentation for more options - services.jupyter.password = "'sha1:1b961dc713fb:88483270a63e57d18d43cf337e629539de1436ba'"; - jconfig = { - enable = true; - dev = { - enable = true; - jupyter.enable = true; - }; - gui.enable = true; - }; - } + inputs.self.nixosModules.default + ../example-vm # import vm configuration + { nix.registry.nixpkgs.flake = inputs.nixpkgs; } ]; }; diff --git a/flake-modules/home-modules.nix b/flake-modules/home-modules.nix index 8d8ca71..09c500d 100644 --- a/flake-modules/home-modules.nix +++ b/flake-modules/home-modules.nix @@ -1,7 +1,4 @@ { self, inputs, ... }: -let - modules = ../modules; -in { # FIXME(25.05): this version of HM should have the flake module # imports = [ inputs.home-manager.flakeModules.home-manager ]; @@ -11,7 +8,7 @@ in defaultModules = [ inputs.nixvim.homeManagerModules.nixvim self.nixvimModules.homeManager - (modules + "/hm") + ../modules/hm ]; nixos = { imports = defaultModules; diff --git a/flake-modules/nixos-modules.nix b/flake-modules/nixos-modules.nix index 41bd64f..ef8355e 100644 --- a/flake-modules/nixos-modules.nix +++ b/flake-modules/nixos-modules.nix @@ -4,9 +4,6 @@ lib, ... }: -let - modules = ../modules; -in { flake.nixosModules = let @@ -14,7 +11,7 @@ in imports = [ inputs.stylix.nixosModules.stylix inputs.home-manager.nixosModules.home-manager - (modules + "/nixos") + ../modules/nixos ] ++ lib.optional (inputs.lix-module != null) inputs.lix-module.nixosModules.default; home-manager = { useGlobalPkgs = true; @@ -24,20 +21,9 @@ in # Pin nixpkgs nix.registry.nixpkgs.flake = inputs.nixpkgs; }; - - machines = [ "vm" ]; - mkMachine = hostname: { - imports = [ - nixosModule - (import (../machines + "/${hostname}")) - ]; - home-manager.sharedModules = [ { jhome.hostName = hostname; } ]; - }; - machineModules = lib.genAttrs machines mkMachine; in { default = nixosModule; inherit nixosModule; - } - // machineModules; + }; } diff --git a/flake-modules/nixvim-modules.nix b/flake-modules/nixvim-modules.nix index 9841d46..1f8a395 100644 --- a/flake-modules/nixvim-modules.nix +++ b/flake-modules/nixvim-modules.nix @@ -1,7 +1,4 @@ { self, inputs, ... }: -let - modules = ../modules; -in { imports = [ inputs.nixvim.flakeModules.default ]; @@ -10,10 +7,14 @@ in checks.enable = false; # FIXME: borked due to nix-community/nixvim#3074 }; - flake.nixvimModules = { - standalone = modules + "/nixvim/standalone.nix"; - homeManager = modules + "/nixvim"; - }; + flake.nixvimModules = + let + module = ../modules/nixvim; + in + { + standalone = "${module}/standalone.nix"; + homeManager = module; + }; perSystem = { system, ... }: