Commit Graph

2671 Commits

Author SHA1 Message Date
Donovan Glover
dd72842221
home-manager: Make autocomplete work for man pages
This fixes an issue where packages installed with home-manager wouldn't
appear when tabbing to auto-complete man pages.
2024-04-04 09:43:00 -04:00
Donovan Glover
7ef220be22
meta: Make system module customizable 2024-04-04 09:41:32 -04:00
Donovan Glover
e1e1243618
meta: Migrate htop from home-manager to shell module
Realistically I want access to htop on any machine running my shell
configuration. Making this NixOS-specific removes some of the dependence
on home-manager as well.
2024-04-04 08:32:39 -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
ff99d22caf
chore: Replace lib.types.string with str
"string" is deprecated.
2024-04-04 07:58:32 -04:00
Donovan Glover
dae5ca4b03
meta: Rename hyprland module to desktop
This is the start of making it possible to include desktop-related
configuration options instead of only hyprland-related ones.

This simplifies things a bit since opinionated configurations can be
hidden behind an option and end users won't have to worry about all
the different possible modules they could import.
2024-04-04 05:45:12 -04:00
Donovan Glover
9ee08ca7eb
meta: Begin making hyprland module customizable
This is a part of simplifying the hyprland module to simply "desktop".
2024-04-04 05:38:23 -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
ecb2463ee7
meta: Merge mullvad module with networking
It should be fairly straight-forward to add an option that explicitly
enables mullvad and the associated networking rules.
2024-04-04 04:24: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
941ef546e5
meta: Merge fonts module with hyprland
This makes sense since fonts are part of the desktop and should be
included at the same time when using the hyprland module.
2024-04-03 23:13:18 -04:00
Donovan Glover
698994b62d
meta: Merge greetd module with hyprland
This change is a part of making the desktop-specific stuff its own
module. Note that importing the entire hyprland module into the wine
container doesn't seem to change anything, so simplifying and including
everything in this module should be fine.
2024-04-03 23:03:10 -04:00
Donovan Glover
82966406a4
meta: Merge starship module with shell
I originally separated these modules to avoid "opinionated" options like
neovim as the default editor. Now I realize however that it's easier to
load all opinionated settings by default since users can change them
either through the original options or with module-specific options.
2024-04-03 21:51:10 -04:00
Donovan Glover
a787713d8d
meta: Rename fish module to shell
By making this module more generic, it becomes possible to include CLI
programs and other applications as part of the "shell", then provide
options for users to enable or disable things as needed.
2024-04-03 21:43:11 -04:00
Donovan Glover
38e82be380
meta: Merge pipewire module with hyprland
Realistically if hyprland is being used then the user *probably* wants
audio as well, so merging them makes sense here.

This commit is a part of ultimately having a single module for "desktop"
usage.
2024-04-03 21:40:38 -04:00
Donovan Glover
e44b145164
meta: Merge neovim module with starship
This is a part of making a separate "shell" module that can be used to
provide a standard base of tools when working in headless environments.
2024-04-03 21:37:08 -04:00
Donovan Glover
a18a120634
system: Clean /tmp on boot
Necessary since /tmp is no longer a tmpfs.
2024-04-03 21:28:53 -04:00
Donovan Glover
d452e982e3
fish: Add nix flake check abbreviation
More useful now that it's also used for VM testing.
2024-04-03 20:07:35 -04:00
Donovan Glover
a3717c48f0
chore: Simplify fish module 2024-04-03 20:07:00 -04:00
Donovan Glover
582264f381
packages: Add mdopen
Discovered on r/rust and conveniently packaged with nix-init.
2024-04-03 19:47:20 -04:00
Donovan Glover
af3b7c2bd3
containers: Remove old imports
Will continue simplifying this later.
2024-04-03 10:17:00 -04:00
Donovan Glover
9ccdacaadf
chore: Simplify htop module 2024-04-03 10:12:54 -04:00
Donovan Glover
2048bc62f8
chore: Simplify thunar module 2024-04-03 09:59:32 -04:00
Donovan Glover
019603afc7
meta: Begin making system module customizable
These options are pretty important so it'd be cool to be able to change
them. Current strategy is to assume that configuration through the
module is preferred over overriding the NixOS option directly.
2024-04-03 09:44:57 -04:00
Donovan Glover
26348c28ea
chore(modules): Rename piper to hardware
Might rename again in the future, but for now this is an easy way to
keep track of all hardware-specific config.
2024-04-03 09:33:15 -04:00
Donovan Glover
1f80607ca0
meta: Merge zram module with system
Self-explanatory since zram is system-related. Doesn't seem to affect
containers which is good.
2024-04-03 09:16:24 -04:00
Donovan Glover
13d98c2c9f
meta: Merge nix and systemd modules with system
These are simple enough configurations that have benefits across many
different systems.
2024-04-03 08:06:04 -04:00
Donovan Glover
85ead9e779
meta: Merge boot module with system
This seems like it could fit with the hardware module as well, however
time will tell if we're able to keep this in system when importing it
into containers and virtual machines.

