Compare commits

...

10 Commits

22 changed files with 250 additions and 43 deletions

View File

@ -2,10 +2,10 @@
1) Install [NixOS](https://nixos.org/) from an ISO via USB 1) Install [NixOS](https://nixos.org/) from an ISO via USB
2) Reboot machine 2) Reboot machine
3) Edit /etc/nixos/configuration and add `git` to packages 3) Edit `/etc/nixos/configuration` and add `git` to packages
4) Clone this repo 4) Clone this repo
5) Copy new `host/` configuration for the new machine 5) Copy new `host/` configuration for the new machine
6) Copy /etc/nixos/hardware-configuration to `host/<host>/hardware.nix` 6) Copy `/etc/nixos/hardware-configuration` to `host/<host>/hardware.nix`
7) Edit `flake.nix` to point to the new `host` 7) Edit `flake.nix` to point to the new `host`
8) `git add .` 8) `git add .`
9) Run `sudo nixos-rebuild switch --flake .#nixos` 9) Run `sudo nixos-rebuild switch --flake .#nixos`
@ -17,6 +17,22 @@ https://gist.github.com/FlakM/0535b8aa7efec56906c5ab5e32580adf
# Building NixOS ISO # Building NixOS ISO
`nix build .#nixosConfigurations.live.config.system.build.isoImage` `nix build .#nixosConfigurations.live.config.system.build.isoImage`
# Using Standalone Home Manager
1) Install [Nix](https://nixos.org/) via:
`
sh <(curl --proto '=https' --tlsv1.2 -L https://nixos.org/nix/install) --daemon
`
2) Create `~/.config/nix/nix.conf` file with the following contents to enable the use of flakes:
```
experimental-features = nix-command flakes
```
3) Install `git`
4) Clone this repo
5) Edit `flake.nix` variables as needed
6) `home-manager switch --flake .`
# Misc # Misc
## Garbage collection ## Garbage collection
`nix-collect-garbage -d` `nix-collect-garbage -d`

View File

