31 Commits

Author SHA1 Message Date
6dbfc5805e updated flake to 25.11 2026-02-01 21:32:32 -05:00
7a3c83f088 add shell init path 2025-12-19 15:37:16 -05:00
1cbfb37409 darwin build success
ready for pr ig
2025-12-13 17:04:28 -05:00
83d1494d4a nixos build success
darwin next maybe?
2025-12-13 14:04:54 -05:00
f8da56fe52 working build
fixed up krew home module
2025-12-12 15:52:04 -05:00
bcf5b224cb trying this 2025-12-12 15:39:23 -05:00
b762b06f05 cleanup? 2025-12-12 14:15:19 -05:00
9fedd2d61e removed k9s overlay
this commit got builds working, working in the sense that the build
actually threw an error! have to fix that
2025-12-10 17:09:19 -05:00
4207b320c9 working? plus cleanup and fallbacks 2025-11-17 12:12:17 -05:00
6561e37119 wip: still broken 2025-11-06 17:14:39 -05:00
717e8c452d wip: broken, still working on it' 2025-10-31 17:07:59 -04:00
8fd3ca8c9a wip: modularizing? 2025-10-30 17:34:55 -04:00
a73194fed9 Merge pull request 'Overlay a couple of packages' (#3) from nix-override-overlay into master
Reviewed-on: #3
2025-10-23 21:44:32 -05:00
0572cacd28 added ldflags to lazygit override 2025-10-23 10:36:27 -04:00
ecf728bc11 working rust package override
plus flake update :P
2025-10-22 19:45:10 -04:00
5a59f98ebc working overlay to get latest version of lazygit 2025-10-22 08:19:52 -04:00
e1d13065f8 added shell greetings 2025-10-21 13:04:18 -04:00
5ab19d093a testing 2025-10-21 08:33:25 -04:00
569141d227 flake update 2025-10-18 20:31:32 -04:00
48edbfdc4b shairport service working
systemd service works now ig
2025-10-18 20:31:22 -04:00
50c62a4d3f shairport working
heard some static noise when listening, maybe something can fix that?
2025-10-18 18:13:50 -04:00
f4b518f806 little sway update 2025-10-15 08:40:54 -04:00
7fffa45e4e updated mountpoints: cloud 2025-10-14 01:29:14 -04:00
a3c53820b1 added sleep inhibiting aliases to fish 2025-10-02 18:44:58 -04:00
8cbdeb4cdc Merge pull request 'Superuser bypass' (#2) from macos-superuser-bypass-refactor into master
Reviewed-on: #2
2025-10-02 08:59:47 -05:00
bfa957adcd flake update 2025-10-02 09:58:03 -04:00
50d22afef8 Merge branch 'master' into macos-superuser-bypass-refactor 2025-10-02 08:25:09 -04:00
93052529b8 modified things 2025-09-13 16:30:26 -04:00
faed026258 some formatting modifications 2025-09-04 14:05:36 -04:00
3af5061a79 system update 2025-08-27 11:31:11 -04:00
ddd3fb39e4 bulk of the refactor 2025-08-27 11:31:06 -04:00
28 changed files with 562 additions and 332 deletions

View File

View File

@@ -13,9 +13,9 @@ set $term alacritty
set $menu wofi --term '$term' set $menu wofi --term '$term'
### Output configuration ### Output configuration
output DP-3 pos 3840 0 res 1920x1080@59Hz output DP-3 pos 1920 0 res 1920x1080@60Hz
output HDMI-A-1 pos 0 0 res 1920x1080@59Hz output HDMI-A-1 pos 0 0 res 1920x1080@60Hz
output DP-2 pos 1920 0 res 1920x1080@60Hz output DP-2 pos 3840 0 res 1920x1080@60Hz
### Wallpaper ### Wallpaper
output HDMI-A-1 bg ~/.wallpaper/.wallpaper.png fill output HDMI-A-1 bg ~/.wallpaper/.wallpaper.png fill
@@ -25,19 +25,19 @@ output DP-3 bg ~/.wallpaper/.wallpaper.png fill
### Workspace binding ### Workspace binding
## DP-3 bindings ## DP-3 bindings
workspace 1 output DP-2 workspace 1 output DP-3
workspace 2 output DP-2 workspace 2 output DP-3
workspace 4 output DP-2 workspace 4 output DP-3
workspace 5 output DP-2 workspace 5 output DP-3
## HDMI-A-1 bindings ## HDMI-A-1 bindings
workspace 3 output HDMI-A-1 workspace 3 output HDMI-A-1
workspace 9 output HDMI-A-1 workspace 9 output HDMI-A-1
## DP-2 bindings ## DP-2 bindings
workspace 6 output DP-3 workspace 6 output DP-2
workspace 7 output DP-3 workspace 7 output DP-2
workspace 8 output DP-3 workspace 8 output DP-2
### Colour options ### Colour options
set $bg #24283b set $bg #24283b

125
flake.lock generated
View File

@@ -7,16 +7,16 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749744770, "lastModified": 1767634391,
"narHash": "sha256-MEM9XXHgBF/Cyv1RES1t6gqAX7/tvayBC1r/KPyK1ls=", "narHash": "sha256-owcSz2ICqTSvhBbhPP+1eWzi88e54rRZtfCNE5E/wwg=",
"owner": "lnl7", "owner": "lnl7",
"repo": "nix-darwin", "repo": "nix-darwin",
"rev": "536f951efb1ccda9b968e3c9dee39fbeb6d3fdeb", "rev": "08585aacc3d6d6c280a02da195fdbd4b9cf083c2",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "lnl7", "owner": "lnl7",
"ref": "nix-darwin-25.05", "ref": "nix-darwin-25.11",
"repo": "nix-darwin", "repo": "nix-darwin",
"type": "github" "type": "github"
} }
@@ -24,11 +24,11 @@
"flake-compat": { "flake-compat": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1747046372, "lastModified": 1761588595,
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
"owner": "edolstra", "owner": "edolstra",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -59,16 +59,17 @@
"inputs": { "inputs": {
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"home-manager": "home-manager",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"zig": "zig", "zig": "zig",
"zon2nix": "zon2nix" "zon2nix": "zon2nix"
}, },
"locked": { "locked": {
"lastModified": 1754941490, "lastModified": 1769985646,
"narHash": "sha256-2AJf0q4u1zakqjr0y4dCyqzdDSil8P5m2YpZxAAzJJw=", "narHash": "sha256-ubfC9fLfdQ0xpQuFmGQCYIRyEEmOzXd+ya5rShM217k=",
"owner": "ghostty-org", "owner": "ghostty-org",
"repo": "ghostty", "repo": "ghostty",
"rev": "5bf632e9cc0e77a578bad983b0cbdf0451ce87d4", "rev": "769fff5dfb322594c0dc7a379ee70897a7db773f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -80,20 +81,41 @@
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"ghostty",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1753592768, "lastModified": 1768068402,
"narHash": "sha256-oV695RvbAE4+R9pcsT9shmp6zE/+IZe6evHWX63f2Qg=", "narHash": "sha256-bAXnnJZKJiF7Xr6eNW6+PhBf1lg2P1aFUO9+xgWkXfA=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "fc3add429f21450359369af74c2375cb34a2d204", "rev": "8bc5473b6bc2b6e1529a9c4040411e1199c43b4c",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-25.05", "repo": "home-manager",
"type": "github"
}
},
"home-manager_2": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1769580047,
"narHash": "sha256-tNqCP/+2+peAXXQ2V8RwsBkenlfWMERb+Uy6xmevyhM=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "366d78c2856de6ab3411c15c1cb4fb4c2bf5c826",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-25.11",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "type": "github"
} }
@@ -116,29 +138,45 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1748189127, "lastModified": 1768032153,
"narHash": "sha256-zRDR+EbbeObu4V2X5QCd2Bk5eltfDlCr5yvhBwUT6pY=", "narHash": "sha256-zvxtwlM8ZlulmZKyYCQAPpkm5dngSEnnHjmjV7Teloc=",
"rev": "7c43f080a7f28b2774f3b3f43234ca11661bf334", "rev": "3146c6aa9995e7351a398e17470e15305e6e18ff",
"type": "tarball", "type": "tarball",
"url": "https://releases.nixos.org/nixos/25.05/nixos-25.05.802491.7c43f080a7f2/nixexprs.tar.xz" "url": "https://releases.nixos.org/nixpkgs/nixpkgs-26.05pre925418.3146c6aa9995/nixexprs.tar.xz"
}, },
"original": { "original": {
"type": "tarball", "type": "tarball",
"url": "https://channels.nixos.org/nixos-25.05/nixexprs.tar.xz" "url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz"
} }
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1754767907, "lastModified": 1769900590,
"narHash": "sha256-8OnUzRQZkqtUol9vuUuQC30hzpMreKptNyET2T9lB6g=", "narHash": "sha256-I7Lmgj3owOTBGuauy9FL6qdpeK2umDoe07lM4V+PnyA=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "c5f08b62ed75415439d48152c2a784e36909b1bc", "rev": "41e216c0ca66c83b12ab7a98cc326b5db01db646",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "nixos",
"ref": "nixos-25.05", "ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1744536153,
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
@@ -147,9 +185,28 @@
"inputs": { "inputs": {
"darwin": "darwin", "darwin": "darwin",
"ghostty": "ghostty", "ghostty": "ghostty",
"home-manager": "home-manager", "home-manager": "home-manager_2",
"nix-flatpak": "nix-flatpak", "nix-flatpak": "nix-flatpak",
"nixpkgs": "nixpkgs_2" "nixpkgs": "nixpkgs_2",
"rust-overlay": "rust-overlay"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1769915446,
"narHash": "sha256-f1F/umtX3ZD7fF9DHSloVHc0mnAT0ry0YK2jI/6E0aI=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "bc00300f010275e46feb3c3974df6587ff7b7808",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
} }
}, },
"systems": { "systems": {
@@ -183,11 +240,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1748261582, "lastModified": 1763295135,
"narHash": "sha256-3i0IL3s18hdDlbsf0/E+5kyPRkZwGPbSFngq5eToiAA=", "narHash": "sha256-sGv/NHCmEnJivguGwB5w8LRmVqr1P72OjS+NzcJsssE=",
"owner": "mitchellh", "owner": "mitchellh",
"repo": "zig-overlay", "repo": "zig-overlay",
"rev": "aafb1b093fb838f7a02613b719e85ec912914221", "rev": "64f8b42cfc615b2cf99144adf2b7728c7847c72a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -198,27 +255,23 @@
}, },
"zon2nix": { "zon2nix": {
"inputs": { "inputs": {
"flake-utils": [
"ghostty",
"flake-utils"
],
"nixpkgs": [ "nixpkgs": [
"ghostty", "ghostty",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1742104771, "lastModified": 1768231828,
"narHash": "sha256-LhidlyEA9MP8jGe1rEnyjGFCzLLgCdDpYeWggibayr0=", "narHash": "sha256-wL/8Iij4T2OLkhHcc4NieOjf7YeJffaUYbCiCqKv/+0=",
"owner": "jcollie", "owner": "jcollie",
"repo": "zon2nix", "repo": "zon2nix",
"rev": "56c159be489cc6c0e73c3930bd908ddc6fe89613", "rev": "c28e93f3ba133d4c1b1d65224e2eebede61fd071",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "jcollie", "owner": "jcollie",
"repo": "zon2nix", "repo": "zon2nix",
"rev": "56c159be489cc6c0e73c3930bd908ddc6fe89613", "rev": "c28e93f3ba133d4c1b1d65224e2eebede61fd071",
"type": "github" "type": "github"
} }
} }

View File

@@ -1,17 +1,18 @@
{ {
description = "Wyatt's nix configuration suite"; description = "Wyatt's nix configuration suite";
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.6.0"; nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.6.0";
home-manager = { home-manager = {
url = "github:nix-community/home-manager/release-25.05"; url = "github:nix-community/home-manager/release-25.11";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
darwin = { darwin = {
url = "github:lnl7/nix-darwin/nix-darwin-25.05"; url = "github:lnl7/nix-darwin/nix-darwin-25.11";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
ghostty.url = "github:ghostty-org/ghostty"; ghostty.url = "github:ghostty-org/ghostty";
rust-overlay.url = "github:oxalica/rust-overlay";
}; };
outputs = inputs @ { outputs = inputs @ {
@@ -20,26 +21,38 @@
nix-flatpak, nix-flatpak,
darwin, darwin,
home-manager, home-manager,
ghostty, rust-overlay,
... ...
}: let }: let
userName = "wyatt"; userName = "wyatt";
userEmail = "wyatt@wyattjmiller.com"; userEmail = "wyatt@wyattjmiller.com";
extraSpecialArgs = { extraSpecialArgs = {
inherit userName userEmail ghostty; inherit userName userEmail;
};
myOverlays = { ... }: {
nixpkgs.overlays = [
rust-overlay.overlays.default
self.common.overlays
];
}; };
in { in {
meta = import ./meta; meta = import ./meta;
common = {
overlays = import ./modules/common/overlays.nix;
};
# Primary laptop - MacBook Pro (2023, M3) # Primary laptop - MacBook Pro (2023, M3)
darwinConfigurations."sephiroth" = darwin.lib.darwinSystem { darwinConfigurations."sephiroth" = darwin.lib.darwinSystem {
system = "aarch64-darwin"; system = "aarch64-darwin";
specialArgs = { specialArgs = {
inherit userName userEmail ghostty; inherit userName userEmail;
hostname = "sephiroth"; hostname = "sephiroth";
role = "devel"; role = "workstation";
}; };
modules = [ modules = [
myOverlays
./modules/common ./modules/common
./modules/machine/sephiroth ./modules/machine/sephiroth
@@ -47,7 +60,9 @@
{ {
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = extraSpecialArgs; home-manager.extraSpecialArgs = extraSpecialArgs // { isNixOS = false; role = "workstation"; };
# home-manager.extraSpecialArgs = extraSpecialArgs;
home-manager.backupFileExtension = "bak";
home-manager.users.${userName} = import ./home; home-manager.users.${userName} = import ./home;
} }
]; ];
@@ -57,11 +72,12 @@
nixosConfigurations."cloud" = nixpkgs.lib.nixosSystem { nixosConfigurations."cloud" = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = { specialArgs = {
inherit userName userEmail ghostty; inherit userName userEmail;
hostname = "cloud"; hostname = "cloud";
role = "devel"; role = "workstation";
}; };
modules = [ modules = [
myOverlays
nix-flatpak.nixosModules.nix-flatpak nix-flatpak.nixosModules.nix-flatpak
./modules/common ./modules/common
./modules/machine/cloud ./modules/machine/cloud
@@ -70,7 +86,8 @@
{ {
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = extraSpecialArgs; home-manager.extraSpecialArgs = extraSpecialArgs // { isNixOS = true; role = "workstation"; };
home-manager.backupFileExtension = "bak";
home-manager.users.${userName}.imports = [ home-manager.users.${userName}.imports = [
./home ./home
]; ];
@@ -87,6 +104,7 @@
role = "server"; role = "server";
}; };
modules = [ modules = [
myOverlays
./modules/common ./modules/common
./modules/machine/valefor ./modules/machine/valefor
@@ -95,6 +113,7 @@
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = extraSpecialArgs; home-manager.extraSpecialArgs = extraSpecialArgs;
home-manager.backupFileExtension = "bak";
home-manager.users.${userName}.imports = [ home-manager.users.${userName}.imports = [
./home ./home
]; ];
@@ -111,6 +130,7 @@
role = "server"; role = "server";
}; };
# modules = [ # modules = [
# myOverlays
# nix-flatpak.nixosModules.nix-flatpak # nix-flatpak.nixosModules.nix-flatpak
# nix-ld.nixosModules.nix-ld # nix-ld.nixosModules.nix-ld
# ./modules/nixos/hardware-configuration.nix # ./modules/nixos/hardware-configuration.nix
@@ -123,11 +143,35 @@
# home-manager.useGlobalPkgs = true; # home-manager.useGlobalPkgs = true;
# home-manager.useUserPackages = true; # home-manager.useUserPackages = true;
# home-manager.extraSpecialArgs = extraSpecialArgs; # home-manager.extraSpecialArgs = extraSpecialArgs;
# home-manager.backupFileExtension = "bak";
# home-manager.users.${userName}.imports = [ # home-manager.users.${userName}.imports = [
# ./home # ./home
# ]; # ];
# } # }
# ]; # ];
}; };
# generic non-NixOS Linux machine
homeConfigurations."generic" = let
hostname = builtins.getEnv "HOSTNAME";
system = "x86_64-linux";
in home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.${system};
extraSpecialArgs = {
inherit userName userEmail hostname;
isNixOS = false;
role = "workstation";
};
modules = [
{
nixpkgs.overlays = [
rust-overlay.overlays.default
self.common.overlays
];
}
./home
];
};
}; };
} }

View File

@@ -1,6 +1,7 @@
{...}: { { pkgs, ...}: {
programs.atuin = { programs.atuin = {
enable = true; enable = true;
enableFishIntegration = true; enableFishIntegration = true;
package = pkgs.atuinLatest;
}; };
} }

View File

@@ -1,6 +1,7 @@
{ {
pkgs, pkgs,
lib, lib,
isNixOS ? true,
... ...
}: { }: {
programs.firefox = { programs.firefox = {
@@ -9,7 +10,7 @@
}; };
programs.chromium = { programs.chromium = {
enable = pkgs.stdenv.isLinux; enable = pkgs.stdenv.isLinux && isNixOS;
package = pkgs.ungoogled-chromium.override { package = pkgs.ungoogled-chromium.override {
enableWideVine = true; enableWideVine = true;
commandLineArgs = [ commandLineArgs = [

View File

@@ -1,63 +1,58 @@
{ { lib
lib, , pkgs
pkgs, , userName
userName, , isNixOS ? true
userEmail, , ...
ghostty, }:
... let
}: let # TODO: Have a file structure that holds all the configuration files that can't be configured by Nix (or I haven't found the time to do so)
# Have a file sturcture that holds all the configuration files that can't be configured by Nix
# or maybe I'm too lazy to do anything about it? I dunno
dirs = { dirs = {
defaults = ../defaults; defaults = ../defaults;
}; };
in { in
{
_module.args = {
inherit dirs;
};
# Import sub modules # Import sub modules
imports = map (module: import module {inherit lib pkgs dirs userName userEmail ghostty;}) [ imports = [
./atuin.nix
./shell.nix
./packages ./packages
./git.nix
./starship.nix
./eza.nix
./neovim.nix
./direnv.nix
./sway.nix
./terminal.nix
./browser.nix
./zellij.nix
./bat.nix
]; ];
# Home Manager needs a bit of information about you and the home = lib.mkMerge [
# paths it should manage. {
home = {
username = userName; username = userName;
homeDirectory = homeDirectory =
if pkgs.stdenv.isDarwin if pkgs.stdenv.isDarwin
then "/Users/${userName}" then "/Users/${userName}"
else "/home/${userName}"; else "/home/${userName}";
stateVersion = "24.11";
}
(lib.mkIf isNixOS {
sessionVariables = { sessionVariables = {
XDG_CURRENT_DESKTOP = "sway"; XDG_CURRENT_DESKTOP = "sway";
XDG_SESSION_TYPE = "wayland"; XDG_SESSION_TYPE = "wayland";
XDG_SESSION_DESKTOP="sway"; XDG_SESSION_DESKTOP = "sway";
XDG_CONFIG_HOME = "$HOME/.config"; XDG_CONFIG_HOME = "$HOME/.config";
XDG_CACHE_HOME = "$HOME/.cache"; XDG_CACHE_HOME = "$HOME/.cache";
XDG_DATA_HOME = "$HOME/.local/share"; XDG_DATA_HOME = "$HOME/.local/share";
XDG_STATE_HOME = "$HOME/.local/state"; XDG_STATE_HOME = "$HOME/.local/state";
NIXOS_OZONE_WL = "1"; NIXOS_OZONE_WL = "1";
}; };
})
pointerCursor = lib.mkIf pkgs.stdenv.isLinux { (lib.mkIf pkgs.stdenv.isLinux {
pointerCursor = {
gtk.enable = true; gtk.enable = true;
package = pkgs.catppuccin-cursors.mochaDark; package = pkgs.catppuccin-cursors.mochaDark;
name = "catppuccin-mocha-dark-cursors"; name = "catppuccin-mocha-dark-cursors";
size = 22; size = 22;
}; };
})
stateVersion = "24.11"; ];
};
# Let Home Manager install and manage itself. # Let Home Manager install and manage itself.
programs.home-manager.enable = true; programs.home-manager.enable = true;

32
home/k9s.nix Normal file
View File

@@ -0,0 +1,32 @@
{ pkgs, ... }: {
programs.k9s = {
enable = true;
package = pkgs.k9s;
settings.k9s = {
refreshRate = "2s";
liveViewAutoRefresh = false;
apiServerTimeout = "30s";
maxConnRetry = 5;
readOnly = true;
noExitOnCtrlC = false;
portForwardAddress = "localhost";
skipLatestRevCheck = false;
skin = {
catppuccin-mocha = ../defaults/k9s/catppuccin-mocha.yaml;
};
ui = {
skin = "catppuccin-mocha";
enableMouse = true;
headless = false;
logoless = true;
crumbsless = false;
splashless = true;
reactive = false;
noIcons = false;
defaultsToFullscreen = false;
};
};
};
}

14
home/krew.nix Normal file
View File

@@ -0,0 +1,14 @@
{ pkgs, lib, ... }:
with pkgs;
let
plugins = [
"krew"
"oidc-login"
];
in {
home.activation.krew = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
${lib.concatMapStringsSep "\n" (plugin: ''
$DRY_RUN_CMD ${krew}/bin/krew install ${plugin} || true
'') plugins}
'';
}

View File

@@ -1,6 +1,7 @@
{...}: { { pkgs, ... }: {
programs.lazygit = { programs.lazygit = {
enable = true; enable = true;
package = pkgs.lazygitLatest;
settings = { settings = {
gui.theme = { gui.theme = {

View File

@@ -1,11 +1,20 @@
{ {
lib,
pkgs, pkgs,
... ...
}: { }: {
home.packages = with pkgs; [ imports = [
yazi # terminal file manager ../atuin.nix
../shell.nix
../git.nix
../starship.nix
../eza.nix
../neovim.nix
../bat.nix
];
nixpkgs.config.allowUnfree = true;
home.packages = with pkgs; [
# archives # archives
zip zip
xz xz
@@ -13,40 +22,22 @@
p7zip p7zip
# utils # utils
yazi
tmux tmux
lazygit
bottom bottom
ripgrep ripgrep
jq jq
yq-go yq-go
fzf fzf
fh
aria2 aria2
yt-dlp gnupg
obsidian
vscode
weechat
inetutils inetutils
# misc # misc
cowsay
file file
which which
tree tree
gnutar gnutar
gnupg
zoxide
babelfish babelfish
# language-specific package managers
nodejs
cargo
python3
# nix specific stuff
nixd
deadnix
alejandra
statix
]; ];
} }

View File

@@ -1,10 +1,7 @@
{ { lib, pkgs, ... }:
pkgs, lib.mkIf pkgs.stdenv.isDarwin {
lib, home.packages = with pkgs; [
...
}: {
home.packages = lib.mkIf pkgs.stdenv.isDarwin (with pkgs; [
discord discord
ollama ollama
]); ];
} }

View File

@@ -1,11 +1,11 @@
{ lib, role ? "workstation", ... }:
{ {
pkgs, imports =
lib, [
...
}: {
imports = [
./common.nix ./common.nix
./darwin.nix ./darwin.nix
./linux.nix ./linux.nix
]; ]
++ lib.optional (role == "workstation") ./workstation.nix
++ lib.optional (role == "server") ./server.nix;
} }

View File

@@ -1,20 +1,16 @@
{ { lib, pkgs, isNixOS ? true, ... }:
pkgs, lib.mkIf pkgs.stdenv.isLinux {
lib, home.packages = with pkgs; [
...
}: {
home.packages = lib.mkIf pkgs.stdenv.isLinux (with pkgs; [
imv imv
xdg-utils
] ++ lib.optionals isNixOS [
betterdiscordctl betterdiscordctl
vesktop vesktop
xdg-utils
mcrcon
xfce.thunar xfce.thunar
pavucontrol pavucontrol
godot godot
aseprite aseprite
gpu-screen-recorder gpu-screen-recorder
gpu-screen-recorder-gtk gpu-screen-recorder-gtk
# ungoogled-chromium ];
]);
} }

View File

@@ -0,0 +1,4 @@
{ pkgs, ... }: {
home.packages = [
];
}

View File

@@ -0,0 +1,33 @@
{
lib,
pkgs,
isNixOS ? true,
...
}: {
imports = [
../terminal.nix
../browser.nix
../zellij.nix
../lazygit.nix
../k9s.nix
../krew.nix
../direnv.nix
] ++ lib.optional isNixOS ../sway.nix;
home.packages = with pkgs; [
fh
kubectl # kube config is deliberately not included
kubectx
obsidian
vscode
yt-dlp
weechat
nodejs
cargo
python3
nixd
deadnix
alejandra
statix
];
}

View File

@@ -1,29 +1,32 @@
{ {pkgs, lib, ...}: {
lib, programs.fish = {
pkgs,
userName,
...
}: {
programs = {
fish = {
enable = true; enable = true;
shellInit = ''
if test -d $HOME/.krew/bin
set -gx PATH $HOME/.krew/bin $PATH
end
'';
shellAliases = { shellAliases = {
# ls aliases # ls aliases
ls = "eza --color"; ls = "eza --color";
la = "eza -l -all --color"; la = "eza -l -all --color";
ll = "eza -l --color"; ll = "eza -l --color";
lt = "eza -l --color --git"; lt = "eza -l --color --git";
# lazygit alias # lazygit alias
lg = "lazygit"; lg = "lazygit";
# cat, less, more alias # cat, less, more alias
cat = "bat"; cat = "bat";
less = "bat"; less = "bat";
more = "bat"; more = "bat";
# top alias # top alias
top = "btm"; top = "btm";
}; };
functions =
{ functions = {
fish_greeting = { fish_greeting = {
body = '' body = ''
set memes \ set memes \
@@ -55,47 +58,45 @@
"The sun is setting, darkness taking over - a date with chaos and you're dressed to the nines" \ "The sun is setting, darkness taking over - a date with chaos and you're dressed to the nines" \
"Now kneel overdweller, your lord commands, there's no salvation for the sons of man" \ "Now kneel overdweller, your lord commands, there's no salvation for the sons of man" \
"Snap click clank whirr whizz wham boom!" \ "Snap click clank whirr whizz wham boom!" \
"Rohs an kyn ala na" "Rohs an kyn ala na" \
"If youve brought your ivory standard, Ill be happy to tell you where you can stick it" \
"Speeches? Oh, yes, I love them. There's nothing like a good exposition when you're having trouble sleeping!" \
"Somehow, the boy just isn't very buoyant" \
"I am...not interested, little sun. Try again when you have become a man"
set choose_meme (random)"%"(count $memes) set choose_meme (random)"%"(count $memes)
set choose_meme $memes[(math $choose_meme"+1")] set choose_meme $memes[(math $choose_meme"+1")]
printf (set_color F90)"%s\n" $choose_meme printf (set_color F90)"%s\n" $choose_meme
''; '';
# onEvent = "fish_greeting"; onEvent = "fish_greeting";
}; };
} // (lib.mkIf pkgs.stdenv.isLinux { } // lib.optionalAttrs pkgs.stdenv.isLinux {
block = { block = {
body = '' body = ''
echo "Starting systemd-inhibit..." systemd-inhibit --what=sleep --who="$USER" --why="manual invocation" --mode=block sleep infinity &
set inhibit_pid_file /tmp/fish_inhibit_pid_(whoami) set -g INHIBIT_PID $last_pid
bash -c 'systemd-inhibit --no-ask-password --what=idle --who="'${userName}'" --why="manual invocation" sh & echo $! > '"$inhibit_pid_file"' && disown' echo "Sleep inhibited. PID: $INHIBIT_PID"
if test -f $inhibit_pid_file
set -g INHIBIT_PID (cat $inhibit_pid_file)
echo "Inhibit process started with PID: $INHIBIT_PID"
else
echo "Failed to start inhibit process"
return 1
end
''; '';
}; };
unblock = { unblock = {
body = '' body = ''
set inhibit_pid_file /tmp/fish_inhibit_pid_(whoami) if set -q INHIBIT_PID
if test -f $inhibit_pid_file kill $INHIBIT_PID 2>/dev/null
set INHIBIT_PID (cat $inhibit_pid_file) and echo "Sleep inhibitor removed. PID: $INHIBIT_PID"
echo "Killing inhibit process: $INHIBIT_PID" or echo "Failed to kill process or already terminated."
kill -SIGTERM $INHIBIT_PID 2>/dev/null; or kill -SIGKILL $INHIBIT_PID 2>/dev/null
rm -f $inhibit_pid_file
set -e INHIBIT_PID set -e INHIBIT_PID
echo "Inhibit process terminated"
else else
echo "No inhibit process file found" echo "No active sleep inhibitor found."
end end
''; '';
}; };
});
}; };
zsh = { };
programs.zsh = {
enable = true; enable = true;
initContent = '' initContent = ''
if [[ -z "$BASH_EXECUTION_STRING" ]]; then if [[ -z "$BASH_EXECUTION_STRING" ]]; then
@@ -108,7 +109,8 @@
fi fi
''; '';
}; };
bash = {
programs.bash = {
enable = true; enable = true;
initExtra = '' initExtra = ''
if [[ -z "$BASH_EXECUTION_STRING" ]]; then if [[ -z "$BASH_EXECUTION_STRING" ]]; then
@@ -121,5 +123,4 @@
fi fi
''; '';
}; };
};
} }

View File

@@ -1,4 +1,4 @@
{ lib, pkgs, ghostty, ... }: { { pkgs, ... }: {
programs.alacritty = { programs.alacritty = {
enable = pkgs.stdenv.isLinux; enable = pkgs.stdenv.isLinux;
settings = { settings = {
@@ -103,9 +103,4 @@
programs.kitty = { programs.kitty = {
enable = false; # TODO: to enable later enable = false; # TODO: to enable later
}; };
home.packages = if pkgs.stdenv.isLinux then
[ ghostty.packages.${pkgs.system}.default ]
else
[ ];
} }

0
lib/checkSystem.nix Normal file
View File

View File

@@ -8,6 +8,9 @@
# Allow unfree packages # Allow unfree packages
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
nixpkgs.config.permittedInsecurePackages = [
"mbedtls-2.28.10"
];
nix.package = pkgs.nix; nix.package = pkgs.nix;

View File

@@ -1,12 +1,9 @@
{ { ... }: {
pkgs,
lib,
...
}: {
imports = [ imports = [
./core.nix ./core.nix
./environment.nix ./environment.nix
./fonts.nix ./fonts.nix
# ./overlays.nix
./users.nix ./users.nix
]; ];
} }

View File

@@ -1,20 +1,23 @@
{ lib, pkgs, ... }: { { lib, pkgs, ... }: {
# Common packages that every system will use
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
git git
vim vim
neovim neovim
usbutils usbutils
coreutils coreutils
lshw
systemd
dmidecode
pciutils pciutils
nix-ld
patchelf patchelf
htop htop
]; ] ++
lib.optionals pkgs.stdenv.isLinux (with pkgs; [
systemd
lshw
dmidecode
nix-ld
]) ++
lib.optionals pkgs.stdenv.isDarwin (with pkgs; [
# nothing here, yet ;)
]);
# Common environment variables that every system will use
environment.variables.EDITOR = "nvim"; environment.variables.EDITOR = "nvim";
} }

View File

@@ -0,0 +1,65 @@
final: prev: let
# Use latest rust from overlay which should work on non-NixOS
rust_latest = prev.rust-bin.stable.latest.default;
myRustPlatform = prev.makeRustPlatform {
cargo = rust_latest;
rustc = rust_latest;
};
in {
lazygitLatest = prev.lazygit.overrideAttrs (_: rec {
version = "0.55.1";
src = prev.fetchFromGitHub {
owner = "jesseduffield";
repo = "lazygit";
rev = "v${version}";
hash = "sha256-UofhgILZhVXnYiGpb25m4Ct4sbu5pRmjVgj3oEf5Uyk=";
};
vendorHash = null;
subPackages = [ "." ];
ldflags = [
"-X main.version=${version}"
"-X main.buildSource=nix"
];
});
atuinLatest = (prev.atuin.override {
rustPlatform = myRustPlatform;
}).overrideAttrs (oldAttrs: rec {
version = "18.10.0";
src = prev.fetchFromGitHub {
owner = "atuinsh";
repo = "atuin";
rev = "v${version}";
hash = "sha256-bfSa3RtVXxHt3usDqqpE/oXKKDUZOrf+tD9uL59fr6M=";
};
cargoDeps = myRustPlatform.fetchCargoVendor {
# name = "atuin-${version}-vendor.tar.gz";
inherit src;
hash = "sha256-67ffivZVCly1GWA3fJ9mT8nGv2EGd6eCthbaIu/IW3M=";
};
preCheck = (oldAttrs.preCheck or "") + ''
export HOME="$TMPDIR"
export XDG_CONFIG_HOME="$TMPDIR/.config"
export XDG_DATA_HOME="$TMPDIR/.local/share"
export XDG_STATE_HOME="$TMPDIR/.local/state"
mkdir -p "$XDG_CONFIG_HOME" "$XDG_DATA_HOME" "$XDG_STATE_HOME"
'';
});
# k9sLatest = prev.k9s.overrideAttrs (oldAttrs: rec {
# version = "0.30.16";
# src = prev.fetchFromGitHub {
# owner = "derailed";
# repo = "k9s";
# rev = "v${version}";
# hash = "sha256-1z6r6v3n1p6vd2q6n4pl5q3f7q3q7q1p7j5j1k3l4m5n6o7p8q9r";
# };
# ldflags = [
# "-X github.com/derailed/k9s/version.Version=${version}"
# "-X github.com/derailed/k9s/version.BuildSource=nix"
# ];
# });
}

View File

@@ -1,30 +1,23 @@
{ lib, pkgs, userName, hostname, ... }:
{ {
lib,
pkgs,
userName,
hostname,
...
} @ args: {
networking.hostName = hostname; networking.hostName = hostname;
# Don't forget to set a password with passwd! users.users."${userName}" = {
users.users."${userName}" = lib.mkMerge [ home = if pkgs.stdenv.isDarwin
{
home =
if pkgs.stdenv.isDarwin
then "/Users/${userName}" then "/Users/${userName}"
else "/home/${userName}"; else "/home/${userName}";
description = userName; description = userName;
} } // lib.optionalAttrs pkgs.stdenv.isLinux {
(lib.mkIf (pkgs.stdenv.isLinux) {
group = "${userName}"; group = "${userName}";
isNormalUser = true; isNormalUser = true;
}) };
];
security.sudo = { users.groups.wyatt = {};
extraRules = [ nix.settings.trusted-users = [userName];
security = lib.optionalAttrs pkgs.stdenv.isLinux {
sudo.extraRules = [
{ {
groups = [ "wheel" ]; groups = [ "wheel" ];
commands = [ commands = [
@@ -37,7 +30,9 @@
]; ];
}; };
users.groups.wyatt = {}; environment = lib.optionalAttrs pkgs.stdenv.isDarwin {
etc."sudoers.d/wheel-nopasswd".text = ''
nix.settings.trusted-users = [userName]; %wheel ALL=(ALL:ALL) NOPASSWD: SETENV: ALL
'';
};
} }

View File

@@ -18,7 +18,7 @@
in { in {
imports = [ imports = [
(import ../../apps/flatpak.nix { (import ../../apps/flatpak.nix {
inherit lib pkgs flatpakPackages; inherit lib pkgs flatpakPackages userName;
}) })
../../apps/gaming.nix ../../apps/gaming.nix
../../apps/appimage.nix ../../apps/appimage.nix

View File

@@ -12,24 +12,24 @@
(modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
]; ];
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod"]; boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "thunderbolt" "ahci" "usb_storage" "usbhid" "sd_mod"];
boot.initrd.kernelModules = []; boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-amd"]; boot.kernelModules = ["kvm-amd"];
boot.extraModulePackages = []; boot.extraModulePackages = [];
fileSystems."/" = { fileSystems."/" = {
device = "/dev/disk/by-label/COMPUTER"; device = "/dev/disk/by-uuid/f8f39aae-61d2-437d-a8e1-01066bbb3c5c";
fsType = "xfs"; fsType = "xfs";
}; };
fileSystems."/boot" = { fileSystems."/boot" = {
device = "/dev/disk/by-label/BOOT"; device = "/dev/disk/by-uuid/B72F-087F";
fsType = "vfat"; fsType = "vfat";
options = ["fmask=0022" "dmask=0022"]; options = ["fmask=0022" "dmask=0022"];
}; };
swapDevices = [ swapDevices = [
{device = "/dev/disk/by-label/SWAP";} {device = "/dev/disk/by-uuid/6d6bcc02-20a9-4ae8-9c1e-5124fb2b2634";}
]; ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking # Enables DHCP on each ethernet and wireless interface. In case of scripted networking

View File

@@ -5,7 +5,7 @@
}: }:
with lib; { with lib; {
options = { options = {
security.sudo = { security.sudoers = {
needsPassword = mkOption { needsPassword = mkOption {
type = types.bool; type = types.bool;
default = true; default = true;

View File

@@ -1,7 +1,16 @@
{pkgs, ...}: { { lib, pkgs, userName, ...}: {
services.shairport-sync = { services.shairport-sync = {
enable = pkgs.stdenv.isLinux; enable = pkgs.stdenv.isLinux;
openFirewall = pkgs.stdenv.isLinux; openFirewall = pkgs.stdenv.isLinux;
arguments = "-v -o pw"; # arguments = "-v -o pa";
};
systemd.services.shairport-sync = {
serviceConfig = {
User = lib.mkForce "${userName}";
};
environment = {
XDG_RUNTIME_DIR = "/run/user/1000";
};
}; };
} }