rose-pine-nix/test.nix
seth a30f0ff077
feat: limit use of IFD, add auto updates & vm testing (#40)
* feat(modules): remove unnecessary IFD

by moving all upstream repos to our flake inputs, we no longer need
to have [IFD](https://nixos.wiki/wiki/Import_From_Derivation) in most
of our modules - making evaluation faster for all configurations. the
only remaining instances of IFD are in `lib.ctp.toYAML` and the themes
for kitty, which is due to it's use upstream in home-manager

* ci: start auto updating flake inputs

* ci: init basic vm tests

* ci: rename ci to format

* ci: use PAT for update-lock workflow

this is required to run tests such as test-vm after the pull request is
made

* fix(home-manager): make sure to use readFile in helix module

* ci: fix typo in test-vm

* ci: use verbose logging in test-vm & enable kvm

* docs: add flake inputs & vm testing to CONTRIBUTING.md

* feat(modules)!: use nvfetcher for upstream sources

* docs: add information about nvfetcher

* chore: don't include flake-compat in flake inputs

while this does make us lose out on easy updating, i think it's nice not
  have this as a required dependency for flake users

* chore: update flake inputs

Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/f58889c07efa8e1328fdf93dc1796ec2a5c47f38' (2023-07-29)
  → 'github:nix-community/home-manager/48b0a30202516e25d9885525fbb200a045f23f26' (2023-11-01)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/2a9d660ff0f7ffde9d73be328ee6e6f10ef66b28' (2023-07-28)
  → 'github:NixOS/nixpkgs/0cbe9f69c234a7700596e943bfae7ef27a31b735' (2023-10-29)

* chore: update nvfetcher sources

* refactor: don't instantiate nixpkgs in flake + cleanup vm test

* fix(home-manager): update paths from new lazygit theme revision

* feat(lib)!: use constant module arguments automatically
2023-11-02 13:55:47 -04:00

92 lines
1.8 KiB
Nix

{ self
, inputs
, ...
}:
let
common = {
catppuccin.flavour = "mocha";
users.users.test = {
isNormalUser = true;
home = "/home/test";
};
};
ctpEnable = {
enable = true;
catppuccin.enable = true;
};
in
{
name = "module-test";
nodes.machine = { lib, ... }: {
imports = [
self.nixosModules.catppuccin
inputs.home-manager.nixosModules.default
common
];
boot.loader.grub = ctpEnable;
programs.dconf.enable = true; # required for gtk
virtualisation = {
memorySize = 4096;
writableStore = true;
};
home-manager.users.test = {
imports = [
self.homeManagerModules.catppuccin
];
inherit (common) catppuccin;
home = {
username = "test";
stateVersion = lib.mkDefault "23.11";
};
manual.manpages.enable = lib.mkDefault false;
programs = {
alacritty = ctpEnable;
bat = ctpEnable;
bottom = ctpEnable;
btop = ctpEnable;
fish = ctpEnable;
glamour.catppuccin.enable = true;
helix = ctpEnable;
home-manager.enable = false;
kitty = ctpEnable;
lazygit = ctpEnable;
micro = ctpEnable;
neovim = ctpEnable;
starship = ctpEnable;
tmux = ctpEnable;
};
gtk = ctpEnable;
services = {
mako = ctpEnable;
polybar =
ctpEnable
// {
script = ''
polybar top &
'';
};
};
wayland.windowManager.sway = ctpEnable;
};
};
testScript = _: ''
machine.start()
machine.wait_for_unit("home-manager-test.service")
machine.wait_until_succeeds("systemctl status home-manager-test.service")
machine.succeed("echo \"system started!\"")
'';
}