aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCollin Williams <96917990+bluedragon1221@users.noreply.github.com>2025-09-19 17:32:27 -0500
committerCollin Williams <96917990+bluedragon1221@users.noreply.github.com>2025-09-19 17:32:27 -0500
commite63f4bda23477436bee8b30db73cf8deba4a8a5f (patch)
tree5897ba5e2e24c633d3c96b8d43213138118c6737
parent6291fefa5741f201f29e2916ca29b93bcc6b7fc8 (diff)
parent5d0d346f838a7711fa79eb6edab828107b95a499 (diff)
merge changes from main
-rw-r--r--.gitignore1
-rw-r--r--flake.lock44
-rw-r--r--flake.nix28
-rw-r--r--hosts/ganymede/config.nix36
-rw-r--r--hosts/ganymede/disks.nix40
-rw-r--r--hosts/ganymede/nixos.nix8
-rw-r--r--hosts/jupiter/config.nix15
-rw-r--r--hosts/jupiter/hjem.nix (renamed from hosts/jupiter/home.nix)5
-rw-r--r--hosts/jupiter/nixos.nix (renamed from hosts/jupiter/system.nix)2
-rw-r--r--hosts/mercury/ai.nix1
-rw-r--r--hosts/mercury/config.nix30
-rw-r--r--hosts/mercury/disks.nix2
-rw-r--r--hosts/mercury/hjem.nix10
-rw-r--r--hosts/mercury/home.nix17
-rw-r--r--hosts/mercury/nixos.nix (renamed from hosts/mercury/system.nix)11
-rw-r--r--lib/lib.nix2
-rw-r--r--lib/nix-furnace/default.nix102
-rw-r--r--lib/nix-furnace/mkSystem.nix119
-rw-r--r--modules/boot/nixos/default.nix (renamed from modules/boot/system/default.nix)2
-rw-r--r--modules/boot/nixos/plymouth.nix (renamed from modules/boot/system/plymouth.nix)0
-rw-r--r--modules/desktop/hjem/default.nix13
-rw-r--r--modules/desktop/hjem/gtk.nix38
-rw-r--r--modules/desktop/hjem/programs/firefox.nix26
-rw-r--r--modules/desktop/hjem/programs/foot.nix (renamed from modules/desktop/system/programs/foot.nix)14
-rw-r--r--modules/desktop/hjem/programs/research.nix26
-rw-r--r--modules/desktop/hjem/wm/dunst.nix (renamed from modules/desktop/system/components/dunst.nix)8
-rw-r--r--modules/desktop/hjem/wm/fuzzel.nix (renamed from modules/desktop/system/components/fuzzel.nix)17
-rw-r--r--modules/desktop/hjem/wm/sway.nix (renamed from modules/desktop/system/environments/sway.nix)53
-rw-r--r--modules/desktop/home/gtk/adwaita.nix33
-rw-r--r--modules/desktop/home/gtk/catppuccin.nix33
-rw-r--r--modules/desktop/home/gtk/default.nix26
-rw-r--r--modules/desktop/nixos/default.nix12
-rw-r--r--modules/desktop/nixos/fonts.nix8
-rw-r--r--modules/desktop/nixos/gnome.nix (renamed from modules/desktop/system/environments/gnome.nix)14
-rw-r--r--modules/desktop/nixos/greeters/gdm.nix13
-rw-r--r--modules/desktop/nixos/greeters/greetd.nix19
-rw-r--r--modules/desktop/nixos/programs/blackbox.nix (renamed from modules/desktop/system/programs/blackbox.nix)0
-rw-r--r--modules/desktop/nixos/programs/firefox.nix68
-rw-r--r--modules/desktop/options.nix99
-rw-r--r--modules/desktop/system/default.nix14
-rw-r--r--modules/desktop/system/programs/alacritty.nix76
-rw-r--r--modules/desktop/system/programs/firefox.nix50
-rw-r--r--modules/nix/nixos/default.nix (renamed from modules/nix/system/default.nix)0
-rw-r--r--modules/services/nixos/audio.nix (renamed from modules/services/system/audio.nix)2
-rw-r--r--modules/services/nixos/bluetooth.nix (renamed from modules/services/system/bluetooth.nix)0
-rw-r--r--modules/services/nixos/default.nix (renamed from modules/services/system/default.nix)1
-rw-r--r--modules/services/nixos/networking/default.nix (renamed from modules/services/system/networking/default.nix)0
-rw-r--r--modules/services/nixos/networking/iwd.nix (renamed from modules/services/system/networking/iwd.nix)1
-rw-r--r--modules/services/nixos/networking/networkmanager.nix (renamed from modules/services/system/networking/networkmanager.nix)0
-rw-r--r--modules/services/nixos/selfhost/default.nix (renamed from modules/desktop/home/default.nix)2
-rw-r--r--modules/services/nixos/selfhost/navidrome.nix19
-rw-r--r--modules/services/nixos/tailscale.nix (renamed from modules/services/system/tailscale.nix)0
-rw-r--r--modules/services/options.nix17
-rw-r--r--modules/terminal/hjem/default.nix (renamed from modules/terminal/system/default.nix)11
-rw-r--r--modules/terminal/hjem/programs/bash.nix29
-rw-r--r--modules/terminal/hjem/programs/bat.nix25
-rw-r--r--modules/terminal/hjem/programs/broot.nix (renamed from modules/terminal/system/programs/broot.nix)21
-rw-r--r--modules/terminal/hjem/programs/cmus.nix (renamed from modules/terminal/system/programs/cmus.nix)24
-rw-r--r--modules/terminal/hjem/programs/eza.nix25
-rw-r--r--modules/terminal/hjem/programs/fish.nix35
-rw-r--r--modules/terminal/hjem/programs/fzf.nix25
-rw-r--r--modules/terminal/hjem/programs/git.nix (renamed from modules/terminal/system/programs/git.nix)14
-rw-r--r--modules/terminal/hjem/programs/helix.nix (renamed from modules/terminal/system/programs/helix.nix)40
-rw-r--r--modules/terminal/hjem/programs/lazygit.nix (renamed from modules/terminal/system/programs/lazygit.nix)14
-rw-r--r--modules/terminal/hjem/programs/starship.nix (renamed from modules/terminal/system/programs/starship.nix)19
-rw-r--r--modules/terminal/hjem/programs/tmux.nix (renamed from modules/terminal/system/programs/tmux.nix)86
-rw-r--r--modules/terminal/nixos/default.nix10
-rw-r--r--modules/terminal/options.nix6
-rw-r--r--modules/terminal/system/programs/bat.nix18
-rw-r--r--modules/terminal/system/programs/eza.nix18
-rw-r--r--modules/terminal/system/programs/fish.nix39
-rw-r--r--modules/terminal/system/programs/fzf.nix18
-rw-r--r--modules/user/nixos/default.nix (renamed from modules/user/system/default.nix)0
73 files changed, 937 insertions, 717 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b2be92b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+result
diff --git a/flake.lock b/flake.lock
index 9180297..ba4e3da 100644
--- a/flake.lock
+++ b/flake.lock
@@ -115,26 +115,6 @@
"type": "github"
}
},
- "home-manager": {
- "inputs": {
- "nixpkgs": [
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1754527677,
- "narHash": "sha256-qAzCtmKkMz40xFgP9KN+TCKjVieK4u04EWwl2KvVk0E=",
- "owner": "nix-community",
- "repo": "home-manager",
- "rev": "475d35797d9537354d825260cf583114537affc2",
- "type": "github"
- },
- "original": {
- "owner": "nix-community",
- "repo": "home-manager",
- "type": "github"
- }
- },
"lanzaboote": {
"inputs": {
"crane": "crane",
@@ -221,10 +201,10 @@
"inputs": {
"disko": "disko",
"hjem": "hjem",
- "home-manager": "home-manager",
"lanzaboote": "lanzaboote",
"nixos-facter-modules": "nixos-facter-modules",
- "nixpkgs": "nixpkgs"
+ "nixpkgs": "nixpkgs",
+ "system-manager": "system-manager"
}
},
"rust-overlay": {
@@ -293,6 +273,26 @@
"type": "github"
}
},
+ "system-manager": {
+ "inputs": {
+ "nixpkgs": [
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1756281415,
+ "narHash": "sha256-CjpoVwpJJ+DOZilPrDpZ5S3V+B1Y0calaHxTp2xMvGs=",
+ "owner": "numtide",
+ "repo": "system-manager",
+ "rev": "e271eedac9a24678ca6cfc61677837422bf474e0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "system-manager",
+ "type": "github"
+ }
+ },
"systems": {
"locked": {
"lastModified": 1681028828,
diff --git a/flake.nix b/flake.nix
index 5a5c2b7..747c47a 100644
--- a/flake.nix
+++ b/flake.nix
@@ -14,8 +14,9 @@
inputs.nixpkgs.follows = "nixpkgs";
};
- home-manager = {
- url = "github:nix-community/home-manager";
+ # for server that doesn't have nixos
+ system-manager = {
+ url = "github:numtide/system-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
@@ -25,9 +26,26 @@
};
};
- outputs = inputs:
- (import ./lib/nix-furnace).mkFlake {
+ outputs = inputs: let
+ inherit (import ./lib/nix-furnace/mkSystem.nix) mkNixosSystem mkSystemManagerSystem;
+ in {
+ nixosConfigurations."mercury" = mkNixosSystem {
inherit inputs;
- namespace = "collinux";
+ hostname = "mercury";
+ username = "collin";
+ module_types = ["hjem" "nixos"];
};
+ nixosConfigurations."jupiter" = mkNixosSystem {
+ inherit inputs;
+ hostname = "jupiter";
+ username = "collin";
+ module_types = ["hjem" "nixos"];
+ };
+ nixosConfigurations."ganymede" = mkNixosSystem {
+ inherit inputs;
+ hostname = "ganymede";
+ username = "collin";
+ module_types = ["nixos" "hjem"];
+ };
+ };
}
diff --git a/hosts/ganymede/config.nix b/hosts/ganymede/config.nix
new file mode 100644
index 0000000..62abd56
--- /dev/null
+++ b/hosts/ganymede/config.nix
@@ -0,0 +1,36 @@
+{
+ collinux = {
+ user = {
+ name = "collin";
+ password = "$y$j9T$08yFysn8jr9K4Wk.hYXbG0$NzY9vIbNknJViA..Jw.vF8wmQtBgEZZU.cdLQOmDvU2";
+ };
+
+ terminal = {
+ programs = {
+ git = {
+ enable = true;
+ userName = "Collin Williams";
+ userEmail = "96917990+bluedragon1221@users.noreply.github.com";
+ };
+ };
+ };
+
+ boot.systemd-boot.enable = true;
+
+ services = {
+ networking = {
+ enable = true;
+ networkmanager.enable = true;
+ };
+
+ audio = {
+ enable = true;
+ pulse.enable = true;
+ };
+
+ selfhost = {
+ navidrome.enable = true;
+ };
+ };
+ };
+}
diff --git a/hosts/ganymede/disks.nix b/hosts/ganymede/disks.nix
new file mode 100644
index 0000000..b701fda
--- /dev/null
+++ b/hosts/ganymede/disks.nix
@@ -0,0 +1,40 @@
+{
+ disko.enableConfig = true;
+ disko.devices = {
+ disk.main = {
+ device = "/dev/nvme0n1";
+ type = "disk";
+ content = {
+ type = "gpt";
+ partitions = {
+ ESP = {
+ type = "EF00";
+ size = "1G";
+ content = {
+ type = "filesystem";
+ format = "vfat";
+ mountpoint = "/boot";
+ mountOptions = ["umask=0077"];
+ };
+ };
+ media = {
+ size = "100G";
+ content = {
+ type = "filesystem";
+ format = "xfs";
+ mountpoint = "/media";
+ };
+ };
+ root = {
+ size = "100%";
+ content = {
+ type = "filesystem";
+ format = "ext4";
+ mountpoint = "/";
+ };
+ };
+ };
+ };
+ };
+ };
+}
diff --git a/hosts/ganymede/nixos.nix b/hosts/ganymede/nixos.nix
new file mode 100644
index 0000000..bdede45
--- /dev/null
+++ b/hosts/ganymede/nixos.nix
@@ -0,0 +1,8 @@
+{inputs, ...}: {
+ # imports = [
+ # inputs.disko.nixosModules.disko
+ # ./disks.nix
+ # ];
+
+ nixpkgs.hostPlatform = "x86_64-linux";
+}
diff --git a/hosts/jupiter/config.nix b/hosts/jupiter/config.nix
index 80dd198..ea33143 100644
--- a/hosts/jupiter/config.nix
+++ b/hosts/jupiter/config.nix
@@ -1,15 +1,4 @@
-{inputs, ...}: {
- nix-furnace = {
- extraHomeModules = [
- ./home.nix
- ];
-
- extraSystemModules = [
- ./system.nix
- inputs.hjem.nixosModules.default
- ];
- };
-
+{
collinux = {
theme = "adwaita";
@@ -21,6 +10,8 @@
desktop = {
gnome.enable = true;
+ gdm.enable = true;
+
programs = {
firefox.enable = true;
blackbox.enable = true;
diff --git a/hosts/jupiter/home.nix b/hosts/jupiter/hjem.nix
index 137c74a..33d260a 100644
--- a/hosts/jupiter/home.nix
+++ b/hosts/jupiter/hjem.nix
@@ -1,6 +1,5 @@
{pkgs, ...}: {
- home.preferXdgDirectories = true;
- home.packages = with pkgs; [
+ packages = with pkgs; [
orca-slicer
freecad-wayland
gimp
@@ -8,6 +7,4 @@
bottles
musescore
];
-
- home.stateVersion = "25.05";
}
diff --git a/hosts/jupiter/system.nix b/hosts/jupiter/nixos.nix
index b82f70a..268b2bc 100644
--- a/hosts/jupiter/system.nix
+++ b/hosts/jupiter/nixos.nix
@@ -25,4 +25,6 @@
fonts.packages = [pkgs.nerd-fonts.iosevka];
system.stateVersion = "25.05";
+
+ nixpkgs.hostPlatform = "x86_64-linux";
}
diff --git a/hosts/mercury/ai.nix b/hosts/mercury/ai.nix
index 1bece4a..42a478a 100644
--- a/hosts/mercury/ai.nix
+++ b/hosts/mercury/ai.nix
@@ -3,4 +3,5 @@
enable = true;
loadModels = ["deepseek-r1:1.5b"];
};
+ environment.systemPackages = [pkgs.mcphost];
}
diff --git a/hosts/mercury/config.nix b/hosts/mercury/config.nix
index 3790951..d5f0832 100644
--- a/hosts/mercury/config.nix
+++ b/hosts/mercury/config.nix
@@ -1,15 +1,4 @@
-{inputs, ...}: {
- nix-furnace = {
- extraSystemModules = [
- inputs.hjem.nixosModules.default
- ./system.nix
- ./disks.nix
- ];
- extraHomeModules = [
- ./home.nix
- ];
- };
-
+{
collinux = {
theme = "catppuccin";
@@ -19,14 +8,23 @@
};
desktop = {
- sway.enable = true;
wallpaper = ./wallpaper.jpg;
- components.fuzzel.enable = true;
- components.dunst.enable = true;
+
+ gtk.enable = true;
+
+ greetd.enable = true;
+
+ sway = {
+ enable = true;
+ components.fuzzel.enable = true;
+ components.dunst.enable = true;
+ };
programs = {
firefox.enable = true;
foot.enable = true;
+
+ research.enable = true;
};
};
@@ -73,7 +71,7 @@
boot = {
systemd-boot.enable = true;
- plymouth.enable = true;
+ # plymouth.enable = true;
secureBoot.enable = true;
};
};
diff --git a/hosts/mercury/disks.nix b/hosts/mercury/disks.nix
index ffa0871..af6c161 100644
--- a/hosts/mercury/disks.nix
+++ b/hosts/mercury/disks.nix
@@ -1,6 +1,4 @@
{
- # TODO: Replace this with disko eventually
-
fileSystems."/" = {
device = "/dev/disk/by-uuid/3d80a86b-3268-4209-a833-b531b8bc0ebc";
fsType = "ext4";
diff --git a/hosts/mercury/hjem.nix b/hosts/mercury/hjem.nix
new file mode 100644
index 0000000..463290c
--- /dev/null
+++ b/hosts/mercury/hjem.nix
@@ -0,0 +1,10 @@
+{pkgs, ...}: {
+ packages = with pkgs; [
+ # GUI apps
+ tor-browser # don't ask
+ obsidian
+ kdePackages.kleopatra
+ mpv
+ musescore
+ ];
+}
diff --git a/hosts/mercury/home.nix b/hosts/mercury/home.nix
deleted file mode 100644
index 5e80d16..0000000
--- a/hosts/mercury/home.nix
+++ /dev/null
@@ -1,17 +0,0 @@
-{pkgs, ...}: {
- home.preferXdgDirectories = true;
- home.packages = with pkgs; [
- # GUI apps
- tor-browser # don't ask
- obsidian
- kdePackages.kleopatra
- mpv
- musescore
- qutebrowser
-
- zotero
- zathura
- ];
-
- home.stateVersion = "25.05";
-}
diff --git a/hosts/mercury/system.nix b/hosts/mercury/nixos.nix
index 0e982a0..05e84a7 100644
--- a/hosts/mercury/system.nix
+++ b/hosts/mercury/nixos.nix
@@ -1,9 +1,11 @@
{
+ lib,
pkgs,
inputs,
...
}: {
imports = [
+ ./disks.nix
./battery.nix
./ai.nix
@@ -13,18 +15,11 @@
inputs.lanzaboote.nixosModules.lanzaboote
];
- fonts = {
- enableDefaultPackages = false;
- packages = with pkgs; [
- ibm-plex
- nerd-fonts.iosevka
- ];
- };
+ environment.defaultPackages = lib.mkForce []; # im not a noob
networking.firewall.allowedUDPPorts = [445];
networking.firewall.allowedTCPPorts = [8000];
users.users.collin.packages = [pkgs.cifs-utils];
- fonts.fontDir.enable = true;
system.stateVersion = "25.05";
}
diff --git a/lib/lib.nix b/lib/lib.nix
index 5310a6d..640f0ca 100644
--- a/lib/lib.nix
+++ b/lib/lib.nix
@@ -49,4 +49,6 @@ let
in {
inherit globimport;
inherit options;
+
+ flatten = builtins.foldl' (a: b: a ++ b) [];
}
diff --git a/lib/nix-furnace/default.nix b/lib/nix-furnace/default.nix
deleted file mode 100644
index 303730e..0000000
--- a/lib/nix-furnace/default.nix
+++ /dev/null
@@ -1,102 +0,0 @@
-let
- my-lib = import ../lib.nix;
- inherit (my-lib.globimport) lazyImport getSubdirs getSubfiles;
-
- mkHomeImports = modName: [
- (lazyImport ../../modules/${modName}/options.nix)
- (lazyImport ../../modules/${modName}/home/default.nix)
- ];
- mkSystemImports = modName: [
- (lazyImport ../../modules/${modName}/options.nix)
- (lazyImport ../../modules/${modName}/system/default.nix)
- ];
-
- mkModules = mapFn: {
- imports =
- [../../modules/options.nix]
- ++ (builtins.foldl' (a: b: a ++ b) [] (builtins.map mapFn (getSubdirs ../../modules)));
- };
-
- mkHomeModules = mkModules mkHomeImports;
- mkSystemModules = mkModules mkSystemImports;
-
- mkHost = {
- hostname,
- namespace,
- inputs,
- ...
- }: let
- preloadedConfig = import ../../hosts/${hostname}/config.nix {inherit inputs;};
- username = preloadedConfig."${namespace}".user.name;
-
- furnaceOptions = {lib, ...}: let
- inherit (lib) mkOption types;
- in {
- options.nix-furnace = {
- extraHomeModules = mkOption {
- type = with types; listOf path;
- default = [];
- };
-
- extraSystemModules = mkOption {
- type = with types; listOf path;
- default = [];
- };
- };
- };
-
- specialArgs = {inherit inputs my-lib;};
- in
- inputs.nixpkgs.lib.nixosSystem {
- inherit specialArgs;
- modules =
- [
- {networking.hostName = hostname;}
-
- ../../hosts/${hostname}/config.nix
-
- mkSystemModules
-
- furnaceOptions
-
- # Home-manager
- inputs.home-manager.nixosModules.home-manager
- {
- home-manager = {
- backupFileExtension = "bak";
- useGlobalPkgs = true;
- useUserPackages = true;
- extraSpecialArgs = specialArgs;
- users."${username}" = {
- imports =
- [
- mkHomeModules
-
- furnaceOptions
-
- ../../hosts/${hostname}/config.nix
- ]
- ++ preloadedConfig.nix-furnace.extraHomeModules;
- };
- };
- }
- ]
- ++ preloadedConfig.nix-furnace.extraSystemModules;
- };
-
- mkFlake = {
- namespace,
- inputs,
- ...
- }: {
- nixosConfigurations =
- builtins.listToAttrs
- (builtins.map (hostname: {
- name = hostname;
- value = mkHost {inherit inputs hostname namespace;};
- })
- (getSubdirs ../../hosts));
- };
-in {
- inherit mkFlake;
-}
diff --git a/lib/nix-furnace/mkSystem.nix b/lib/nix-furnace/mkSystem.nix
new file mode 100644
index 0000000..cf14f4a
--- /dev/null
+++ b/lib/nix-furnace/mkSystem.nix
@@ -0,0 +1,119 @@
+let
+ my-lib = import ../lib.nix;
+ inherit (my-lib.globimport) getSubdirs lazyImport;
+
+ listModules = getSubdirs ../../modules;
+
+ mkNixosSystem = {
+ inputs,
+ hostname,
+ username,
+ module_types,
+ }:
+ inputs.nixpkgs.lib.nixosSystem {
+ specialArgs = {inherit inputs my-lib;};
+ modules = [
+ {networking.hostName = hostname;}
+
+ ../../hosts/${hostname}/config.nix
+
+ # Nixos-sided modules
+ {
+ imports =
+ [
+ ../../modules/options.nix
+ ../../hosts/${hostname}/config.nix
+ (lazyImport ../../hosts/${hostname}/nixos.nix)
+ ]
+ ++ (listModules
+ |> (builtins.map (modName: [
+ (lazyImport ../../modules/${modName}/options.nix)
+ (lazyImport ../../modules/${modName}/nixos/default.nix)
+ ]))
+ |> my-lib.flatten);
+ }
+
+ # Home-sided modules
+ (
+ if (builtins.elem "home" module_types)
+ then {
+ imports = [
+ inputs.home-manager.nixosModules.home-manager
+ ];
+ home-manager = {
+ backupFileExtension = "bak";
+ useGlobalPkgs = true;
+ useUserPackages = true;
+ extraSpecialArgs = {inherit inputs my-lib;};
+ users.${username} = {
+ imports =
+ [
+ ../../modules/options.nix
+ ../../hosts/${hostname}/config.nix
+ (lazyImport ../../hosts/${hostname}/home.nix)
+ {
+ home.preferXdgDirectories = true;
+ }
+ ]
+ ++ (listModules
+ |> (builtins.map (modName: [
+ (lazyImport ../../modules/${modName}/options.nix)
+ (lazyImport ../../modules/${modName}/home/default.nix)
+ ]))
+ |> my-lib.flatten);
+ };
+ };
+ }
+ else {}
+ )
+
+ # Hjem-sided modules
+ (
+ if (builtins.elem "hjem" module_types)
+ then {
+ imports = [
+ inputs.hjem.nixosModules.hjem
+ ];
+ hjem = {
+ extraModules =
+ [
+ ../../modules/options.nix
+ ../../hosts/${hostname}/config.nix
+ (lazyImport ../../hosts/${hostname}/hjem.nix)
+ ]
+ ++ (listModules
+ |> (builtins.map (modName: [
+ (lazyImport ../../modules/${modName}/options.nix)
+ (lazyImport ../../modules/${modName}/hjem/default.nix)
+ ]))
+ |> my-lib.flatten);
+ specialArgs = {inherit inputs my-lib;};
+ users.${username} = {
+ enable = true;
+ user = username;
+ directory = "/home/${username}";
+ };
+ };
+ }
+ else {}
+ )
+ ];
+ };
+
+ mkSystemManagerSystem = {
+ inputs,
+ hostname,
+ }:
+ inputs.system-manager.lib.makeSystemConfig {
+ modules =
+ [../../modules/options.nix ../../hosts/${hostname}/system.nix]
+ ++ (listModules
+ |> (builtins.map (modName: [
+ (lazyImport ../../modules/${modName}/options.nix)
+ (lazyImport ../../modules/${modName}/system/default.nix)
+ ]))
+ |> my-lib.flatten);
+ };
+in {
+ inherit mkNixosSystem mkSystemManagerSystem;
+}
diff --git a/modules/boot/system/default.nix b/modules/boot/nixos/default.nix
index 53f18be..66f31fc 100644
--- a/modules/boot/system/default.nix
+++ b/modules/boot/nixos/default.nix
@@ -12,9 +12,11 @@ in {
boot =
{
+ bcache.enable = false; # why is this default on? I DON'T CARE ABOUT bcache
initrd = {
verbose = false;
systemd.enable = true;
+ checkJournalingFS = false;
};
loader = {
systemd-boot = lib.optionalAttrs (cfg.systemd-boot.enable && !cfg.secureBoot.enable) {
diff --git a/modules/boot/system/plymouth.nix b/modules/boot/nixos/plymouth.nix
index 5f7952b..5f7952b 100644
--- a/modules/boot/system/plymouth.nix
+++ b/modules/boot/nixos/plymouth.nix
diff --git a/modules/desktop/hjem/default.nix b/modules/desktop/hjem/default.nix
new file mode 100644
index 0000000..f7dd95e
--- /dev/null
+++ b/modules/desktop/hjem/default.nix
@@ -0,0 +1,13 @@
+{
+ imports = [
+ ./gtk.nix
+
+ ./wm/sway.nix
+ ./wm/dunst.nix
+ ./wm/fuzzel.nix
+
+ ./programs/foot.nix
+ ./programs/firefox.nix
+ ./programs/research.nix
+ ];
+}
diff --git a/modules/desktop/hjem/gtk.nix b/modules/desktop/hjem/gtk.nix
new file mode 100644
index 0000000..3ea3b37
--- /dev/null
+++ b/modules/desktop/hjem/gtk.nix
@@ -0,0 +1,38 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.collinux.desktop.gtk;
+in
+ lib.mkIf cfg.enable {
+ packages = with pkgs; [
+ dconf
+
+ papirus-icon-theme
+ cfg.cursor_data.package
+ cfg.theme_data.package
+ ];
+
+ xdg.config.files = let
+ value.Settings = {
+ gtk-cursor-theme-name = cfg.cursor_data.name;
+ gtk-cursor-theme-size = 24;
+ gtk-icon-theme-name = "Papirus";
+ gtk-theme-name = cfg.theme_data.name;
+ };
+ in {
+ "gtk-3.0/settings.ini" = {
+ generator = lib.generators.toINI {};
+ inherit value;
+ };
+ "gtk-4.0/settings.ini" = {
+ generator = lib.generators.toINI {};
+ inherit value;
+ };
+ "gtk-4.0/gtk.css".text = ''
+ @import url("file://${cfg.theme_data.package}/gtk-4.0/gtk.css");
+ '';
+ };
+ }
diff --git a/modules/desktop/hjem/programs/firefox.nix b/modules/desktop/hjem/programs/firefox.nix
new file mode 100644
index 0000000..73040d2
--- /dev/null
+++ b/modules/desktop/hjem/programs/firefox.nix
@@ -0,0 +1,26 @@
+{
+ pkgs,
+ lib,
+ config,
+ ...
+}: let
+ cfg = config.collinux.desktop.programs.firefox;
+in
+ lib.mkIf cfg.enable {
+ files.".mozilla/firefox/profiles.ini" = {
+ generator = lib.generators.toINI {};
+ value = {
+ Profile0 = {
+ Name = "collin";
+ IsRelative = 1;
+ Path = "collin";
+ Default = 1;
+ };
+ General = {
+ StartWithLastProfile = 1;
+ Version = 2;
+ };
+ };
+ };
+ packages = [pkgs.firefox];
+ }
diff --git a/modules/desktop/system/programs/foot.nix b/modules/desktop/hjem/programs/foot.nix
index 1b99ce3..4d630c6 100644
--- a/modules/desktop/system/programs/foot.nix
+++ b/modules/desktop/hjem/programs/foot.nix
@@ -50,14 +50,12 @@
};
in
lib.mkIf cfg.enable {
- hjem.users."${config.collinux.user.name}" = {
- files = {
- ".config/foot/foot.ini" = {
- generator = lib.generators.toINI {};
- value = settings;
- };
+ files = {
+ ".config/foot/foot.ini" = {
+ generator = lib.generators.toINI {};
+ value = settings;
};
-
- packages = [pkgs.foot];
};
+
+ packages = [pkgs.foot];
}
diff --git a/modules/desktop/hjem/programs/research.nix b/modules/desktop/hjem/programs/research.nix
new file mode 100644
index 0000000..3bfde76
--- /dev/null
+++ b/modules/desktop/hjem/programs/research.nix
@@ -0,0 +1,26 @@
+{
+ config,
+ pkgs,
+ lib,
+ ...
+}: let
+ cfg = config.collinux.desktop.programs.research;
+in
+ lib.mkIf cfg.enable {
+ packages = with pkgs; [
+ zotero
+ zathura
+ xournalpp
+ ];
+ files = {
+ ".config/xournalpp/toolbar.ini" = {
+ generator = lib.generators.toINI {};
+ value = {
+ "Default" = {
+ toolbarTop1 = "ERASER,PEN,HIGHLIGHTER,SELECT_PDF_TEXT_LINEAR,SEPARATOR,TEXT,MATH_TEX,IMAGE,SPACER,FINE,MEDIUM,THICK,VERY_THICK,SEPARATOR,SELECT_FONT,COLOR(6),COLOR(8),COLOR(9),COLOR(3),COLOR(2),COLOR(4),COLOR(7),COLOR(5),COLOR(0),SEPARATOR";
+ name = "Default";
+ };
+ };
+ };
+ };
+ }
diff --git a/modules/desktop/system/components/dunst.nix b/modules/desktop/hjem/wm/dunst.nix
index 1069087..38a8240 100644
--- a/modules/desktop/system/components/dunst.nix
+++ b/modules/desktop/hjem/wm/dunst.nix
@@ -4,7 +4,7 @@
pkgs,
...
}: let
- cfg = config.collinux.desktop.components.dunst;
+ cfg = config.collinux.desktop.sway.components.dunst;
settings = ''
[global]
@@ -31,8 +31,6 @@
'';
in
lib.mkIf cfg.enable {
- hjem.users."${config.collinux.user.name}" = {
- files.".config/dunst/dunstrc".text = settings;
- packages = [pkgs.dunst pkgs.inotify-tools];
- };
+ files.".config/dunst/dunstrc".text = settings;
+ packages = with pkgs; [dunst inotify-tools];
}
diff --git a/modules/desktop/system/components/fuzzel.nix b/modules/desktop/hjem/wm/fuzzel.nix
index f5937c6..7b9d075 100644
--- a/modules/desktop/system/components/fuzzel.nix
+++ b/modules/desktop/hjem/wm/fuzzel.nix
@@ -4,12 +4,11 @@
pkgs,
...
}: let
- cfg = config.collinux.desktop.components.fuzzel;
- ini' = pkgs.formats.ini {};
+ cfg = config.collinux.desktop.sway.components.fuzzel;
- settings = ini'.generate "fuzzel.ini" {
+ settings = {
main = {
- prompt = " ";
+ prompt = "";
dpi-aware = false;
font = "Iosevka Nerd Font";
@@ -41,10 +40,10 @@
};
in
lib.mkIf cfg.enable {
- hjem.users."${config.collinux.user.name}" = {
- files = {
- ".config/fuzzel/fuzzel.ini".source = settings;
- };
- packages = [pkgs.fuzzel];
+ files.".config/fuzzel/fuzzel.ini" = {
+ generator = lib.generators.toINI {};
+ value = settings;
};
+
+ packages = [pkgs.fuzzel];
}
diff --git a/modules/desktop/system/environments/sway.nix b/modules/desktop/hjem/wm/sway.nix
index 4ea3378..1cd7750 100644
--- a/modules/desktop/system/environments/sway.nix
+++ b/modules/desktop/hjem/wm/sway.nix
@@ -58,48 +58,53 @@
bindsym Mod4+2 workspace number 2
bindsym Mod4+3 workspace number 3
bindsym Mod4+4 workspace number 4
+ bindsym Mod4+5 workspace number 5
+ bindsym Mod4+6 workspace number 6
+ bindsym Mod4+7 workspace number 7
+ bindsym Mod4+8 workspace number 8
+ bindsym Mod4+9 workspace number 9
+
bindsym Mod4+Shift+1 move container to workspace number 1
bindsym Mod4+Shift+2 move container to workspace number 2
bindsym Mod4+Shift+3 move container to workspace number 3
bindsym Mod4+Shift+4 move container to workspace number 4
+ bindsym Mod4+Shift+5 move container to workspace number 5
+ bindsym Mod4+Shift+6 move container to workspace number 6
+ bindsym Mod4+Shift+7 move container to workspace number 7
+ bindsym Mod4+Shift+8 move container to workspace number 8
+ bindsym Mod4+Shift+9 move container to workspace number 9
- bindsym Mod4+Return exec "${pkgs.foot}/bin/footclient"
+ bindsym Mod4+Return exec ${pkgs.foot}/bin/footclient
bindsym Mod4+Shift+Return exec ${pkgs.foot}/bin/foot
- bindsym Mod4+Space exec ${pkgs.fuzzel}/bin/fuzzel
- bindsym Mod4+b exec ${pkgs.firefox}/bin/firefox
- bindsym Mod4+Shift+b exec ${pkgs.qutebrowser}/bin/qutebrowser
+ bindsym Mod4+Space exec ${pkgs.fuzzel}/bin/fuzzel
+ bindsym Mod4+b exec ${pkgs.firefox}/bin/firefox
+ bindsym Mod4+Shift+b exec ${pkgs.qutebrowser}/bin/qutebrowser
bindsym Mod4+q kill
- bindsym XF86AudioRaiseVolume exec 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+; dunstify -t 300 -h string:x-canonical-private-synchronous:audio "Volume: " -h "int:value:$(dec=$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | cut -d\" \" -f2);echo "$dec * 100" | bc)"'
- bindsym XF86AudioLowerVolume exec 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-; dunstify -t 300 -h string:x-canonical-private-synchronous:audio "Volume: " -h "int:value:$(dec=$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | cut -d\" \" -f2);echo "$dec * 100" | bc)"'
+ bindsym XF86AudioRaiseVolume exec 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+; dunstify -t 300 -h string:x-canonical-private-synchronous:audio "Volume: " -h "int:value:$(dec=$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | cut -d\" \" -f2);echo "$dec * 100" | ${pkgs.bc}/bin/bc)"'
+ bindsym XF86AudioLowerVolume exec 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-; dunstify -t 300 -h string:x-canonical-private-synchronous:audio "Volume: " -h "int:value:$(dec=$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | cut -d\" \" -f2);echo "$dec * 100" | ${pkgs.bc}/bin/bc)"'
bindsym XF86MonBrightnessUp exec 'brightnessctl set 5%+; dunstify -t 300 -h string:x-canonical-private-synchronous:brightness "Brightness: " -h "int:value:$(g=$(brightnessctl get);m=$(brightnessctl max);echo $((g * 100 / m)))"'
bindsym XF86MonBrightnessDown exec 'brightnessctl set 5%-; dunstify -t 300 -h string:x-canonical-private-synchronous:brightness "Brightness: " -h "int:value:$(g=$(brightnessctl get);m=$(brightnessctl max);echo $((g * 100 / m)))"'
+ bindsym Home exec 'playerctl previous'
+ bindsym End exec 'playerctl play-pause'
+ bindsym Insert exec 'playerctl next'
+
default_border pixel 2
smart_borders on
smart_gaps on
'';
in
lib.mkIf cfg.enable {
- hjem.users."${config.collinux.user.name}" = {
- files = {
- ".config/sway/config".text = settings;
- ".config/sway/catppuccin-mocha".text = colors;
- };
-
- packages = [pkgs.sway pkgs.bc pkgs.brightnessctl];
+ files = {
+ ".config/sway/config".text = settings;
+ ".config/sway/catppuccin-mocha".text = colors;
};
- # Greetd
- services.greetd = {
- enable = true;
- settings = rec {
- initial_session = {
- command = "${pkgs.sway}/bin/sway";
- user = config.collinux.user.name;
- };
- default_session = initial_session;
- };
- };
+ packages = with pkgs; [
+ sway
+ brightnessctl
+ playerctl
+ ];
}
diff --git a/modules/desktop/home/gtk/adwaita.nix b/modules/desktop/home/gtk/adwaita.nix
deleted file mode 100644
index 1a17d13..0000000
--- a/modules/desktop/home/gtk/adwaita.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- pkgs,
- lib,
- config,
- ...
-}: let
- cfg = config.collinux.desktop.gtk;
-in
- lib.mkIf (cfg.theme == "adwaita") {
- home.pointerCursor = {
- gtk.enable = true;
- dotIcons.enable = false;
-
- package = pkgs.vanilla-dmz;
- name = "Vanilla-DMZ";
- size = 24;
- };
-
- gtk.theme = {
- name = "adw-gtk3";
- package = pkgs.adw-gtk3;
- };
-
- dconf = {
- enable = true;
- settings = {
- "org/gnome/desktop/interface" = {
- color-scheme = "prefer-dark";
- enable-hot-corners = false;
- };
- };
- };
- }
diff --git a/modules/desktop/home/gtk/catppuccin.nix b/modules/desktop/home/gtk/catppuccin.nix
deleted file mode 100644
index 81f0d3d..0000000
--- a/modules/desktop/home/gtk/catppuccin.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- pkgs,
- lib,
- config,
- ...
-}: let
- cfg = config.collinux.desktop.gtk;
-in
- lib.mkIf (cfg.theme == "catppuccin") {
- home.pointerCursor = {
- hyprcursor = {
- enable = true;
- size = 24;
- };
- gtk.enable = true;
- dotIcons.enable = false;
-
- package = pkgs.catppuccin-cursors.mochaDark;
- name = "catppuccin-mocha-dark-cursors";
- size = 24;
- };
-
- gtk = {
- theme = {
- package = pkgs.catppuccin-gtk.override {
- accents = ["blue"];
- variant = "mocha";
- size = "standard";
- };
- name = "catppuccin-mocha-blue-standard";
- };
- };
- }
diff --git a/modules/desktop/home/gtk/default.nix b/modules/desktop/home/gtk/default.nix
deleted file mode 100644
index 8dc00f2..0000000
--- a/modules/desktop/home/gtk/default.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- pkgs,
- config,
- lib,
- ...
-}: let
- cfg = config.collinux.gtk;
-in {
- imports = [
- ./catppuccin.nix
- ./adwaita.nix
- ];
-
- config = {
- home.packages = [pkgs.dconf];
-
- gtk = {
- enable = true;
- iconTheme = {
- package = pkgs.papirus-icon-theme;
- name = "Papirus";
- };
- gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
- };
- };
-}
diff --git a/modules/desktop/nixos/default.nix b/modules/desktop/nixos/default.nix
new file mode 100644
index 0000000..1301483
--- /dev/null
+++ b/modules/desktop/nixos/default.nix
@@ -0,0 +1,12 @@
+{...}: {
+ imports = [
+ ./gnome.nix
+ ./fonts.nix
+
+ ./greeters/greetd.nix
+ ./greeters/gdm.nix
+
+ ./programs/firefox.nix
+ ./programs/blackbox.nix
+ ];
+}
diff --git a/modules/desktop/nixos/fonts.nix b/modules/desktop/nixos/fonts.nix
new file mode 100644
index 0000000..3f10d92
--- /dev/null
+++ b/modules/desktop/nixos/fonts.nix
@@ -0,0 +1,8 @@
+{pkgs, ...}: {
+ fonts = {
+ enableDefaultPackages = false;
+ # fontDir.enable = true;
+ fontconfig.enable = true;
+ packages = [pkgs.nerd-fonts.iosevka pkgs.ibm-plex]; # for terminal (blackbox or foot)
+ };
+}
diff --git a/modules/desktop/system/environments/gnome.nix b/modules/desktop/nixos/gnome.nix
index e298756..c88a809 100644
--- a/modules/desktop/system/environments/gnome.nix
+++ b/modules/desktop/nixos/gnome.nix
@@ -7,18 +7,14 @@
cfg = config.collinux.desktop.gnome;
in
lib.mkIf cfg.enable {
- services.displayManager.gdm = {
- enable = true;
- wayland = true;
- };
services.desktopManager.gnome.enable = true;
environment.gnome.excludePackages = with pkgs; [
orca
evince
- file-roller
+ # file-roller
geary
- gnome-disk-utility
+ # gnome-disk-utility
seahorse
# sushi
# sysprof
@@ -85,6 +81,12 @@ in
sleep-inactive-ac-type = "nothing";
};
+ # Theming, etc
+ "org/gnome/desktop/interface" = {
+ color-scheme = "prefer-dark";
+ enable-hot-corners = false;
+ };
+
# Keybindings
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = {
binding = "<Super>Return";
diff --git a/modules/desktop/nixos/greeters/gdm.nix b/modules/desktop/nixos/greeters/gdm.nix
new file mode 100644
index 0000000..598114a
--- /dev/null
+++ b/modules/desktop/nixos/greeters/gdm.nix
@@ -0,0 +1,13 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.collinux.desktop.gdm;
+in
+ lib.mkIf cfg.enable {
+ services.displayManager.gdm = {
+ enable = true;
+ wayland = true;
+ };
+ }
diff --git a/modules/desktop/nixos/greeters/greetd.nix b/modules/desktop/nixos/greeters/greetd.nix
new file mode 100644
index 0000000..42ff9a7
--- /dev/null
+++ b/modules/desktop/nixos/greeters/greetd.nix
@@ -0,0 +1,19 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.collinux.desktop.greetd;
+in
+ lib.mkIf cfg.enable {
+ services.greetd = {
+ enable = true;
+ settings = rec {
+ initial_session = {
+ command = lib.getExe cfg.command;
+ user = config.collinux.user.name;
+ };
+ default_session = initial_session;
+ };
+ };
+ }
diff --git a/modules/desktop/system/programs/blackbox.nix b/modules/desktop/nixos/programs/blackbox.nix
index 9cff44a..9cff44a 100644
--- a/modules/desktop/system/programs/blackbox.nix
+++ b/modules/desktop/nixos/programs/blackbox.nix
diff --git a/modules/desktop/nixos/programs/firefox.nix b/modules/desktop/nixos/programs/firefox.nix
new file mode 100644
index 0000000..f2daf43
--- /dev/null
+++ b/modules/desktop/nixos/programs/firefox.nix
@@ -0,0 +1,68 @@
+{
+ pkgs,
+ lib,
+ config,
+ ...
+}: let
+ cfg = config.collinux.desktop.programs.firefox;
+in
+ lib.mkIf cfg.enable {
+ programs.firefox = {
+ enable = true;
+ policies = {
+ PasswordManagerEnabled = false; # use bitwarden instead
+ DisableAccounts = true;
+ DisablePocket = true;
+ DisplayBookmarksToolbar = "always";
+
+ OverrideFirstRunPage = "";
+ OverridePostUpdatePage = "";
+
+ NewTabPage = false;
+
+ Preferences = let
+ opt = Value: {
+ inherit Value;
+ Status = "locked";
+ };
+ in {
+ "toolkit.legacyUserProfileCustomizations.stylesheets" = opt true;
+ "browser.tabs.inTitlebar" = opt 0;
+ "browser.tabs.hoverPreview.enabled" = opt 0;
+
+ "browser.tabs.loadBookmarksInTabs" = opt true;
+
+ "accessibility.force_disabled" = opt 1;
+
+ "browser.compactmode.show" = opt true;
+ "browser.uidensity" = opt 1;
+
+ "media.webspeech.synth.enabled" = opt false; # im not disabled
+ "media.webspeech.synth.dont_notify_on_error" = opt true;
+ };
+
+ ExtensionSettings = let
+ ext = name: {
+ installation_mode = "force_installed";
+ install_url = "https://addons.mozilla.org/firefox/downloads/latest/${name}/latest.xpi";
+ };
+ in
+ {
+ "{446900e4-71c2-419f-a6a7-df9c091e268b}" = ext "bitwarden-password-manager";
+ "uBlock0@raymondhill.net" = ext "uBlock0@raymondhill.net";
+ "addon@darkreader.org" = ext "addon@darkreader.org";
+ }
+ // (lib.optionalAttrs (cfg.theme == "catppuccin") {
+ "{88b098c8-19be-421e-8ffa-85ddd1f3f004}" = ext "catppuccin-mocha-blue";
+ })
+ // (lib.optionalAttrs (cfg.extensions.zotero.enable) {
+ "zotero@chnm.gmu.edu" = {
+ installation_mode = "force_installed";
+ install_url = "https://download.zotero.org/connector/firefox/release/Zotero_Connector-5.0.181.xpi";
+ };
+ });
+ };
+ };
+
+ services.speechd.enable = lib.mkForce false; # gets installed by firefox, but we don't need it
+ }
diff --git a/modules/desktop/options.nix b/modules/desktop/options.nix
index 6b1e991..994b13d 100644
--- a/modules/desktop/options.nix
+++ b/modules/desktop/options.nix
@@ -1,4 +1,5 @@
{
+ pkgs,
config,
lib,
my-lib,
@@ -9,32 +10,86 @@
in {
options = {
collinux.desktop = {
- greeter = mkOption {
- type = types.enum ["gdm" "greetd"];
- default = let
- cfg = config.collinux.desktop;
- in
- if (cfg.sway.enable && !cfg.gnome.enable)
- then "greetd"
- else "gdm";
- };
-
wallpaper = mkOption {
- type = types.path;
+ type = with types; oneOf [str path];
+ description = "File to use as the wallpaper on this machine";
};
- components = {
- waybar = mkProgramOption "waybar";
- dunst = mkProgramOption "dunst";
- fuzzel = mkProgramOption "fuzzel";
+ greetd = {
+ enable = mkEnableOption "greetd greeter";
+ command = mkOption {
+ type = lib.types.package;
+ default = let
+ cfg = config.collinux.desktop;
+ in
+ if (cfg.sway.enable && !cfg.gnome.enable)
+ then pkgs.sway
+ else null;
+ };
};
+ gdm.enable = mkEnableOption "gdm display manager";
- sway.enable = mkEnableOption "sway";
+ sway = {
+ enable = mkEnableOption "sway";
+ components = {
+ # waybar = mkProgramOption "waybar";
+ dunst = mkProgramOption "dunst";
+ fuzzel = mkProgramOption "fuzzel";
+ };
+ };
gnome.enable = mkEnableOption "gnome";
- gtk.theme = mkOption {
- type = types.enum ["catppuccin" "adwaita"];
- default = config.collinux.theme;
+ gtk = {
+ enable = mkEnableOption "gtk theming";
+ theme = mkOption {
+ type = types.enum ["catppuccin" "adwaita"];
+ default = config.collinux.theme;
+ };
+ cursor_data = {
+ package = mkOption {
+ type = lib.types.package;
+ default =
+ if (config.collinux.desktop.gtk.theme == "catppuccin")
+ then pkgs.catppuccin-cursors.mochaDark
+ else if (config.collinux.desktop.gtk.theme == "adwaita")
+ then pkgs.vanilla-dmz
+ else null;
+ };
+ name = mkOption {
+ type = lib.types.str;
+ default =
+ if (config.collinux.desktop.gtk.theme == "catppuccin")
+ then "catppuccin-mocha-dark-cursors"
+ else if (config.collinux.desktop.gtk.theme == "adwaita")
+ then "Vanilla-DMZ"
+ else null;
+ };
+ };
+ theme_data = {
+ package = mkOption {
+ type = lib.types.package;
+ default =
+ if (config.collinux.desktop.gtk.theme == "catppuccin")
+ then
+ (pkgs.catppuccin-gtk.override {
+ variant = "mocha";
+ accents = ["blue"];
+ size = "standard";
+ })
+ else if (config.collinux.desktop.gtk.theme == "adwaita")
+ then pkgs.adw-gtk3
+ else "";
+ };
+ name = mkOption {
+ type = lib.types.str;
+ default =
+ if (config.collinux.desktop.gtk.theme == "catppuccin")
+ then "catppuccin-mocha-blue-standard"
+ else if (config.collinux.desktop.gtk.theme == "adwaita")
+ then "adw-gtk3"
+ else "";
+ };
+ };
};
programs = {
@@ -48,11 +103,17 @@ in {
type = types.enum ["none" "catppuccin" "adwaita"];
default = config.collinux.theme;
};
+ extensions.zotero.enable = mkOption {
+ description = "install Zotero Connector for Firefox";
+ default = config.collinux.desktop.programs.research.enable;
+ };
};
foot.enable = mkEnableOption "foot";
blackbox.enable = mkEnableOption "blackbox";
alacritty.enable = mkEnableOption "alacritty";
+
+ research.enable = mkEnableOption "zathura, Xournal++, Zotero, Zotero Connector";
};
};
};
diff --git a/modules/desktop/system/default.nix b/modules/desktop/system/default.nix
deleted file mode 100644
index 8827070..0000000
--- a/modules/desktop/system/default.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{...}: {
- imports = [
- ./environments/gnome.nix
- ./environments/sway.nix
-
- ./programs/firefox.nix
- ./programs/foot.nix
- ./programs/blackbox.nix
- ./programs/alacritty.nix
-
- ./components/fuzzel.nix
- ./components/dunst.nix
- ];
-}
diff --git a/modules/desktop/system/programs/alacritty.nix b/modules/desktop/system/programs/alacritty.nix
deleted file mode 100644
index f73a901..0000000
--- a/modules/desktop/system/programs/alacritty.nix
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- pkgs,
- config,
- lib,
- ...
-}: let
- cfg = config.collinux.desktop.programs.alacritty;
-in
- lib.mkIf cfg.enable {
- hjem.users."${config.collinux.user.name}" = {
- files.".config/alacritty/alacritty.toml" = {
- value = {
- general = {
- import = ["keys.toml" "colors.toml"];
- live_config_reload = true;
- };
- font = {
- normal.family = "Iosevka Nerd Font";
- size = 12;
- };
- };
- generator = (pkgs.formats.toml {}).generate "alacritty.toml";
- };
-
- files.".config/alacritty/colors.toml".text = ''
- [colors]
- draw_bold_text_with_bright_colors = false
-
- # Default colors
- [colors.primary]
- background = '#242424'
- foreground = '#C5C6C5'
-
- # Colors the cursor will use if `custom_cursor_colors` is true
- [colors.cursor]
- text = '#2D3234'
- cursor = '#C5C6C5'
-
- # Normal colors
- [colors.normal]
- black = '#2D3234'
- red = '#FFA500'
- green = '#6FEE91'
- yellow = '#91EE6F'
- blue = '#916FB4'
- magenta = '#EE6F91'
- cyan = '#6F91B4'
- white = '#C5C6C5'
-
- # Bright colors
- [colors.bright]
- black = '#566164'
- red = '#FFFF60'
- green = '#33393B'
- yellow = '#4B5356'
- blue = '#919494'
- magenta = '#D3D4D5'
- cyan = '#EE6F6F'
- white = '#EEEEEC'
- '';
-
- files.".config/alacritty/keys.toml".text = ''
- [[keyboard.bindings]]
- chars = "\u001b[27;5;9~"
- key = "Tab"
- mods = "Control"
-
- [[keyboard.bindings]]
- chars = "\u001b[27;5;13~"
- key = "Enter"
- mods = "Control"
- '';
-
- packages = [pkgs.alacritty];
- };
- }
diff --git a/modules/desktop/system/programs/firefox.nix b/modules/desktop/system/programs/firefox.nix
deleted file mode 100644
index 7f4435b..0000000
--- a/modules/desktop/system/programs/firefox.nix
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- lib,
- config,
- ...
-}: let
- cfg = config.collinux.desktop.programs.firefox;
-in
- lib.mkIf cfg.enable {
- programs.firefox = {
- enable = true;
- policies = {
- PasswordManagerEnabled = false; # use bitwarden instead
- DisableAccounts = true;
- DisablePocket = true;
-
- OverrideFirstRunPage = "";
- OverridePostUpdatePage = "";
-
- ExtensionSettings = let
- ext = name: {
- installation_mode = "force_installed";
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/${name}/latest.xpi";
- };
- in
- lib.mkMerge [
- {
- "{446900e4-71c2-419f-a6a7-df9c091e268b}" = ext "bitwarden-password-manager";
- "uBlock0@raymondhill.net" = ext "uBlock0@raymondhill.net";
- }
- (lib.mkIf (cfg.theme == "catppuccin") {
- "{88b098c8-19be-421e-8ffa-85ddd1f3f004}" = ext "catppuccin-mocha-blue";
- })
- ];
- };
- };
-
- hjem.users."${config.collinux.user.name}".files = {
- ".mozilla/firefox/profiles.ini".text = ''
- [Profile0]
- Name=collin
- IsRelative=1
- Path=collin
- Default=1
-
- [General]
- StartWithLastProfile=1
- Version=2
- '';
- };
- }
diff --git a/modules/nix/system/default.nix b/modules/nix/nixos/default.nix
index 9c5c51e..9c5c51e 100644
--- a/modules/nix/system/default.nix
+++ b/modules/nix/nixos/default.nix
diff --git a/modules/services/system/audio.nix b/modules/services/nixos/audio.nix
index 93f8289..273f1a4 100644
--- a/modules/services/system/audio.nix
+++ b/modules/services/nixos/audio.nix
@@ -7,7 +7,7 @@
cfg = config.collinux.services.audio;
in
lib.mkIf cfg.enable {
- security.rtkit.enable = true;
+ security.rtkit.enable = false;
services.pipewire = {
enable = true;
wireplumber.enable = true;
diff --git a/modules/services/system/bluetooth.nix b/modules/services/nixos/bluetooth.nix
index a86b5b3..a86b5b3 100644
--- a/modules/services/system/bluetooth.nix
+++ b/modules/services/nixos/bluetooth.nix
diff --git a/modules/services/system/default.nix b/modules/services/nixos/default.nix
index b9ae4c7..d177b88 100644
--- a/modules/services/system/default.nix
+++ b/modules/services/nixos/default.nix
@@ -4,5 +4,6 @@
./audio.nix
./bluetooth.nix
./tailscale.nix
+ ./selfhost
];
}
diff --git a/modules/services/system/networking/default.nix b/modules/services/nixos/networking/default.nix
index 68c794c..68c794c 100644
--- a/modules/services/system/networking/default.nix
+++ b/modules/services/nixos/networking/default.nix
diff --git a/modules/services/system/networking/iwd.nix b/modules/services/nixos/networking/iwd.nix
index d081792..441498d 100644
--- a/modules/services/system/networking/iwd.nix
+++ b/modules/services/nixos/networking/iwd.nix
@@ -23,4 +23,5 @@ in
useDHCP = false;
networkmanager.enable = false;
};
+ systemd.network.enable = lib.mkForce false;
}
diff --git a/modules/services/system/networking/networkmanager.nix b/modules/services/nixos/networking/networkmanager.nix
index f22f922..f22f922 100644
--- a/modules/services/system/networking/networkmanager.nix
+++ b/modules/services/nixos/networking/networkmanager.nix
diff --git a/modules/desktop/home/default.nix b/modules/services/nixos/selfhost/default.nix
index 914b450..d3b884a 100644
--- a/modules/desktop/home/default.nix
+++ b/modules/services/nixos/selfhost/default.nix
@@ -4,7 +4,7 @@
...
}: {
imports = [
- ./gtk
+ ./navidrome.nix
];
qt.style = lib.optionalAttrs (config.collinux.theme == "adwaita") {name = "adwaita-dark";};
diff --git a/modules/services/nixos/selfhost/navidrome.nix b/modules/services/nixos/selfhost/navidrome.nix
new file mode 100644
index 0000000..5250b85
--- /dev/null
+++ b/modules/services/nixos/selfhost/navidrome.nix
@@ -0,0 +1,19 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.collinux.services.selfhost.navidrome;
+in
+ lib.mkIf cfg.enable {
+ services.navidrome = {
+ enable = true;
+ inherit (cfg) user;
+ settings = {
+ Port = 4533;
+ Address = "0.0.0.0";
+ EnableInsightsCollector = false;
+ MusicFolder = "/home/${cfg.user}/Music";
+ };
+ };
+ }
diff --git a/modules/services/system/tailscale.nix b/modules/services/nixos/tailscale.nix
index 3fbd691..3fbd691 100644
--- a/modules/services/system/tailscale.nix
+++ b/modules/services/nixos/tailscale.nix
diff --git a/modules/services/options.nix b/modules/services/options.nix
index ddf6f58..b887395 100644
--- a/modules/services/options.nix
+++ b/modules/services/options.nix
@@ -11,12 +11,7 @@ in {
enable = mkEnableOption "wifi";
iwd.enable = mkEnableOption "lightweight wifi daemon";
networkmanager.enable = mkEnableOption "heavier wifi daemon";
- tailscale = {
- enable = mkEnableOption "tailscale";
- authKeyFile = mkOption {
- type = "path";
- };
- };
+ tailscale.enable = mkEnableOption "tailscale";
};
audio = {
enable = mkEnableOption "pipewire + wireplumber";
@@ -28,6 +23,16 @@ in {
blueman.enable = mkEnableOption "graphical bluetooth manager";
bluetuith.enable = mkEnableOption "terminal bluetooth manager";
};
+
+ selfhost = {
+ navidrome = {
+ enable = mkEnableOption "navidrome music server";
+ user = mkOption {
+ description = "user to run the service as";
+ default = config.collinux.user.name;
+ };
+ };
+ };
};
};
diff --git a/modules/terminal/system/default.nix b/modules/terminal/hjem/default.nix
index 120e967..7915319 100644
--- a/modules/terminal/system/default.nix
+++ b/modules/terminal/hjem/default.nix
@@ -1,6 +1,4 @@
-{config, ...}: let
- cfg = config.collinux.terminal.shells;
-in {
+{
imports = [
./programs/fzf.nix
./programs/bat.nix
@@ -14,11 +12,4 @@ in {
./programs/helix.nix
./programs/fish.nix
];
-
- programs.command-not-found.enable = false; # broken without nix-channels
-
- users.users."${config.collinux.user.name}" = {
- shell = cfg.defaultShell;
- ignoreShellProgramCheck = true;
- };
}
diff --git a/modules/terminal/hjem/programs/bash.nix b/modules/terminal/hjem/programs/bash.nix
new file mode 100644
index 0000000..646cbf8
--- /dev/null
+++ b/modules/terminal/hjem/programs/bash.nix
@@ -0,0 +1,29 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.collinux.terminal.shells.bash;
+in
+ lib.mkIf cfg.enable {
+ files = {
+ ".bashrc".text = ''
+ eval "$(direnv hook bash)"
+
+ for file in ~/.config/bash/conf.d/*; do source "$file"; done
+ '';
+
+ packages = with pkgs; [
+ fish
+ ripgrep
+ fd
+ moreutils
+ zip
+ unzip
+ btop
+ jq
+ direnv
+ ];
+ };
+ }
diff --git a/modules/terminal/hjem/programs/bat.nix b/modules/terminal/hjem/programs/bat.nix
new file mode 100644
index 0000000..3d605cc
--- /dev/null
+++ b/modules/terminal/hjem/programs/bat.nix
@@ -0,0 +1,25 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.collinux.terminal.programs.bat;
+in
+ lib.mkIf cfg.enable {
+ files =
+ (lib.optionalAttrs config.collinux.terminal.shells.fish.enable {
+ ".config/fish/conf.d/bat.fish".text = ''
+ alias cat bat
+ set -gx BAT_THEME "base16"
+ '';
+ })
+ // (lib.optionalAttrs config.collinux.terminal.shells.bash.enable {
+ ".config/fish/conf.d/bat.bash".text = ''
+ alias cat="bat"
+ export BAT_THEME="base16"
+ '';
+ });
+
+ packages = [pkgs.bat];
+ }
diff --git a/modules/terminal/system/programs/broot.nix b/modules/terminal/hjem/programs/broot.nix
index fdb480a..2907a85 100644
--- a/modules/terminal/system/programs/broot.nix
+++ b/modules/terminal/hjem/programs/broot.nix
@@ -115,18 +115,23 @@
};
in
lib.mkIf cfg.enable {
- hjem.users."${config.collinux.user.name}" = {
- files = {
+ files =
+ {
".config/broot/conf.toml" = {
generator = (pkgs.formats.toml {}).generate "conf.toml";
value = conf;
};
-
- ".config/fish/conf.d/broot.fish".text = lib.mkIf config.collinux.terminal.shells.fish.enable ''
- ${pkgs.broot}/bin/broot --print-shell-function fish | source
+ }
+ // (lib.optionalAttrs config.collinux.terminal.shells.fish.enable {
+ ".config/fish/conf.d/broot.fish".text = ''
+ broot --print-shell-function fish | source
+ '';
+ })
+ // (lib.optionalAttrs config.collinux.terminal.shells.bash.enable {
+ ".config/bash/conf.d/broot.bash".text = ''
+ eval "$(broot --print-shell-function bash)"
'';
- };
+ });
- packages = [pkgs.broot];
- };
+ packages = [pkgs.broot];
}
diff --git a/modules/terminal/system/programs/cmus.nix b/modules/terminal/hjem/programs/cmus.nix
index e5184ce..afd2350 100644
--- a/modules/terminal/system/programs/cmus.nix
+++ b/modules/terminal/hjem/programs/cmus.nix
@@ -78,20 +78,18 @@
else "";
in
lib.mkIf cfg.enable {
- hjem.users."${config.collinux.user.name}" = {
- files = let
- e = text: {
- inherit text;
- executable = true;
- };
- in {
- ".config/cmus/scripts/status.sh" = e scripts.statusDisplay;
-
- ".config/cmus/rc".text = cmus_rc;
- ".config/cmus/catppuccin.theme".text = lib.mkIf (cfg.theme == "catppuccin") cmus_theme;
- ".config/cava/config".text = cava_config;
+ files = let
+ e = text: {
+ inherit text;
+ executable = true;
};
+ in {
+ ".config/cmus/scripts/status.sh" = e scripts.statusDisplay;
- packages = with pkgs; [cava cmus];
+ ".config/cmus/rc".text = cmus_rc;
+ ".config/cmus/catppuccin.theme".text = lib.mkIf (cfg.theme == "catppuccin") cmus_theme;
+ ".config/cava/config".text = cava_config;
};
+
+ packages = with pkgs; [cava cmus];
}
diff --git a/modules/terminal/hjem/programs/eza.nix b/modules/terminal/hjem/programs/eza.nix
new file mode 100644
index 0000000..b900ceb
--- /dev/null
+++ b/modules/terminal/hjem/programs/eza.nix
@@ -0,0 +1,25 @@
+{
+ pkgs,
+ lib,
+ config,
+ ...
+}: let
+ cfg = config.collinux.terminal.programs.eza;
+in
+ lib.mkIf cfg.enable {
+ files =
+ (lib.optionalAttrs config.collinux.terminal.shells.fish.enable {
+ ".config/fish/conf.d/eza.fish".text = ''
+ alias ls "eza -A -w 80 --group-directories-first -I '.git*'"
+ alias tree "eza -T"
+ '';
+ })
+ // (lib.optionalAttrs config.collinux.terminal.shells.fish.enable {
+ ".config/bash/conf.d/eza.bash".text = ''
+ alias ls="eza -A -w 80 --group-directories-first -I '.git*'"
+ alias tree="eza -T"
+ '';
+ });
+
+ packages = [pkgs.eza];
+ }
diff --git a/modules/terminal/hjem/programs/fish.nix b/modules/terminal/hjem/programs/fish.nix
new file mode 100644
index 0000000..1aa4a40
--- /dev/null
+++ b/modules/terminal/hjem/programs/fish.nix
@@ -0,0 +1,35 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.collinux.terminal.shells.fish;
+in
+ lib.mkIf cfg.enable {
+ files = {
+ ".config/fish/config.fish".text = ''
+ set fish_greeting
+
+ function fish_title
+ echo fish (prompt_pwd)
+ end
+
+ direnv hook fish | source
+ pay-respects fish --alias | source
+ '';
+ };
+
+ packages = with pkgs; [
+ fish
+ ripgrep
+ fd
+ moreutils
+ zip
+ unzip
+ btop
+ jq
+ direnv
+ pay-respects
+ ];
+ }
diff --git a/modules/terminal/hjem/programs/fzf.nix b/modules/terminal/hjem/programs/fzf.nix
new file mode 100644
index 0000000..5a51739
--- /dev/null
+++ b/modules/terminal/hjem/programs/fzf.nix
@@ -0,0 +1,25 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.collinux.terminal.programs.fzf;
+in
+ lib.mkIf cfg.enable {
+ files =
+ (lib.optionalAttrs config.collinux.terminal.shells.fish.enable {
+ ".config/fish/conf.d/fzf.fish".text = ''
+ fzf --fish | source
+ set -gx FZF_DEFAULT_OPTS "--color bg:#1E1E2E,bg+:#313244,border:#313244,fg:#CDD6F4,fg+:#CDD6F4,header:#F38BA8,hl:#F38BA8,hl+:#F38BA8,info:#CBA6F7,label:#CDD6F4,marker:#B4BEFE,pointer:#F5E0DC,prompt:#CBA6F7,selected-bg:#45475A,spinner:#F5E0DC"
+ '';
+ })
+ // (lib.optionalAttrs config.collinux.terminal.shells.bash.enable {
+ ".config/bash/conf.d/fzf.bash".text = ''
+ eval "$(fzf --bash)"
+ export FZF_DEFAULT_OPTS="--color bg:#1E1E2E,bg+:#313244,border:#313244,fg:#CDD6F4,fg+:#CDD6F4,header:#F38BA8,hl:#F38BA8,hl+:#F38BA8,info:#CBA6F7,label:#CDD6F4,marker:#B4BEFE,pointer:#F5E0DC,prompt:#CBA6F7,selected-bg:#45475A,spinner:#F5E0DC"
+ '';
+ });
+
+ packages = [pkgs.fzf];
+ }
diff --git a/modules/terminal/system/programs/git.nix b/modules/terminal/hjem/programs/git.nix
index 9943e40..d196f26 100644
--- a/modules/terminal/system/programs/git.nix
+++ b/modules/terminal/hjem/programs/git.nix
@@ -18,14 +18,12 @@
};
};
in {
- hjem.users."${config.collinux.user.name}" = {
- files = {
- ".config/git/config" = {
- generator = lib.generators.toGitINI;
- value = git_config;
- };
+ files = {
+ ".config/git/config" = {
+ generator = lib.generators.toGitINI;
+ value = git_config;
};
-
- packages = [pkgs.git];
};
+
+ packages = [pkgs.git];
}
diff --git a/modules/terminal/system/programs/helix.nix b/modules/terminal/hjem/programs/helix.nix
index 49389ef..e66877b 100644
--- a/modules/terminal/system/programs/helix.nix
+++ b/modules/terminal/hjem/programs/helix.nix
@@ -139,33 +139,27 @@
};
in
lib.mkIf cfg.enable {
- nixpkgs.overlays = [
- (self: super: {
- # rename window to filename when editing file
- helix = self.writeShellScriptBin "hx" ''
- file="$1"
- printf '\033]2;%s\033\\' "hx $file"
- exec ${super.helix}/bin/hx "$@"
- '';
- })
- ];
-
- hjem.users."${config.collinux.user.name}" = {
- files = let
- t = value: {
- generator = (pkgs.formats.toml {}).generate "toml_file";
- inherit value;
- };
- in {
+ files = let
+ t = value: {
+ generator = (pkgs.formats.toml {}).generate "toml_file";
+ inherit value;
+ };
+ in
+ {
".config/helix/config.toml" = t settings;
".config/helix/languages.toml" = t languages;
".config/helix/themes/catppuccin_mocha_transparent.toml" = t theme;
-
- ".config/fish/conf.d/helix.fish".text = lib.mkIf config.collinux.terminal.shells.fish.enable ''
+ }
+ // (lib.optionalAttrs config.collinux.terminal.shells.fish.enable {
+ ".config/fish/conf.d/helix.fish".text = ''
set -gx EDITOR hx
'';
- };
+ })
+ // (lib.optionalAttrs config.collinux.terminal.shells.bash.enable {
+ ".config/bash/conf.d/helix.bash".text = ''
+ EDITOR=hx
+ '';
+ });
- packages = [pkgs.helix];
- };
+ packages = [pkgs.helix];
}
diff --git a/modules/terminal/system/programs/lazygit.nix b/modules/terminal/hjem/programs/lazygit.nix
index e3e2b42..a939446 100644
--- a/modules/terminal/system/programs/lazygit.nix
+++ b/modules/terminal/hjem/programs/lazygit.nix
@@ -28,14 +28,12 @@
};
in
lib.mkIf cfg.enable {
- hjem.users."${config.collinux.user.name}" = {
- files = {
- ".config/lazygit/config.yml" = {
- generator = lib.generators.toYAML {};
- value = settings;
- };
+ files = {
+ ".config/lazygit/config.yml" = {
+ generator = lib.generators.toYAML {};
+ value = settings;
};
-
- packages = [pkgs.lazygit];
};
+
+ packages = [pkgs.lazygit];
}
diff --git a/modules/terminal/system/programs/starship.nix b/modules/terminal/hjem/programs/starship.nix
index c70a132..e9d79b5 100644
--- a/modules/terminal/system/programs/starship.nix
+++ b/modules/terminal/hjem/programs/starship.nix
@@ -35,14 +35,15 @@
};
in
lib.mkIf cfg.enable {
- hjem.users."${config.collinux.user.name}" = {
- files = {
+ files =
+ {
".config/starship.toml" = {
generator = (pkgs.formats.toml {}).generate "starship.toml";
value = settings;
};
-
- ".config/fish/conf.d/starship.fish".text = lib.mkIf config.collinux.terminal.shells.fish.enable ''
+ }
+ // (lib.optionalAttrs config.collinux.terminal.shells.fish.enable {
+ ".config/fish/conf.d/starship.fish".text = ''
function starship_transient_prompt_func
starship module character
end
@@ -50,8 +51,12 @@ in
starship init fish | source
enable_transience
'';
- };
+ })
+ // (lib.optionalAttrs config.collinux.terminal.shells.bash.enable {
+ ".config/bash/conf.d/starship.bash".text = ''
+ eval "$(starship init bash)"
+ '';
+ });
- packages = [pkgs.starship];
- };
+ packages = [pkgs.starship];
}
diff --git a/modules/terminal/system/programs/tmux.nix b/modules/terminal/hjem/programs/tmux.nix
index 3fb7b73..738e729 100644
--- a/modules/terminal/system/programs/tmux.nix
+++ b/modules/terminal/hjem/programs/tmux.nix
@@ -285,57 +285,55 @@
'';
in
lib.mkIf cfg.enable {
- hjem.users."${config.collinux.user.name}" = {
- files = let
- e = text: {
- inherit text;
- executable = true;
- };
- in {
- # helpers
- ".config/tmux/scripts/minibuffer.sh" = e scripts.minibuffer;
- ".config/tmux/scripts/menu.sh" = e scripts.menu;
- ".config/tmux/scripts/split.sh" = e scripts.paneSplit;
-
- # sessionizer
- ".config/tmux/scripts/sessionizer.sh" = e scripts.sessionizer;
- ".config/tmux/broot/sessionizer.toml" = {
- generator = (pkgs.formats.toml {}).generate "sessionizer.toml";
- value = broot_sessionizer_config;
- };
- ".config/tmux/scripts/launch-sessionizer.sh" = e scripts.launchSessionizer;
- ".config/tmux/scripts/clean-sessions.sh" = e scripts.cleanSessions;
- ".config/tmux/scripts/new-session.sh" = e scripts.newSession;
- ".config/tmux/scripts/sessions-menu.sh" = e scripts.sessionsMenu;
+ files = let
+ e = text: {
+ inherit text;
+ executable = true;
+ };
+ in {
+ # helpers
+ ".config/tmux/scripts/minibuffer.sh" = e scripts.minibuffer;
+ ".config/tmux/scripts/menu.sh" = e scripts.menu;
+ ".config/tmux/scripts/split.sh" = e scripts.paneSplit;
- # find-file
- ".config/tmux/scripts/launch-find-file.sh" = e scripts.launchFindFile;
- ".config/tmux/broot/file.toml" = {
- generator = (pkgs.formats.toml {}).generate "file.toml";
- value = broot_file_config;
- };
+ # sessionizer
+ ".config/tmux/scripts/sessionizer.sh" = e scripts.sessionizer;
+ ".config/tmux/broot/sessionizer.toml" = {
+ generator = (pkgs.formats.toml {}).generate "sessionizer.toml";
+ value = broot_sessionizer_config;
+ };
+ ".config/tmux/scripts/launch-sessionizer.sh" = e scripts.launchSessionizer;
+ ".config/tmux/scripts/clean-sessions.sh" = e scripts.cleanSessions;
+ ".config/tmux/scripts/new-session.sh" = e scripts.newSession;
+ ".config/tmux/scripts/sessions-menu.sh" = e scripts.sessionsMenu;
- # search buffer
- ".config/tmux/scripts/search-buffer.sh" = e scripts.searchBuffer;
+ # find-file
+ ".config/tmux/scripts/launch-find-file.sh" = e scripts.launchFindFile;
+ ".config/tmux/broot/file.toml" = {
+ generator = (pkgs.formats.toml {}).generate "file.toml";
+ value = broot_file_config;
+ };
- # pane search
- ".config/tmux/scripts/pane-search.sh" = e scripts.paneSearch;
+ # search buffer
+ ".config/tmux/scripts/search-buffer.sh" = e scripts.searchBuffer;
- # fzf-exec
- ".config/tmux/scripts/tmux-doc.sh" = e scripts.tmuxDoc;
- ".config/tmux/scripts/fzf-exec.sh" = e scripts.fzfExec;
+ # pane search
+ ".config/tmux/scripts/pane-search.sh" = e scripts.paneSearch;
- # leader menu
- ".config/tmux/scripts/leader-menu.sh" = e scripts.leaderMenu;
+ # fzf-exec
+ ".config/tmux/scripts/tmux-doc.sh" = e scripts.tmuxDoc;
+ ".config/tmux/scripts/fzf-exec.sh" = e scripts.fzfExec;
- # Bar
- ".config/tmux/scripts/battery.sh" = e scripts.battery;
- ".config/tmux/scripts/bar.sh" = e scripts.bar;
- ".config/tmux/scripts/catppuccin-borders.sh" = e scripts.catpuccinNoBorders;
+ # leader menu
+ ".config/tmux/scripts/leader-menu.sh" = e scripts.leaderMenu;
- ".config/tmux/tmux.conf".text = tmux-conf;
- };
+ # Bar
+ ".config/tmux/scripts/battery.sh" = e scripts.battery;
+ ".config/tmux/scripts/bar.sh" = e scripts.bar;
+ ".config/tmux/scripts/catppuccin-borders.sh" = e scripts.catpuccinNoBorders;
- packages = [pkgs.tmux];
+ ".config/tmux/tmux.conf".text = tmux-conf;
};
+
+ packages = [pkgs.tmux];
}
diff --git a/modules/terminal/nixos/default.nix b/modules/terminal/nixos/default.nix
new file mode 100644
index 0000000..8118c63
--- /dev/null
+++ b/modules/terminal/nixos/default.nix
@@ -0,0 +1,10 @@
+{config, ...}: let
+ cfg = config.collinux.terminal.shells;
+in {
+ programs.command-not-found.enable = false; # broken without nix-channels
+
+ users.users."${config.collinux.user.name}" = {
+ shell = cfg.defaultShell;
+ ignoreShellProgramCheck = true;
+ };
+}
diff --git a/modules/terminal/options.nix b/modules/terminal/options.nix
index af7f0ee..47f2057 100644
--- a/modules/terminal/options.nix
+++ b/modules/terminal/options.nix
@@ -25,11 +25,9 @@ in {
default = let
cfg = config.collinux.terminal.shells;
in
- if (cfg.fish.enable && !cfg.bash.enable)
+ if cfg.fish.enable
then pkgs.fish
- else if (!cfg.fish.enable && cfg.bash.enable)
- then pkgs.bash
- else null;
+ else pkgs.bash;
};
};
diff --git a/modules/terminal/system/programs/bat.nix b/modules/terminal/system/programs/bat.nix
deleted file mode 100644
index 6f53dd7..0000000
--- a/modules/terminal/system/programs/bat.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- pkgs,
- config,
- lib,
- ...
-}: let
- cfg = config.collinux.terminal.programs.bat;
-in
- lib.mkIf cfg.enable {
- hjem.users."${config.collinux.user.name}" = {
- files.".config/fish/conf.d/bat.fish".text = ''
- alias cat bat
- set -gx BAT_THEME "base16"
- '';
-
- packages = [pkgs.bat];
- };
- }
diff --git a/modules/terminal/system/programs/eza.nix b/modules/terminal/system/programs/eza.nix
deleted file mode 100644
index 52c290d..0000000
--- a/modules/terminal/system/programs/eza.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- pkgs,
- lib,
- config,
- ...
-}: let
- cfg = config.collinux.terminal.programs.eza;
-in
- lib.mkIf cfg.enable {
- hjem.users."${config.collinux.user.name}" = {
- files.".config/fish/conf.d/eza.fish".text = ''
- alias ls "eza -A -w 80 --group-directories-first -I '.git*'"
- alias tree "eza -T"
- '';
-
- packages = [pkgs.eza];
- };
- }
diff --git a/modules/terminal/system/programs/fish.nix b/modules/terminal/system/programs/fish.nix
deleted file mode 100644
index fe3ff88..0000000
--- a/modules/terminal/system/programs/fish.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- pkgs,
- config,
- lib,
- ...
-}: let
- cfg = config.collinux.terminal.shells.fish;
-
- init = ''
- set fish_greeting
-
- function fish_title
- echo fish (prompt_pwd)
- end
-
- direnv hook fish | source
- pay-respects fish --alias | source
- '';
-in
- lib.mkIf cfg.enable {
- hjem.users."${config.collinux.user.name}" = {
- files = {
- ".config/fish/config.fish".text = init;
- };
-
- packages = with pkgs; [
- fish
- ripgrep
- fd
- moreutils
- zip
- unzip
- btop
- jq
- direnv
- pay-respects
- ];
- };
- }
diff --git a/modules/terminal/system/programs/fzf.nix b/modules/terminal/system/programs/fzf.nix
deleted file mode 100644
index 486d4e2..0000000
--- a/modules/terminal/system/programs/fzf.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- pkgs,
- config,
- lib,
- ...
-}: let
- cfg = config.collinux.terminal.programs.fzf;
-in
- lib.mkIf cfg.enable {
- hjem.users."${config.collinux.user.name}" = {
- files.".config/fish/conf.d/fzf.fish".text = ''
- ${pkgs.fzf}/bin/fzf --fish | source
- set -gx FZF_DEFAULT_OPTS "--color bg:#1E1E2E,bg+:#313244,border:#313244,fg:#CDD6F4,fg+:#CDD6F4,header:#F38BA8,hl:#F38BA8,hl+:#F38BA8,info:#CBA6F7,label:#CDD6F4,marker:#B4BEFE,pointer:#F5E0DC,prompt:#CBA6F7,selected-bg:#45475A,spinner:#F5E0DC"
- '';
-
- packages = [pkgs.fzf];
- };
- }
diff --git a/modules/user/system/default.nix b/modules/user/nixos/default.nix
index 8692652..8692652 100644
--- a/modules/user/system/default.nix
+++ b/modules/user/nixos/default.nix