@ -68,6 +68,28 @@
"type": "github" "type": "github"
} }
}, },
"elephant": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"systems": "systems"
},
"locked": {
"lastModified": 1769329000,
"narHash": "sha256-0vibWqmCsG1t4xL2euR6PScB3M4QZigB5JGl+BIH4NY=",
"owner": "abenz1267",
"repo": "elephant",
"rev": "1988112d1f54dd76e8a90f551945df763586bdad",
"type": "github"
},
"original": {
"owner": "abenz1267",
"ref": "master",
"repo": "elephant",
"type": "github"
}
},
"firefox-gnome-theme": { "firefox-gnome-theme": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -147,11 +169,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1768836546, "lastModified": 1769289524,
"narHash": "sha256-nJZkTamcXXMW+SMYiGFB6lB8l0aJw0xjssfN8xYd/Fs=", "narHash": "sha256-6Cwtvzrw79cOk1lCzN2aKSVrpgSOSQoYhyMmhXXZjTA=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "b56c5ad14fcf8b5bc887463552483bf000ca562a", "rev": "2539eba97a6df237d75617c25cd2dbef92df3d5b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -184,11 +206,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1768789193, "lastModified": 1769220693,
"narHash": "sha256-EWIj+tZSvbi3e43tBwc6xvNwEWEVwPQkuGim2tvxP/E=", "narHash": "sha256-o2r6tPNQ966AjPw5QpiD0guVXm5SvkuTIbZH9vN87NE=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nix-vscode-extensions", "repo": "nix-vscode-extensions",
"rev": "7e5664fa1e2051630b5e9e976cfd462f21a94abb", "rev": "515d1d8491dd5be06f4db0208f096f0cedba1824",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -199,11 +221,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1768564909, "lastModified": 1769018530,
"narHash": "sha256-Kell/SpJYVkHWMvnhqJz/8DqQg2b6PguxVWOuadbHCc=", "narHash": "sha256-MJ27Cy2NtBEV5tsK+YraYr2g851f3Fl1LpNHDzDX15c=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "e4bae1bd10c9c57b2cf517953ab70060a828ee6f", "rev": "88d3861acdd3d2f0e361767018218e51810df8a1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -240,11 +262,13 @@
}, },
"root": { "root": {
"inputs": { "inputs": {
"elephant": "elephant",
"home-manager": "home-manager", "home-manager": "home-manager",
"install-system": "install-system", "install-system": "install-system",
"nix-vscode-extensions": "nix-vscode-extensions", "nix-vscode-extensions": "nix-vscode-extensions",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"stylix": "stylix" "stylix": "stylix",
"walker": "walker"
} }
}, },
"stylix": { "stylix": {
@ -260,7 +284,7 @@
"nixpkgs" "nixpkgs"
], ],
"nur": "nur", "nur": "nur",
"systems": "systems", "systems": "systems_2",
"tinted-foot": "tinted-foot", "tinted-foot": "tinted-foot",
"tinted-kitty": "tinted-kitty", "tinted-kitty": "tinted-kitty",
"tinted-schemes": "tinted-schemes", "tinted-schemes": "tinted-schemes",
@ -268,11 +292,11 @@
"tinted-zed": "tinted-zed" "tinted-zed": "tinted-zed"
}, },
"locked": { "locked": {
"lastModified": 1768744881, "lastModified": 1769202931,
"narHash": "sha256-3+h7OxqfrPIB/tRsiZXWE9sCbTm7NQN5Ie428p+S6BA=", "narHash": "sha256-4IZuCMjlWEtS6rVXozVXaJG6QADHVncXC29PLZr6ZB4=",
"owner": "danth", "owner": "danth",
"repo": "stylix", "repo": "stylix",
"rev": "06684f00cfbee14da96fd4307b966884de272d3a", "rev": "749285c90e3e35ebe0952c86838f3089abbc7939",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -283,6 +307,21 @@
} }
}, },
"systems": { "systems": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"systems_2": {
"locked": { "locked": {
"lastModified": 1681028828, "lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
@ -297,6 +336,21 @@
"type": "github" "type": "github"
} }
}, },
"systems_3": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"tinted-foot": { "tinted-foot": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -377,6 +431,31 @@
"repo": "base16-zed", "repo": "base16-zed",
"type": "github" "type": "github"
} }
},
"walker": {
"inputs": {
"elephant": [
"elephant"
],
"nixpkgs": [
"nixpkgs"
],
"systems": "systems_3"
},
"locked": {
"lastModified": 1769093508,
"narHash": "sha256-ccwJ1ADGNFd5LDF2JWdfP7+f1Hs2EvJ+2o6sUOdYi7w=",
"owner": "abenz1267",
"repo": "walker",
"rev": "e427025bdda667712b08dd56f1a0a23667f1364c",
"type": "github"
},
"original": {
"owner": "abenz1267",
"ref": "master",
"repo": "walker",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View File

@ -7,15 +7,29 @@
url = "github:nix-community/home-manager/master"; url = "github:nix-community/home-manager/master";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nix-vscode-extensions = { nix-vscode-extensions = {
url = "github:nix-community/nix-vscode-extensions"; url = "github:nix-community/nix-vscode-extensions";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
stylix = { stylix = {
url = "github:danth/stylix/master"; url = "github:danth/stylix/master";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
elephant = {
url = "github:abenz1267/elephant/master";
inputs.nixpkgs.follows = "nixpkgs";
};
walker = {
url = "github:abenz1267/walker/master";
inputs = {
elephant.follows = "elephant";
nixpkgs.follows = "nixpkgs";
};
};
install-system = { install-system = {
url = "path:scripts/install-system"; url = "path:scripts/install-system";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@ -55,14 +69,14 @@
inherit system; inherit system;
specialArgs = { specialArgs = {
inherit inputs; inherit inputs;
inherit host; host = "installation-iso";
inherit profile; profile = "desktop";
inherit username; inherit username;
}; };
modules = [ modules = [
(nixpkgs + "/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix") (nixpkgs + "/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix")
{ environment.systemPackages = [ install-system.packages.${system}.default ]; } { environment.systemPackages = [ install-system.packages.${system}.default ]; }
./hosts/${host} ./hosts/installation-iso
]; ];
}; };
}; };

View File

@ -19,6 +19,10 @@ with lib;
username = "josh"; username = "josh";
homeDirectory = "/home/josh"; homeDirectory = "/home/josh";
stateVersion = "25.11"; stateVersion = "25.11";
packages = with pkgs; [
tldr
];
}; };
# Let Home Manager install and manage itself # Let Home Manager install and manage itself
@ -32,6 +36,14 @@ with lib;
"nix-command" "nix-command"
"flakes" "flakes"
]; ];
extra-substituters = [
"https://walker.cachix.org"
"https://walker-git.cachix.org"
];
extra-trusted-public-keys = [
"walker.cachix.org-1:fG8q+uAaMqhsMxWjwvk0IMb4mFPFLqHjuvfwQxE4oJM="
"walker-git.cachix.org-1:vmC0ocfPWh0S/vRAQGtChuiZBTAe4wiKDeyyXM0/7pM="
];
}; };
}; };
} }

