Personal Nix flake
nixos home-manager nix
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

refactor: More consistent module options

Remove most of the "hidden enables" on my module namespace except where
a dependent option can be reasonably considered to be part of the base
feature set, enabled modules are now clear from skimming
`nix/{home,system}/modules/default.nix`. See `my.cli.editors` for the
most notable offender, as `my.cli.editors.enable` used to affect several
nested options.

Demote graphical profile to off by default as this flake provides configs
for both daily driver machines and servers

Rework `my.profiles.apps` namespace into `my.gui` for consistency

+73 -122
+1 -2
nix/home/configs/cheina@pc082.nix
··· 12 12 13 13 my = { 14 14 ci.build = true; 15 - cli.enable = true; 16 15 cli.git.enable = true; 17 16 cli.hishtory.enable = false; 18 17 de.gnome.theming.enableGnomeShellTheme = false; 19 - development.nixd.enableLsp = false; 18 + development.nixd.lsp.enable = false; 20 19 profiles = { 21 20 standalone = true; 22 21 wayland = true;
+1 -3
nix/home/modules/cli/atuin/default.nix
··· 7 7 }: let 8 8 cfg = config.my.cli.atuin; 9 9 in { 10 - options.my.cli.atuin.enable = 11 - lib.mkEnableOption "atuin" 12 - // {default = config.my.cli.enable;}; 10 + options.my.cli.atuin.enable = lib.mkEnableOption "atuin"; 13 11 config = lib.mkIf cfg.enable { 14 12 programs.mcfly.enable = lib.mkForce false; 15 13 programs.atuin = {
-26
nix/home/modules/cli/default.nix
··· 1 1 { 2 - config, 3 - lib, 4 - ... 5 - }: let 6 - inherit (lib) mkDefault mkEnableOption mkIf; 7 - cfg = config.my.cli; 8 - in { 9 2 imports = [ 10 3 ./atuin 11 4 ./editors ··· 20 13 ./zellij 21 14 ./zsh 22 15 ]; 23 - 24 - options.my.cli.enable = mkEnableOption "cli modules"; 25 - 26 - config.my.cli = mkIf cfg.enable { 27 - editors.enable = mkDefault true; 28 - essentials.enable = mkDefault true; 29 - fish.enable = mkDefault true; 30 - git = { 31 - enable = mkDefault true; 32 - lazygit.enable = mkDefault true; 33 - }; 34 - hishtory.enable = mkDefault false; 35 - nushell.enable = mkDefault true; 36 - starship.enable = mkDefault true; 37 - tealdeer.enable = mkDefault true; 38 - tmux.enable = mkDefault false; 39 - zellij.enable = mkDefault true; 40 - zsh.enable = mkDefault true; 41 - }; 42 16 }
+14 -11
nix/home/modules/cli/editors/default.nix
··· 4 4 ... 5 5 }: let 6 6 cfg = config.my.cli.editors; 7 - inherit (cfg) enable; 8 7 in { 9 8 imports = [ 10 9 ./helix ··· 12 11 ]; 13 12 14 13 options.my.cli.editors = { 15 - enable = lib.mkEnableOption "editors" // {default = config.my.cli.enable;}; 16 - kakoune.enable = lib.mkEnableOption "kakoune" // {default = enable;}; 17 - vim.enable = lib.mkEnableOption "vim" // {default = enable;}; 14 + kakoune.enable = lib.mkEnableOption "kakoune"; 15 + vim.enable = lib.mkEnableOption "vim"; 18 16 }; 19 17 20 - config = lib.mkIf cfg.enable { 21 - programs = { 22 - kakoune.enable = cfg.kakoune.enable; 23 - vim.enable = cfg.vim.enable; 24 - }; 25 - home.sessionVariables.EDITOR = "hx"; 26 - }; 18 + config = lib.mkMerge [ 19 + (lib.mkIf cfg.kakoune.enable { 20 + programs.kakoune = { 21 + enable = true; 22 + }; 23 + }) 24 + (lib.mkIf cfg.vim.enable { 25 + programs.vim = { 26 + enable = true; 27 + }; 28 + }) 29 + ]; 27 30 }
+2 -3
nix/home/modules/cli/editors/helix/default.nix
··· 5 5 }: let 6 6 cfg = config.my.cli.editors.helix; 7 7 in { 8 - options.my.cli.editors.helix.enable = 9 - lib.mkEnableOption "helix" 10 - // {default = config.my.cli.editors.enable;}; 8 + options.my.cli.editors.helix.enable = lib.mkEnableOption "helix"; 9 + 11 10 config = lib.mkIf cfg.enable { 12 11 programs.helix = { 13 12 enable = true;
+1 -3
nix/home/modules/cli/editors/neovim/default.nix
··· 9 9 ./treesitter.nix 10 10 ]; 11 11 12 - options.my.cli.editors.neovim.enable = 13 - lib.mkEnableOption "neovim" 14 - // {default = config.my.cli.editors.enable;}; 12 + options.my.cli.editors.neovim.enable = lib.mkEnableOption "neovim"; 15 13 16 14 config = lib.mkIf cfg.enable { 17 15 programs.nixvim = {
+3 -4
nix/home/modules/cli/starship/default.nix
··· 20 20 lib.mkForce 21 21 (pkgs.runCommand 22 22 "starship-settings" 23 - {buildInputs = [pkgs.nushell pkgs.starship];} 23 + {buildInputs = with pkgs; [nushell starship];} 24 24 '' 25 25 nu --commands " 26 26 starship preset nerd-font-symbols 27 27 | from toml 28 28 | merge deep ( 29 - open ${pkgs.writeText "starship-settings" (builtins.toJSON config.programs.starship.settings)} 29 + open '${config.programs.starship.settings |> builtins.toJSON |> (pkgs.writeText "starship-settings")}' 30 30 | from json 31 31 ) 32 32 | to toml 33 - " \ 34 - > $out 33 + " > $out 35 34 ''); 36 35 }; 37 36 }
+25 -3
nix/home/modules/default.nix
··· 36 36 ]; 37 37 38 38 my = { 39 - cli.enable = lib.mkDefault true; 40 - development.enable = lib.mkDefault true; 39 + cli = { 40 + atuin.enable = true; 41 + editors = { 42 + helix.enable = lib.mkDefault true; 43 + kakoune.enable = lib.mkDefault true; 44 + vim.enable = lib.mkDefault true; 45 + }; 46 + essentials.enable = lib.mkDefault true; 47 + fish.enable = lib.mkDefault true; 48 + git.enable = lib.mkDefault true; 49 + nushell.enable = lib.mkDefault true; 50 + starship.enable = lib.mkDefault true; 51 + tealdeer.enable = lib.mkDefault true; 52 + zellij.enable = lib.mkDefault true; 53 + zsh.enable = lib.mkDefault true; 54 + }; 55 + development = { 56 + nixd.enable = lib.mkDefault true; 57 + }; 41 58 nix.enable = lib.mkDefault true; 59 + security.enable = lib.mkDefault true; 42 60 scripts.enable = lib.mkDefault true; 43 61 ssh.enable = lib.mkDefault true; 44 62 }; 45 63 46 - programs.home-manager.enable = lib.mkDefault true; 64 + programs = { 65 + helix.defaultEditor = lib.mkDefault true; 66 + home-manager.enable = lib.mkDefault true; 67 + }; 68 + 47 69 systemd.user.startServices = "sd-switch"; 48 70 }
+1 -3
nix/home/modules/development/default.nix
··· 1 - {lib, ...}: { 1 + { 2 2 imports = [ 3 3 ./nixd.nix 4 4 ]; 5 - 6 - options.my.development.enable = lib.mkEnableOption "development features"; 7 5 }
+4 -8
nix/home/modules/development/nixd.nix
··· 10 10 isNixos = osConfig != {}; 11 11 in { 12 12 options.my.development.nixd = { 13 - enable = 14 - lib.mkEnableOption "nixd" 15 - // {default = config.my.development.enable;}; 16 - enableLsp = 17 - lib.mkEnableOption "nixd LSP" 18 - // {default = cfg.enable;}; 13 + enable = lib.mkEnableOption "nixd"; 14 + lsp.enable = lib.mkEnableOption "nixd LSP" // {default = cfg.enable;}; 19 15 }; 20 16 21 17 config = lib.mkMerge [ 22 - (lib.mkIf cfg.enableLsp { 18 + (lib.mkIf cfg.enable { 23 19 home.packages = [pkgs.nixd-lix]; 24 20 }) 25 - (lib.mkIf cfg.enableLsp { 21 + (lib.mkIf (cfg.lsp.enable && config.programs.helix.enable) { 26 22 programs.helix = { 27 23 languages = { 28 24 language = [
+2 -1
nix/home/modules/gui/default.nix
··· 13 13 ./firefox.nix 14 14 ./kitty.nix 15 15 ./mangohud.nix 16 + ./media.nix 16 17 ]; 17 18 18 19 options.my.gui.enable = lib.mkEnableOption "gui apps"; ··· 31 32 inherit (inputs.self.lib.config) profilePicture wallpaper; 32 33 in { 33 34 "${config.home.homeDirectory}/.face".source = profilePicture; 34 - "${config.xdg.userDirs.pictures}/Wallpapers/${builtins.baseNameOf wallpaper}".source = wallpaper; 35 + "${config.xdg.userDirs.pictures}/Wallpapers/${baseNameOf wallpaper}".source = wallpaper; 35 36 }; 36 37 37 38 programs = {
+1 -5
nix/home/modules/gui/mangohud.nix
··· 11 11 // { 12 12 default = 13 13 config.my.gui.enable 14 - && ( 15 - (osConfig == {}) 16 - || !(osConfig ? jovian) 17 - || !osConfig.jovian.steam.enable 18 - ); 14 + && !(osConfig.jovian.steam.enable or false); 19 15 }; 20 16 21 17 config = lib.mkIf cfg.enable {
+2 -3
nix/home/modules/misc/llm/default.nix
··· 9 9 inherit (inputs.nix-std.lib) serde; 10 10 inherit (lib) mkIf mkEnableOption mkOption; 11 11 cfg = config.my.misc.llm; 12 - defaultEnable = {default = cfg.enable;}; 13 12 in { 14 13 options.my.misc.llm = { 15 14 enable = mkEnableOption "LLM tools"; ··· 19 18 default = "tinyllama"; 20 19 }; 21 20 ollama = { 22 - enable = mkEnableOption "ollama configuration" // defaultEnable; 21 + enable = mkEnableOption "ollama configuration" // {default = cfg.enable;}; 23 22 url = mkOption { 24 23 description = "The URL of the ollama server"; 25 24 type = lib.types.str; ··· 32 31 }; 33 32 }; 34 33 smartcat = { 35 - enable = mkEnableOption "smartcat" // defaultEnable; 34 + enable = mkEnableOption "smartcat" // {default = cfg.enable;}; 36 35 model = mkOption { 37 36 description = "Which model to use"; 38 37 type = lib.types.str;
-6
nix/home/modules/profiles/apps/default.nix
··· 1 - { 2 - imports = [ 3 - ./gui.nix 4 - ./media.nix 5 - ]; 6 - }
-12
nix/home/modules/profiles/apps/gui.nix
··· 1 - { 2 - config, 3 - lib, 4 - ... 5 - }: let 6 - cfg = config.my.profiles.apps.gui; 7 - in { 8 - options.my.profiles.apps.gui = lib.mkEnableOption "GUI apps profile"; 9 - config = lib.mkIf cfg { 10 - my.gui.enable = true; 11 - }; 12 - }
+2 -2
nix/home/modules/profiles/apps/media.nix nix/home/modules/gui/media.nix
··· 6 6 ... 7 7 }: let 8 8 inherit (pkgs.stdenv.hostPlatform) system; 9 - cfg = config.my.profiles.apps.media; 9 + cfg = config.my.gui.media; 10 10 in { 11 - options.my.profiles.apps.media = lib.mkEnableOption "media profile"; 11 + options.my.gui.media = lib.mkEnableOption "gui media apps" // {default = config.my.gui.enable;}; 12 12 config = lib.mkIf cfg { 13 13 programs = { 14 14 mpv.enable = true;
-1
nix/home/modules/profiles/default.nix
··· 1 1 { 2 2 imports = [ 3 - ./apps 4 3 ./de 5 4 ./graphical.nix 6 5 ./llm
+1 -4
nix/home/modules/profiles/graphical.nix
··· 12 12 config = lib.mkIf cfg { 13 13 my = { 14 14 bars.dank-material-shell.enable = true; 15 - profiles = { 16 - apps.gui = true; 17 - apps.media = true; 18 - }; 15 + gui.enable = true; 19 16 }; 20 17 }; 21 18 }
+1 -1
nix/home/modules/security/default.nix
··· 10 10 options.my.security = { 11 11 enable = 12 12 lib.mkEnableOption "security settings" 13 - // {default = osConfig.my.security.enable or true;}; 13 + // {default = osConfig.my.security.enable or false;}; 14 14 }; 15 15 config = lib.mkIf cfg.enable { 16 16 home.packages =
+1 -7
nix/modules/gitHooks.nix
··· 3 3 inputs.git-hooks-nix.flakeModule 4 4 ]; 5 5 6 - perSystem = { 7 - config, 8 - system, 9 - pkgs, 10 - self', 11 - ... 12 - }: let 6 + perSystem = {self', ...}: let 13 7 inherit (self'.legacyPackages) pkgs; 14 8 in { 15 9 pre-commit = {
+1
nix/nixos/configs/desktop/default.nix
··· 16 16 hardware.rgb = true; 17 17 de.gnome = true; 18 18 de.hyprland = true; 19 + graphical = true; 19 20 }; 20 21 }; 21 22
+1
nix/nixos/configs/laptop/default.nix
··· 15 15 hardware.cpu.intel = true; 16 16 de.gnome = true; 17 17 de.hyprland = true; 18 + graphical = true; 18 19 }; 19 20 }; 20 21
-2
nix/nixos/configs/raspberrypi/default.nix
··· 13 13 my = { 14 14 ci.build = true; 15 15 security.u2f.relaxed = true; 16 - profiles.graphical = false; 17 16 }; 18 17 19 - hardware.graphics.enable = false; 20 18 boot.kernelPackages = pkgs.linuxPackages_latest; 21 19 nixpkgs.hostPlatform = "aarch64-linux"; 22 20
+2 -1
nix/nixos/configs/steamdeck/default.nix
··· 18 18 gaming.steam.enable = true; 19 19 security.u2f.relaxed = true; 20 20 profiles = { 21 + de.gnome = true; 22 + graphical = true; 21 23 kernel = false; 22 - de.gnome = true; 23 24 }; 24 25 }; 25 26
-1
nix/nixos/modules/default.nix
··· 50 50 theming.enable = mkDefault true; 51 51 zram.enable = mkDefault true; 52 52 profiles = { 53 - graphical = mkDefault true; 54 53 wayland = mkDefault config.my.profiles.graphical; 55 54 pipewire = mkDefault true; 56 55 kernel = mkDefault true;
+4 -3
nix/nixos/modules/gaming/obs.nix
··· 10 10 enable = 11 11 lib.mkEnableOption "OBS" 12 12 // {default = config.my.gaming.enable;}; 13 - enableVirtualWebcam = lib.mkEnableOption "OBS virtual webcam"; 13 + enableVirtualCamera = lib.mkEnableOption "OBS virtual webcam"; 14 14 }; 15 15 16 16 config = lib.mkMerge [ 17 17 (lib.mkIf cfg.enable { 18 18 programs.obs-studio = { 19 19 enable = true; 20 - enableVirtualCamera = true; 21 20 plugins = with pkgs.obs-studio-plugins; [ 22 21 input-overlay 23 22 obs-pipewire-audio-capture ··· 28 27 ]; 29 28 }; 30 29 }) 31 - (lib.mkIf (cfg.enable && cfg.enableVirtualWebcam) { 30 + (lib.mkIf (cfg.enable && cfg.enableVirtualCamera) { 31 + programs.obs-studio.enableVirtualCamera = true; 32 + 32 33 boot.extraModulePackages = with config.boot.kernelPackages; [ 33 34 v4l2loopback 34 35 ];
-4
nix/nixos/modules/profiles/de/hyprland.nix
··· 18 18 enable = true; 19 19 xwayland.enable = true; 20 20 }; 21 - hardware.graphics = { 22 - enable = true; 23 - enable32Bit = true; 24 - }; 25 21 security = { 26 22 pam.services.hyprlock = {}; 27 23 polkit.enable = true;
+3 -2
nix/nixos/modules/profiles/formfactor/desktop.nix
··· 9 9 in { 10 10 options.my.profiles.formfactor.desktop = lib.mkEnableOption "desktop profile"; 11 11 config = lib.mkIf cfg { 12 - my.gaming.obs.enableVirtualWebcam = true; 12 + my = { 13 + gaming.obs.enableVirtualCamera = true; 14 + }; 13 15 14 16 environment.systemPackages = with pkgs; [ 15 17 piper ··· 23 25 24 26 boot.kernelPackages = pkgs.linuxPackages_zen; 25 27 26 - hardware.graphics.enable = true; 27 28 hardware.keyboard.qmk.enable = true; 28 29 29 30 networking.firewall.allowedTCPPorts = [5900]; # Default VNC port
-1
nix/nixos/modules/profiles/formfactor/laptop.nix
··· 8 8 in { 9 9 options.my.profiles.formfactor.laptop = lib.mkEnableOption "laptop profile"; 10 10 config = lib.mkIf cfg { 11 - hardware.graphics.enable = true; 12 11 hardware.sensor.iio.enable = true; 13 12 14 13 powerManagement.enable = true;