Commit Graph

126 Commits

Author SHA1 Message Date
Donovan Glover
46f778107b
chore: Improve formatting 2024-04-05 22:51:24 -04:00
Donovan Glover
51273df2c8
meta: Move nixosConfiguration logic to separate file
Makes it easier to reason about the flake-specific stuff inside
the flake.
2024-04-05 19:21:20 -04:00
Donovan Glover
7a8fdd7259
chore: Improve formatting 2024-04-05 19:01:41 -04:00
Donovan Glover
22e31ff60b
chore: Format with nixpkgs-fmt
Note that we will continue to use nixpkgs-fmt for the time being here
since nixfmt-rfc-style breaks string syntax highlighting and comments
like `/* this */` get turned into `# this`.

The conversion from lisp-like formatting to something else in flake.nix
is a bit unfortunate, but I'd rather have a singular style for the
entire code base to make things easier.
2024-04-05 11:40:23 -04:00
Donovan Glover
59f557a3e5
feat: Pass nix-config as self to avoid infinite recursion
This change makes it possible to use this nix-config in all the
different ways imaginable (containers, bare metal, tests, and as a
separate flake input) *without* running into infinite recursion
issues with self.

It does this by using a trick similar to JavaScript in which
`var self = this;`, thus enabling the usage of "this" (or self, in
Nix's case) where it wouldn't otherwise be possible.

Note that this *only* works if the input for this repository is named
nix-config. This makes it impractical to combine with multiple
configurations that employ the same strategy.
2024-04-05 10:20:06 -04:00
Donovan Glover
b368817c52
feat: Simplify imports by importing with specialArgs
This change makes it possible to import the modules that are required
from the flake inputs in the output modules themselves, thus preventing
users from having to manually import those modules.

This simplifies things overall and was made possible by the specialArgs
option that allowed these flake inputs to be passed into our container.
2024-04-05 09:37:30 -04:00
Donovan Glover
e739239542
chore: Enable missing module options
Forgot to enable these earlier but now everything works.
2024-04-05 08:13:24 -04:00
Donovan Glover
721ead4572
chore: Inherit builtins where possible
Possibly makes things easier to read.
2024-04-04 17:56:01 -04:00
Donovan Glover
a1b9cf218d
meta: Begin migrating packages to workflow-specific modules
Long-term this should make it easy to include all the GUI programs with
the desktop module and all the CLI programs with the shell module, as
well as the ability to easily disable sets of unneeded packages.
2024-04-04 08:12:16 -04:00
Donovan Glover
3da9c62869
meta: Add options for networking module
Now it's possible to use the system without mullvad vpn.
2024-04-04 05:28:54 -04:00
Donovan Glover
a18125eaf9
meta: Use mkIf for hardware-specific config
Should make it easier to use this config without pulling in
the hardware-specific stuff.
2024-04-04 00:25:08 -04:00
Donovan Glover
95b10ec3ef
meta: Begin writing tests in Nix
Now that I've figured out how to dynamically import modules and use
those modules as outputs, the next step is to ensure that these modules
work as intended when being used by end users.

NixOS offers a built-in testing solution that enables us to conveniently
spin up virtual machines with a given configuration, then verify their
correctness through python scripting.

The lib.nix file in particular is based on Jörg Thalheim's very useful
blog post that explains how to use the built-in testing functionality
with Nix flakes, which isn't covered in official documentation.

See: https://blog.thalheim.io/2023/01/08/how-to-use-nixos-testing-framework-with-flakes/
2024-04-02 05:20:42 -04:00
Donovan Glover
d21ae69f39
chore: Fix formatting 2024-04-01 18:47:33 -04:00
Donovan Glover
1558b77796
feat(flake.nix): Separate outputs logic from variables
Reduces complexity and makes things easier to reason about.
2024-04-01 11:48:12 -04:00
Donovan Glover
dd6ab4cc97
chore(flake.nix): Prefer let-in over with
Should improve readability.
2024-04-01 11:15:10 -04:00
Donovan Glover
918f0dc44a
feat(flake.nix): Drastically simplify output generation
This makes it much easier to read the output expression.
2024-04-01 11:06:05 -04:00
Donovan Glover
dd171006b2
meta: Replace treefmt with flake formatter output
This makes the code base more portable by *only* depending on Nix as a
dependency.

Note that the code base hasn't been migrated to nixfmt-rfc-style yet.
2024-04-01 09:54:20 -04:00
Donovan Glover
297a46d08e
meta: Drop default.nix
Having a default.nix doesn't *really* make sense now that we're dealing
with multiple nixosConfigurations, some of which might not even be in
the same flake.
2024-04-01 07:17:53 -04:00
Donovan Glover
bc44af4825
meta: Switch to upstream stylix
Fixes an issue where the base16-schemes overlay wasn't being applied
presumably due to the separate nixosModule usage.

This removes Qt theming support, so it may be better to simply overlay
base16-schemes inside the module instead.
2024-04-01 05:35:27 -04:00
Donovan Glover
e4fb9d62a6
meta(nix): Automatically import all packages
This is now possible with the dynamic flake.nix outputs.
2024-04-01 04:25:44 -04:00
Donovan Glover
0c29329080
meta(flake.nix): Add working DRY output generation
The code for this is extremely messy right now however it works and I'd
rather not accidentally break it while refactoring, so this commit
serves as documenting the working code.
2024-04-01 04:13:49 -04:00
Donovan Glover
c421fe245f
feat(nix): Use single expression for module/overlay outputs
This makes the code much DRYer overall.
2024-03-31 22:22:29 -04:00
Donovan Glover
e84d3bbf02
feat(nix): Remove .nix from module outputs 2024-03-31 20:23:59 -04:00
Donovan Glover
44422516d4
feat(nix): Automatically import module outputs
This drastically simplifies things since we no longer have to worry
about adding and removing files from a default.nix.
2024-03-31 19:23:12 -04:00
Donovan Glover
d1513228d0
feat(nix): Don't hardcode package outputs
In order to determine the name of a package you want to include in your
own nix-config, simply copy the filename without the .nix part.
2024-03-31 18:58:28 -04:00
Donovan Glover
5674d3ed81
feat(nix): Automatically output all overlays
Now that I have more experience with nix, I know how to write an
expression that automatically outputs all the overlays in the
repository, as well as automatically import them inside the nixos
configuration.
2024-03-31 18:51:17 -04:00
Donovan Glover
93caf691d3
chore(nix): Remove useless self
Not needed due to the 3 dots at the end.
2024-03-31 16:27:18 -04:00
Donovan Glover
18acfd0749
meta(flake.nix): Add overlays as outputs
Should make it easier for other repositories to use the overlays from
this repository.
2024-03-31 06:21:47 -04:00
Donovan Glover
c85d2d45ba
meta(flake.nix): Add packages as outputs
This makes it possible to easily use packages from this repository in
your own separate nix-config flake. This also makes it easier to test
packages locally since `nix build .#package` can be used instead of
building the entire system derivation.
2024-03-30 07:32:49 -04:00
Donovan Glover
f9905b0ea0
chore: Simplify formatting
This should make it easier to introduce more nixosConfigurations in the
future.
2024-03-08 21:25:57 -05:00
Donovan Glover
f7df16b6a1
chore: Update to latest nixos-unstable release 2024-03-05 19:17:23 -05:00
Donovan Glover
6d047a9567
chore: Update to latest nixos-unstable-small release
cargo-audit has been dropped to fix an issue with libgit2, which should
be fixed in 1-2 weeks or so. Additionally, nvim-base16 has been renamed
to base16-nvim, which is currently only recognized on -small.
2024-02-19 08:28:34 -05:00
Donovan Glover
e34d70c20b
chore: Switch back to nixos-unstable
I've been running this for a few days now and everything works as
expected.
2024-02-08 22:37:38 -05:00
Donovan Glover
78387cc5ac
meta: Switch back to nixos-unstable-small
nixos-unstable currently has the AMD GPU bug, which is fixed in
nixos-unstable-small.

See: https://nixpk.gs/pr-tracker.html?pr=284487
2024-01-30 18:07:27 -05:00
Donovan Glover
dd3bc13383
chore: Switch from nixos-unstable-small to nixos-unstable
nixos-unstable is now up to date.
2024-01-29 04:43:43 -05:00
Donovan Glover
80a1027d26
chore: Update to latest nixos-unstable-small release 2024-01-25 19:42:06 -05:00
Donovan Glover
b7a9416e35
feat: Theme Qt applications with stylix
Most Qt/KDE applications look way better after this.
2024-01-25 17:35:37 -05:00
Donovan Glover
c7f4111055
chore: Update to latest nixos-unstable release 2024-01-19 00:59:55 -05:00
Donovan Glover
01cfcc43d2
chore: Update to latest nixos-unstable-small release
Notably includes Hyprland v0.34.0 for testing.
2024-01-12 04:07:22 -05:00
Donovan Glover
6a050b4302
flake.nix: Switch back to nix-community/home-manager
The docs patch is now merged upstream.
2023-12-12 18:29:57 -05:00
Donovan Glover
ea6ef79862
home-manager: Use docs branch
Fixes an issue where home-manager would show optionsDocBook warnings on
every nixos-rebuild.
2023-12-07 19:11:10 -05:00
Donovan Glover
e977687af6
feat: Use upstream nixos-unstable branch
Since my changes are now upstreamed, I no longer need to use a personal
nixos-unstable branch. This makes it easier to use the source code of
the repository and simplifies the updating process.
2023-10-25 13:22:11 -04:00
Donovan Glover
c45221add7
flake.nix: Use new personal-unstable branch
This one is a lot simpler without all the merge commits in the history.

I should be able to eventually upstream the changes I made to
nixos-containers once I understand how to make those changes
configuration options.
2023-09-12 16:31:40 -04:00
Donovan Glover
abadce3a96
flake.nix: Use stylix from upstream
Although I originally wanted to make some cool pull requests for stylix,
it turns out that adding such features would be non-trivial due to the
lack of home-manager support. Since I implemented the functionality I
wanted in my own config already, there's no need to maintain a separate
stylix branch.
2023-08-31 15:55:50 -04:00
Donovan Glover
d61f4b16a5
flake.nix: Use home-manager from upstream
Although maintaining my own home-manager repository was a nice learning
exercise, I don't contribute to home-manager enough to warrant having a
personal branch.

Since my pqiv pull request was merged upstream, my branch is basically
the same as upstream anyway.
2023-08-31 15:52:47 -04:00
Donovan Glover
2b56eb75db
flake.nix: Add sakaya to inputs
This makes it possible to run wine applications inside systemd-nspawn
containers with minimal to no overhead.
2023-08-08 14:13:25 -04:00
Donovan Glover
9ed706c2a5
hyprland: Downgrade to v0.27.0
The white flash when starting hyprland is a deal breaker for me
personally and I'd rather not have to deal with it. Should hopefully be
fixed in a later release since it seems to be a wlroots issue.
2023-08-01 19:06:20 -04:00
Donovan Glover
d1a78a7a57
meta: Remove hyprbars
Although this was cute, there are simply too many bugs and other
inconveniences to be worth it. For example, the bar cannot be focused
when a workspace has a fullscreen application.
2023-08-01 19:04:43 -04:00
Donovan Glover
e3cf378b31
meta: Try hyprbars fork
This was my test of the hyprbars fork. It turns out that the original
version is more useful, although both versions crash whenever reloading
the plugin after unloading it once.
2023-08-01 18:54:26 -04:00
Donovan Glover
b84bad3806
meta: Add hyprbars
May or may not be useful for a more mouse-centric workflow.
2023-08-01 16:22:54 -04:00