View File

@ -0,0 +1,25 @@
{
...
}:
{
imports = [
../../modules/core
../../modules/options
./hardware.nix
./host-packages.nix
];
modules.hyprland = {
enable = true;
terminal = "kitty";
};
modules.plasma.enable = false;
modules.displayManager.displayManager = "gdm";
modules.zsh.enable = true;
modules.shell.defaultShell = "zsh";
modules.pipewire.enable = true;
}

View File

@ -0,0 +1,3 @@
{
}

View File

@ -0,0 +1,10 @@
{
pkgs,
...
}:
{
environment.systemPackages = with pkgs; [
parted
unixtools.fdisk
];
}

View File

@ -1,10 +1,8 @@
{ {
profile,
... ...
}: }:
{ {
imports = [ imports = [
../../profiles/${profile}
../../profiles/vm ../../profiles/vm
../../modules/core ../../modules/core
../../modules/options ../../modules/options
@ -16,6 +14,7 @@
modules.hyprland = { modules.hyprland = {
enable = true; enable = true;
terminal = "kitty"; terminal = "kitty";
launcher = "walker";
monitor = [ monitor = [
",preferred,auto,1" ",preferred,auto,1"
]; ];

View File

@ -17,5 +17,6 @@
./stylix.nix ./stylix.nix
./system.nix ./system.nix
./user.nix ./user.nix
./zsh.nix
]; ];
} }

View File

@ -7,7 +7,7 @@
networking = { networking = {
hostName = "${host}"; hostName = "${host}";
networkmanager.enable = true; networkmanager.enable = true;
wireless.enable = false; wireless.enable = true;
}; };
environment.systemPackages = with pkgs; [ networkmanagerapplet ]; environment.systemPackages = with pkgs; [ networkmanagerapplet ];

View File

@ -32,5 +32,5 @@ in
}; };
}; };
system.stateVersion = "25.05"; system.stateVersion = "26.05";
} }

View File

@ -48,8 +48,10 @@ in
# Set /etc/shells so GDM will show our user when ZSH is selected # Set /etc/shells so GDM will show our user when ZSH is selected
environment.shells = [ pkgs.${shellCfg.defaultShell} ]; environment.shells = [ pkgs.${shellCfg.defaultShell} ];
# Needed to get completion for system packages (e.g. systemd)
environment.pathsToLink = environment.pathsToLink =
[ ] # Since Home Manager is installed via its NixOS module, we need to add this so that
# the portal definitions and DE provided configurations get linked
[ "/share/applications" "/share/xdg-desktop-portal" ]
# Needed to get completion for system packages (e.g. systemd)
++ (if zshCfg.enable then [ "/share/zsh" ] else [ ]); ++ (if zshCfg.enable then [ "/share/zsh" ] else [ ]);
} }

14
modules/core/zsh.nix Normal file
View File

@ -0,0 +1,14 @@
{
config,
lib,
...
}:
with lib;
let
zshCfg = config.modules.zsh;
in
{
config = mkIf zshCfg.enable {
programs.zsh.enable = true;
};
}

View File

@ -10,6 +10,7 @@
./overlays.nix ./overlays.nix
./stylix.nix ./stylix.nix
./vscodium.nix ./vscodium.nix
./walker.nix
./xdg.nix ./xdg.nix
./zsh ./zsh
]; ];

View File