Note that boot.loader.efi.canTouchEfiVariables gets set to true during
the nixos-install process, so it should be okay to keep here.
2024-04-03 07:43:43 -04:00
Donovan Glover
cc3991a38a
meta: Merge timezone and locale with system
Usually one would want to define all of these options at the same time,
so it doesn't make sense to require importing several different modules.

For values that aren't needed, users can either override the configuration
in their own module or use an option that has been written upstream for the
module.
2024-04-03 07:15:30 -04:00
Donovan Glover
2452f61338
meta: Merge logind with piper
This is a part of putting hardware-related configs together so they
don't distract from the other shell-related and desktop-related configs.
2024-04-03 07:12:41 -04:00
Donovan Glover
2e64dbd3e3
meta: Drop docker (again)
Docker feels a bit too old school after being spoiled by the Nix
language and all the features that NixOS provides. Dockerfiles are not
as cool to write as Nix files and docker-compose.yml lacks many of the
reproducible benefits one gets from sticking with Nix.

Now that I have more experience with Nix, it should be possible for me
to build and run the services I want to run with Nix instead of Docker.
This should additionally reduce my personal machine's startup time,
which was already quite low with Hyprland.

As a final closing, expertise in Nix seems more useful than Docker for
my personal goals. I'd rather be able to control entire Linux systems
and their full environments with containers, virtual machines, and other
goodies than be restricted to the simplistic model that is Docker.
2024-04-03 07:05:40 -04:00
Donovan Glover
039cf97368
meta: Merge udev with piper
This is part of merging all hardware-specific config into one module.
2024-04-03 06:29:07 -04:00
Donovan Glover
7f97bb62c2
meta: Merge services.resolved.llmnr with networking
Link-Local Multicast Name Resolution is networking related and should be
of interest to users that are also interested in the networking module.
2024-04-03 06:19:08 -04:00
Donovan Glover
8e16a465e1
meta: Merge cdemu with wine
The cdemu module is wine-specific and should be enabled together with
the wine module, with an option for the user to disable it if desired.
2024-04-03 06:01:32 -04:00
Donovan Glover
942785cf5b
chore(nix): Clean up rofi module 2024-04-03 05:52:10 -04:00
Donovan Glover
e82b8d40f9
chore(nix): Clean up ncmpcpp module 2024-04-03 05:51:01 -04:00
Donovan Glover
ea4c8d16dd
specializations: Make opt-in with mkEnableOption
Specializations basically double the build time for each one added, so
requiring users to explicitly enable it means quicker build times for
those that prefer Hyprland (which is easier to configure declaratively).
2024-04-03 02:46:42 -04:00
Donovan Glover
9c95252be4
nix: Drop unnecessary xdg.configFile 2024-04-02 19:34:25 -04:00
Donovan Glover
d250e8520f
nix: Prefer dontUnpack over phony src
Prevents webp-thumbnailer from being rebuilt when the phony src changes.
2024-04-02 19:12:06 -04:00
Donovan Glover
b8ad062cec
nix: Use lib.singleton where possible 2024-04-02 18:53:56 -04:00
Donovan Glover
39cdc4972e
meta(dual-function-keys): Improve readability
Adds a few variables to make things easier to reason about.
2024-04-02 17:19:07 -04:00
Donovan Glover
0f7c8678d9
chore(nix): Use string over float
Fixes an issue where Nix was unhappy with floats being inside strings.
2024-04-02 17:17:23 -04:00
Donovan Glover
42bcd16f65
meta(nix): Replace inline YAML with builtins.toJSON 2024-04-02 16:31:23 -04:00
Donovan Glover
fa98ead7ea
meta(hyprland): Drop stylix-specific values
Makes it possible to use the hyprland config without stylix.
2024-04-02 16:00:05 -04:00
Donovan Glover
dfcdd78291
meta(hyprland): Configure with Nix
This change lets us take advantage of hyprland's auto-reloading
functionality and lets us use the color scheme generated from stylix.
2024-04-02 15:49:34 -04:00
Donovan Glover
a4bdf7a076
chore(nix): Prefer builtins.toJSON where possible 2024-04-02 14:46:28 -04:00
Donovan Glover
6dde83cea9
fish(nix-collect-garbage): Delete user garbage as well
Fixes an issue where user-specific stuff never got cleaned up from the
nix store.
2024-04-02 14:34:48 -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
1d165d3068
neovim: Add syntax highlighting for glsl
Note that it may be easier to use treesitter highlighting by default.
2024-04-01 19:45:22 -04:00
Donovan Glover
35b677c46d
dual-function-keys: Change KEY_GRAVE to right alt
Should avoid conflicts where tapping the shift key in succession is
necessary.
2024-04-01 19:43:42 -04:00