@ -11,6 +11,7 @@ in
bind = [ bind = [
# Misc # Misc
"$mod,Return,exec,${cfg.terminal}" "$mod,Return,exec,${cfg.terminal}"
"$mod,D,exec,walker"
# Window management # Window management
"$mod,C,killactive" "$mod,C,killactive"

View File

@ -12,8 +12,7 @@ in
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
enable = cfg.enable; enable = cfg.enable;
package = pkgs.hyprland; package = pkgs.hyprland;
systemd.enable = false; systemd.enable = true;
xwayland.enable = true;
settings = { settings = {
monitor = cfg.monitor; monitor = cfg.monitor;
@ -47,6 +46,10 @@ in
}; };
}; };
misc = {
initial_workspace_tracking = 2;
};
env = [ env = [
"NIXOS_OZONE_WL, 1" "NIXOS_OZONE_WL, 1"
"XDG_CURRENT_DESKTOP, Hyprland" "XDG_CURRENT_DESKTOP, Hyprland"
@ -54,6 +57,10 @@ in
"XDG_SESSION_TYPE, wayland" "XDG_SESSION_TYPE, wayland"
]; ];
xwayland = {
enabled = true;
};
ecosystem = { ecosystem = {
no_update_news = true; no_update_news = true;
}; };

17
modules/homes/walker.nix Normal file
View File

@ -0,0 +1,17 @@
{
config,
inputs,
lib,
...
}:
with lib;
let hyprlandCfg = config.modules.hyprland;
in
{
imports = [ inputs.walker.homeManagerModules.default ];
programs.walker = mkIf (hyprlandCfg.launcher == "walker") {
enable = true;
runAsService = true;
};
}

View File

@ -19,6 +19,15 @@ with lib;
The terminal to use for Hyprland. The terminal to use for Hyprland.
''; '';
}; };
launcher = mkOption {
type = types.enum [
"walker"
];
default = "walker";
description = ''
The application launcher to use for Hyprland.
'';
};
monitor = mkOption { monitor = mkOption {
type = types.listOf types.str; type = types.listOf types.str;
default = [ ",preferred,auto,1" ]; default = [ ",preferred,auto,1" ];

View File

@ -2,16 +2,16 @@
"nodes": { "nodes": {
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1767313136, "lastModified": 1769089682,
"narHash": "sha256-16KkgfdYqjaeRGBaYsNrhPRRENs0qzkQVUooNHtoy2w=", "narHash": "sha256-9yA/LIuAVQq0lXelrZPjLuLVuZdm03p8tfmHhnDIkms=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "ac62194c3917d5f474c1a844b6fd6da2db95077d", "rev": "078d69f03934859a181e81ba987c2bb033eebfc5",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "nixos",
"ref": "nixos-25.05", "ref": "nixos-25.11",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }

View File

@ -2,7 +2,7 @@
description = "_template package and shell environment"; description = "_template package and shell environment";
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
}; };
outputs = outputs =
@ -10,7 +10,7 @@
let let
system = "x86_64-linux"; system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system}.pkgs; pkgs = nixpkgs.legacyPackages.${system}.pkgs;
name = builtins.baseNameOf (builtins.toString ./.); name = baseNameOf (toString ./.);
shellApplication = pkgs.writeShellApplication { shellApplication = pkgs.writeShellApplication {
inherit name; inherit name;

View File

@ -2,16 +2,16 @@
"nodes": { "nodes": {
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1767313136, "lastModified": 1769089682,
"narHash": "sha256-16KkgfdYqjaeRGBaYsNrhPRRENs0qzkQVUooNHtoy2w=", "narHash": "sha256-9yA/LIuAVQq0lXelrZPjLuLVuZdm03p8tfmHhnDIkms=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "ac62194c3917d5f474c1a844b6fd6da2db95077d", "rev": "078d69f03934859a181e81ba987c2bb033eebfc5",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "nixos",
"ref": "nixos-25.05", "ref": "nixos-25.11",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }

View File

@ -2,23 +2,20 @@
description = "install-system package and shell environment"; description = "install-system package and shell environment";
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
}; };
outputs = outputs =
{ nixpkgs, ... }: { nixpkgs, ... }:
let let
pkgs = nixpkgs.legacyPackages.x86_64-linux.pkgs; pkgs = nixpkgs.legacyPackages.x86_64-linux.pkgs;
name = builtins.baseNameOf (builtins.toString ./.); name = baseNameOf (toString ./.);
shellApplication = pkgs.writeShellApplication { shellApplication = pkgs.writeShellApplication {
inherit name; inherit name;
text = builtins.readFile ./${name}.sh; text = builtins.readFile ./${name}.sh;
runtimeInputs = with pkgs; [ runtimeInputs = with pkgs; [
coreutils
gnused
unixtools.column
]; ];
}; };
in in