Compare commits

..

181 commits

Author SHA1 Message Date
8b06796596
fix: disable nvidia settings
apparently these were never enabled before. jesus
2025-06-01 21:02:01 -07:00
b5a5b2c727
fix: fix git username 2025-06-01 20:48:38 -07:00
cff0ea5cac
fix: shorten config check 2025-06-01 13:12:54 -07:00
f87f6f1546
fix: properly set git.name/email 2025-05-31 18:53:01 -07:00
c7da17b79d
fix: don't set marleycfg.my twice 2025-05-31 18:46:03 -07:00
a2e122e75d
fix: marleyos.my -> marleycfg.my 2025-05-31 18:39:54 -07:00
0a3075f675
fix: enable git 2025-05-31 18:38:06 -07:00
2f6ed21f0c
feat: finished migration 2025-05-31 18:03:19 -07:00
0ace76d28b
feat: done with gui migration 2025-05-31 17:57:56 -07:00
e55314c922
feat: zathura 2025-05-31 17:57:56 -07:00
979d3dba03
feat: wezterm 2025-05-31 17:57:56 -07:00
d244b5d2a5
feat: vlc 2025-05-31 17:42:15 -07:00
26a49acbc1
feat: thunderbird 2025-05-31 17:40:10 -07:00
7d6e9c5e2b
feat: pidgin 2025-05-31 17:34:48 -07:00
9c6bc0630d
feat: phpstorm 2025-05-31 17:25:13 -07:00
9a18c250df
feat: floorp 2025-05-31 17:24:39 -07:00
49f1f933d0
feat: discord 2025-05-31 17:24:38 -07:00
b176aa7368
feat: calibre 2025-05-31 17:24:38 -07:00
10d169e85b
feat: CEmu 2025-05-31 17:24:38 -07:00
b73e2eecc5
feat: let home-manager manage its own overlays 2025-05-31 16:26:42 -07:00
411080df71
feat: done with tui migration 2025-05-31 15:57:21 -07:00
3fbc4c0642
feat: superfile 2025-05-31 15:57:04 -07:00
854edf73a0
feat: ncmpcpp 2025-05-31 15:48:52 -07:00
4a6f1a035e
feat: lazygit 2025-05-31 14:31:35 -07:00
a0dff23259
feat: lazydocker 2025-05-31 14:29:28 -07:00
53eee10dc1
feat: jqp 2025-05-31 14:29:28 -07:00
7855b51297
feat: cava 2025-05-31 14:29:27 -07:00
a0fe695cbc
feat: btop 2025-05-31 14:12:27 -07:00
7faa72dcd7
feat: amfora 2025-05-31 14:09:22 -07:00
6a43ef3bd9
feat: done with cli migration 2025-05-31 14:00:31 -07:00
76224a7113
feat: zoxide 2025-05-31 14:00:08 -07:00
00a252a009
feat: wget 2025-05-31 13:54:34 -07:00
fd4481a2e1
feat: tmux 2025-05-31 13:54:34 -07:00
b3fe1164fd
feat: tea 2025-05-31 13:54:34 -07:00
b8f1295953
feat: systemctl 2025-05-31 13:54:34 -07:00
57a6f61802
feat: starship 2025-05-31 12:34:57 -07:00
1922579c77
fix: repl 2025-05-31 12:20:03 -07:00
5633ed5914
style: divider too long 2025-05-31 12:11:00 -07:00
80db008bb7
feat: ssh 2025-05-28 18:35:36 -07:00
16f2e7fd18
feat: ripgrep 2025-05-28 18:26:49 -07:00
854b296c07
feat: delete rbw 2025-05-28 18:19:43 -07:00
bad48abd05
feat: nix-output-monitor 2025-05-28 18:19:43 -07:00
f717547060
fix: overlays 2025-05-27 21:10:27 -07:00
68c0738d05
feat: reorganizing 2025-05-27 18:31:50 -07:00
cb6e5d21d1
feat: neovim 2025-05-27 18:23:11 -07:00
1a288babfc
feat: neo 2025-05-27 17:51:21 -07:00
99a600c253
feat: man 2025-05-27 17:50:11 -07:00
f9af0ee523
feat: less 2025-05-27 17:44:51 -07:00
9978c79bd1
feat: just 2025-05-27 17:36:05 -07:00
281ebd52f0
feat: jq 2025-05-27 17:33:35 -07:00
23c028f620
feat: journalctl 2025-05-27 17:30:05 -07:00
bcab411b3a
fix: move apps back to hm 2025-05-27 17:26:51 -07:00
a2708e7c33
feat: hyfetch 2025-05-27 17:25:28 -07:00
82b1d1da11
feat: httpie 2025-05-27 17:23:47 -07:00
e9d85deaa6
feat: gpg 2025-05-27 17:23:47 -07:00
66e104d402
feat: move apps to global options 2025-05-27 17:20:12 -07:00
6908755316
feat: glow 2025-05-27 17:11:28 -07:00
5b0774350f
feat: git 2025-05-26 20:12:25 -07:00
fb29126d4c
fix: set and install clipboard 2025-05-26 20:12:25 -07:00
1a998d1edb
fix: move ddclient overlay to it's module 2025-05-26 20:12:25 -07:00
a8fa9c6c04
feat: gh 2025-05-26 19:58:07 -07:00
1f388342bb
feat: fzf 2025-05-26 19:44:01 -07:00
9576a8a998
fix: lix module already imports the overlay 2025-05-26 19:41:45 -07:00
f8adbd437a
fix: proper null checking 2025-05-26 19:36:50 -07:00
233d03639c
fix: fix marleyos overlay 2025-05-26 19:35:31 -07:00
0333e31aac
feat: fish 2025-05-26 19:29:59 -07:00
ff92fb22ff
feat: figlet 2025-05-26 19:22:40 -07:00
fbfec1f8da
feat: eza 2025-05-26 19:06:45 -07:00
aa53aea6cf
feat: curl 2025-05-26 19:04:40 -07:00
21ea51b78d
feat: cheat 2025-05-26 18:59:08 -07:00
d22ff8cbe4
feat: bat 2025-05-26 18:41:37 -07:00
760cfcc059
feat: move overlays to modules 2025-05-26 18:27:35 -07:00
d952121242
feat: agenix 2025-05-26 18:16:08 -07:00
f00f6b55fc
feat: syncthing 2025-05-26 17:55:21 -07:00
b3de4567ff
feat: nemo 2025-05-26 17:55:21 -07:00
ee879be648
feat: udiskie 2025-05-26 17:49:50 -07:00
54cac7ed48
feat: gnome-keyring 2025-05-26 17:11:50 -07:00
c6a7cc9a3f
chore: remove unused config 2025-05-26 17:04:43 -07:00
75e037b7f8
feat: swaybg 2025-05-26 17:04:43 -07:00
671b9e94e3
chore: remove unneeded config 2025-05-26 17:04:43 -07:00
d19b849577
feat: xwayland-satellite 2025-05-26 17:04:43 -07:00
73aa0bdcca
fix: add os checks 2025-05-26 17:04:43 -07:00
af432693bd
feat: fuzzel 2025-05-26 17:04:43 -07:00
334d3ae658
feat: swaync 2025-05-26 17:04:43 -07:00
b18d5e4d9d
feat: wlogout 2025-05-26 17:04:42 -07:00
da9ca5a563
feat: waybar 2025-05-26 17:04:42 -07:00
57b58d78ea
doc: add assertions to not activate desktop and server profiles at the same time 2025-05-26 16:24:26 -07:00
3a3d1e6cdf
feat: niri 2025-05-26 16:07:17 -07:00
baa1766186
fix: actually import niri module 2025-05-26 15:53:59 -07:00
a57da685a7
feat: nest xorg/wayland under shell 2025-05-26 15:49:03 -07:00
ede3d69907
feat: auto enable programs in hm if enabled in os 2025-05-26 15:42:53 -07:00
230e2d0e3a
feat: wayland 2025-05-26 15:42:52 -07:00
badd1aa7ad
feat: xsession 2025-05-26 15:12:15 -07:00
f9f9abf279
feat: qt 2025-05-26 13:43:13 -07:00
0ba745d792
feat: add check recipes 2025-05-26 13:43:07 -07:00
ead6eb1832
feat: gtk 2025-05-26 13:37:06 -07:00
a813e5a010
style: move stylix.nix into shell/ 2025-05-26 13:30:59 -07:00
5ce5eb0a8f
feat: move misc.nix into default.nix's config = {} 2025-05-26 13:30:31 -07:00
6ea68a2b25
fix: force using unfree packages for whatsapp-emoji-font 2025-05-26 13:30:12 -07:00
106b0d752e
feat: wrap all config in config = {}
To make it easier to add other top level attrsets if needed
2025-05-26 13:29:52 -07:00
ccfb74fa5c
fix: allow unfree packages 2025-05-26 13:21:57 -07:00
540bd601e2
feat: home-manager stylix 2025-05-26 13:21:57 -07:00
6ab38a390f
feat: add default pinentry 2025-05-26 13:17:46 -07:00
181970f273
fix: imports 2025-05-26 13:16:54 -07:00
79d253f2d7
fix: use lib.mkMerge instead of //
// doesn't deep merge, so marleyos.openssh.enable didn't stay set to
true after the desktop profile was applied
2025-05-26 13:16:34 -07:00
2b98d371f1
fix: pass marleylib to home-manager 2025-05-26 13:15:20 -07:00
fc4764ef04
chore: remove unused nixGL 2025-05-26 11:30:09 -07:00
6be6e4db46
feat: xdg 2025-05-26 11:29:47 -07:00
93ba9bfdaa
style: reorganizing 2025-05-26 11:20:05 -07:00
0d098f3823
feat: home profiles ; better seperators 2025-05-26 11:11:39 -07:00
fb8ad18439
feat: rename profile to avoid confusion w/ profiles 2025-05-26 11:06:41 -07:00
c4d46e7987
fix: nh gc & vanilla gc should not both be enabled 2025-05-26 11:05:01 -07:00
a27b3ffdd5
chore: remove unused options 2025-05-25 20:31:50 -07:00
546f73b42b
feat: my.git 2025-05-25 20:31:16 -07:00
ba90c05b2d
feat: shellAbbrs 2025-05-25 20:28:59 -07:00
8c014a0a97
feat: apps options 2025-05-25 20:28:54 -07:00
783502952c
feat: profile 2025-05-25 20:17:41 -07:00
555471d5f3
chore: remove unneeded config 2025-05-25 20:14:43 -07:00
8f12b248d5
fix: move environment out of nix 2025-05-25 20:07:22 -07:00
24ffd6d7ce
fix: useGlobalPackages -> useGlobalPkgs 2025-05-25 20:07:12 -07:00
8f64cd0822
feat: marleyos config -> marleycfg
fucking infinite recursion
2025-05-25 20:06:03 -07:00
f9d633f4c2
fix: remove ref to moved module 2025-05-25 19:43:42 -07:00
8f10d3a6cf
feat: profiles 2025-05-25 19:42:48 -07:00
979929ea32
feat: move mounts to hardware 2025-05-25 19:22:20 -07:00
4b27f1db40
feat: protonmail-bridge 2025-05-25 19:20:55 -07:00
1df6787b36
feat: prometheus 2025-05-25 19:20:11 -07:00
29f77cd309
feat: openssh 2025-05-25 19:19:32 -07:00
e0087d7668
feat: mopidy 2025-05-25 19:18:59 -07:00
b73a7a33b1
feat: ly 2025-05-25 19:18:55 -07:00
72c9eec2d8
feat: gnome-keyring 2025-05-25 19:17:10 -07:00
c0c67efdd8
feat: docker 2025-05-25 19:13:17 -07:00
39f89b8965
feat: ddclient 2025-05-25 19:12:43 -07:00
53340764e3
fix: imports 2025-05-25 19:11:59 -07:00
839728539b
feat: migrate niri 2025-05-25 19:11:01 -07:00
37912e91eb
feat: migrate hyprlock 2025-05-25 19:10:40 -07:00
41154db1b5
chore: remove empty module 2025-05-25 19:10:40 -07:00
b7537fafda
feat: migrate steam 2025-05-25 19:10:40 -07:00
3f26e32ebe
feat: migrate lutris 2025-05-25 19:07:53 -07:00
1c99ea2b99
feat: migrate nh 2025-05-25 19:07:46 -07:00
1eba02f65f
feat: migrate wireguard 2025-05-25 18:59:39 -07:00
449d972d14
feat: migrate wezterm 2025-05-25 18:58:11 -07:00
19de7d7076
feat: migrate fish 2025-05-25 18:55:13 -07:00
c365d09f9f
feat: migrate darwin/homebrew 2025-05-25 18:43:48 -07:00
486c304fff
chore: remove unneccesary appearance module 2025-05-25 18:43:12 -07:00
ee90d3577f
feat: move nvidia to module option; re-org driver modules 2025-05-25 18:37:28 -07:00
99623ce473
feat: mounts 2025-05-25 17:37:22 -07:00
809e11313a
feat: seperate module imports 2025-05-25 17:34:46 -07:00
87d7454dd1
feat: stylix 2025-05-25 17:24:24 -07:00
ed196164d0
feat: add home-manager state version 2025-05-25 17:04:23 -07:00
a9f699c4e1
feat: add to layout 2025-05-25 17:04:14 -07:00
1483f1f045
fix: add missing imports 2025-05-25 16:51:48 -07:00
fc8534dc04
feat: home 2025-05-25 16:51:03 -07:00
b30f617f44
feat: nix settings 2025-05-25 16:49:49 -07:00
2c4c938b1f
feat: layout fixes 2025-05-25 16:48:40 -07:00
fa75d5fa72
fix: remove unncessary _: 2025-05-25 15:38:40 -07:00
3d4a645cc4
feat: migrate nixos/base/users 2025-05-25 15:30:49 -07:00
7f1bcaa4b0
feat: migrate options/my 2025-05-25 15:30:13 -07:00
ab0e5117fa
feat: migrate nixos/base/nix 2025-05-25 15:27:36 -07:00
b3be8a6c27
feat: migrate nixos/base/networking 2025-05-25 15:26:54 -07:00
4211c16005
feat: migrate nixos/base/i18n 2025-05-25 15:25:37 -07:00
90245758a8
feat: remove .enable from profiles 2025-05-25 15:25:29 -07:00
050112880f
feat: migrate nixos/base/drivers 2025-05-25 15:19:20 -07:00
196af0549c
feat: migrate nixos/base/boot 2025-05-25 15:18:56 -07:00
7201c083f0
feat: home modules setup 2025-05-25 15:16:42 -07:00
928adc261f
feat: solidify design 2025-05-25 15:16:42 -07:00
5b96e77e14
fix: remove unneeded options from nyx 2025-05-25 15:10:58 -07:00
1562b2d179
feat: profiles module 2025-05-25 14:14:44 -07:00
ce706dd76a
feat: make lib work 2025-05-25 13:19:28 -07:00
367db24109
fix: x86_64-nixos -> x86_64-linux 2025-05-25 13:13:26 -07:00
41295cff75
feat: break flake.nix into smaller chunks 2025-05-25 12:48:11 -07:00
f6b9287dfc
fix: fix stylix modules 2025-05-25 12:14:55 -07:00
30330d4e0e
chore: update flake.lock 2025-05-25 12:14:49 -07:00
bd19395d69
feat: custom lib 2025-05-25 12:10:55 -07:00
d3c62bce06
feat: move system config 2025-05-25 12:10:51 -07:00
f3177404a8
feat: custom packages migrated 2025-05-25 11:55:29 -07:00
8811040e5b
feat: firefox addons overlay migrated 2025-05-25 11:37:52 -07:00
3e58dc70e4
feat: all overlays except firefox addons migrated 2025-05-24 18:33:23 -07:00
53de3f8c6c
feat: use nixpkgs-darwin on darwin 2025-05-24 18:19:29 -07:00
75ecd80aa4
feat: remove lib 2025-05-24 18:09:34 -07:00
85e333bea8
feat: migrate flake.nix 2025-05-24 17:50:02 -07:00
e9262a37b7
chore: move everything to subfoldder 2025-05-24 17:11:29 -07:00
314 changed files with 2309 additions and 3556 deletions

View file

@ -74,6 +74,14 @@ genFirefoxAddons:
secret name:
cd secrets && agenix --edit {{name}}.age --identity ~/.ssh/marley@nyx && cd -
[group('maintainence')]
check:
nix flake check
[group('maintainence')]
checkall:
nix flake check --all-systems
alias s := search
search this:
nh search {{this}}

View file

@ -168,6 +168,21 @@
"type": "github"
}
},
"easy-hosts": {
"locked": {
"lastModified": 1747174689,
"narHash": "sha256-WEA2HdjC90GLf5VpMLpvOF3/uSSq6AV4DQ4ezLFspc0=",
"owner": "tgirlcloud",
"repo": "easy-hosts",
"rev": "e1210563fc527221e12544ce55cd954acf94e7ed",
"type": "github"
},
"original": {
"owner": "tgirlcloud",
"repo": "easy-hosts",
"type": "github"
}
},
"firefox-gnome-theme": {
"flake": false,
"locked": {
@ -247,22 +262,6 @@
}
},
"flake-compat_5": {
"flake": false,
"locked": {
"lastModified": 1650374568,
"narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "b4a34015c698c7793d592d66adbab377907a2be8",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_6": {
"flake": false,
"locked": {
"lastModified": 1733328505,
@ -279,6 +278,26 @@
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1743550720,
"narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "c621e8422220273271f52058f618c94e405bb0f5",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": [
"marleyvim",
@ -301,7 +320,7 @@
"type": "github"
}
},
"flake-parts_2": {
"flake-parts_3": {
"inputs": {
"nixpkgs-lib": [
"marleyvim",
@ -323,7 +342,7 @@
"type": "github"
}
},
"flake-parts_3": {
"flake-parts_4": {
"inputs": {
"nixpkgs-lib": [
"marleyvim",
@ -345,7 +364,7 @@
"type": "indirect"
}
},
"flake-parts_4": {
"flake-parts_5": {
"inputs": {
"nixpkgs-lib": [
"nur",
@ -384,59 +403,7 @@
"type": "github"
}
},
"flake-utils-plus": {
"inputs": {
"flake-utils": "flake-utils_3"
},
"locked": {
"lastModified": 1715533576,
"narHash": "sha256-fT4ppWeCJ0uR300EH3i7kmgRZnAVxrH+XtK09jQWihk=",
"owner": "gytis-ivaskevicius",
"repo": "flake-utils-plus",
"rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f",
"type": "github"
},
"original": {
"owner": "gytis-ivaskevicius",
"repo": "flake-utils-plus",
"rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f",
"type": "github"
}
},
"flake-utils_2": {
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_3": {
"inputs": {
"systems": "systems_4"
},
"locked": {
"lastModified": 1694529238,
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_4": {
"inputs": {
"systems": [
"stylix",
@ -457,9 +424,9 @@
"type": "github"
}
},
"flake-utils_5": {
"flake-utils_3": {
"inputs": {
"systems": "systems_6"
"systems": "systems_5"
},
"locked": {
"lastModified": 1731533236,
@ -704,7 +671,7 @@
},
"hercules-ci-effects": {
"inputs": {
"flake-parts": "flake-parts_3",
"flake-parts": "flake-parts_4",
"nixpkgs": [
"marleyvim",
"neovim-nightly-overlay",
@ -864,7 +831,7 @@
"neovim-nightly-overlay": {
"inputs": {
"flake-compat": "flake-compat_2",
"flake-parts": "flake-parts_2",
"flake-parts": "flake-parts_3",
"git-hooks": "git-hooks_2",
"hercules-ci-effects": "hercules-ci-effects",
"neovim-src": "neovim-src",
@ -963,7 +930,7 @@
"marleyvim",
"devenv"
],
"flake-parts": "flake-parts",
"flake-parts": "flake-parts_2",
"libgit2": "libgit2",
"nixpkgs": "nixpkgs_2",
"nixpkgs-23-11": [
@ -1030,27 +997,6 @@
"type": "github"
}
},
"nixgl": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1713543440,
"narHash": "sha256-lnzZQYG0+EXl/6NkGpyIz+FEOc/DSEG57AP1VsdeNrM=",
"owner": "nix-community",
"repo": "nixGL",
"rev": "310f8e49a149e4c9ea52f1adf70cdc768ec53f8a",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixGL",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1733212471,
@ -1067,6 +1013,22 @@
"type": "github"
}
},
"nixpkgs-darwin": {
"locked": {
"lastModified": 1748037224,
"narHash": "sha256-92vihpZr6dwEMV6g98M5kHZIttrWahb9iRPBm1atcPk=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "f09dede81861f3a83f7f06641ead34f02f37597f",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-24.11-darwin",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1747862697,
@ -1083,6 +1045,22 @@
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1747958103,
"narHash": "sha256-qmmFCrfBwSHoWw7cVK4Aj+fns+c54EBP8cGqp/yK410=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "fe51d34885f7b5e3e7b59572796e1bcb427eccb1",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1717432640,
@ -1213,7 +1191,7 @@
},
"nur": {
"inputs": {
"flake-parts": "flake-parts_4",
"flake-parts": "flake-parts_5",
"nixpkgs": [
"nixpkgs"
],
@ -1301,17 +1279,18 @@
"inputs": {
"agenix": "agenix",
"darwin": "darwin",
"easy-hosts": "easy-hosts",
"flake-parts": "flake-parts",
"home-manager": "home-manager",
"lix": "lix",
"marleyvim": "marleyvim",
"niri-flake": "niri-flake",
"nixcord": "nixcord",
"nixgl": "nixgl",
"nixpkgs": "nixpkgs_8",
"nixpkgs-darwin": "nixpkgs-darwin",
"nixpkgs-unstable": "nixpkgs-unstable",
"nur": "nur",
"snowfall-lib": "snowfall-lib",
"stylix": "stylix",
"unstable": "unstable",
"wezterm": "wezterm"
}
},
@ -1336,28 +1315,6 @@
"type": "github"
}
},
"snowfall-lib": {
"inputs": {
"flake-compat": "flake-compat_5",
"flake-utils-plus": "flake-utils-plus",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1736130495,
"narHash": "sha256-4i9nAJEZFv7vZMmrE0YG55I3Ggrtfo5/T07JEpEZ/RM=",
"owner": "snowfallorg",
"repo": "lib",
"rev": "02d941739f98a09e81f3d2d9b3ab08918958beac",
"type": "github"
},
"original": {
"owner": "snowfallorg",
"repo": "lib",
"type": "github"
}
},
"stylix": {
"inputs": {
"base16": "base16",
@ -1365,13 +1322,13 @@
"base16-helix": "base16-helix",
"base16-vim": "base16-vim",
"firefox-gnome-theme": "firefox-gnome-theme",
"flake-compat": "flake-compat_6",
"flake-utils": "flake-utils_4",
"flake-compat": "flake-compat_5",
"flake-utils": "flake-utils_2",
"git-hooks": "git-hooks_3",
"gnome-shell": "gnome-shell",
"home-manager": "home-manager_2",
"nixpkgs": "nixpkgs_9",
"systems": "systems_5",
"systems": "systems_4",
"tinted-foot": "tinted-foot",
"tinted-kitty": "tinted-kitty",
"tinted-tmux": "tinted-tmux"
@ -1465,21 +1422,6 @@
"type": "github"
}
},
"systems_6": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"tinted-foot": {
"flake": false,
"locked": {
@ -1594,25 +1536,9 @@
"type": "github"
}
},
"unstable": {
"locked": {
"lastModified": 1748026106,
"narHash": "sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "063f43f2dbdef86376cc29ad646c45c46e93234c",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"wezterm": {
"inputs": {
"flake-utils": "flake-utils_5",
"flake-utils": "flake-utils_3",
"freetype2": "freetype2",
"harfbuzz": "harfbuzz",
"libpng": "libpng",

View file

@ -2,50 +2,12 @@
description = "marleyOS";
outputs = inputs:
inputs.snowfall-lib.mkFlake {
inherit inputs;
src = ./.;
snowfall = {
namespace = "marleyos";
title = "marleyOS";
};
channels-config = {
allowUnfree = true;
};
overlays = with inputs; [
lix.overlays.default
nur.overlays.default
agenix.overlays.default
niri-flake.overlays.niri
];
systems.modules.nixos = with inputs; [
agenix.nixosModules.default
stylix.nixosModules.stylix
niri-flake.nixosModules.niri
];
systems.modules.darwin = with inputs; [
agenix.darwinModules.default
lix.nixosModules.default
];
homes.modules = with inputs; [
agenix.homeManagerModules.default
nixcord.homeModules.nixcord
];
outputs-builder = channels: {
formatter = channels.nixpkgs.alejandra;
};
};
inputs.flake-parts.lib.mkFlake {inherit inputs;} {imports = [./flake];};
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
unstable.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs-darwin.url = "github:nixos/nixpkgs/nixpkgs-24.11-darwin";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
nur = {
url = "github:nix-community/NUR";
@ -57,11 +19,13 @@
inputs.nixpkgs.follows = "nixpkgs";
};
snowfall-lib = {
url = "github:snowfallorg/lib";
inputs.nixpkgs.follows = "nixpkgs";
flake-parts = {
url = "github:hercules-ci/flake-parts";
inputs.nixpkgs-lib.follows = "nixpkgs";
};
easy-hosts.url = "github:tgirlcloud/easy-hosts";
darwin = {
url = "github:LnL7/nix-darwin/nix-darwin-24.11";
inputs.nixpkgs.follows = "nixpkgs";
@ -81,11 +45,6 @@
};
};
nixgl = {
url = "github:nix-community/nixGL";
inputs.nixpkgs.follows = "nixpkgs";
};
stylix.url = "github:danth/stylix/release-24.11";
niri-flake.url = "github:sodiboo/niri-flake";

22
flake/config.nix Normal file
View file

@ -0,0 +1,22 @@
{inputs, ...}: {
systems = [
"x86_64-linux"
"aarch64-darwin"
];
### Nixpkgs Config ###
perSystem = {system, ...}: {
_module.args.pkgs = import inputs.nixpkgs {
inherit system;
config = {
allowUnfree = true;
};
# TODO: Move these to custom modules
overlays = [
(import ./overlays/wezterm.nix {inherit inputs;})
];
};
};
}

7
flake/default.nix Normal file
View file

@ -0,0 +1,7 @@
{
imports = [
./config.nix
../hosts
];
}

View file

@ -1,9 +0,0 @@
{lib, ...}: let
inherit (lib.marleyos) enabled;
in {
marleyos = {
bundles.mac = enabled;
};
home.stateVersion = "24.05";
}

View file

@ -1,9 +0,0 @@
{lib, ...}: let
inherit (lib.marleyos) enabled;
in {
marleyos = {
bundles.server = enabled;
};
home.stateVersion = "24.05";
}

View file

@ -1,9 +0,0 @@
{lib, ...}: let
inherit (lib.marleyos) enabled;
in {
marleyos = {
bundles.server = enabled;
};
home.stateVersion = "24.05";
}

View file

@ -1,14 +0,0 @@
{lib, ...}: let
inherit (lib.marleyos) enabled;
in {
marleyos = {
bundles.desktop = enabled;
wayland.niri = {
enable = true;
monitors = ["DP-1" "HDMI-A-1"];
};
};
home.stateVersion = "24.05";
}

43
hosts/default.nix Normal file
View file

@ -0,0 +1,43 @@
{
inputs,
lib,
self,
...
}: {
imports = [inputs.easy-hosts.flakeModule];
config.easy-hosts = {
shared.specialArgs.marleylib = import ../lib {inherit lib;};
perClass = class: {
modules = ["${self}/modules/${class}/default.nix"];
};
hosts = {
### Desktop ###
nyx = {
arch = "x86_64";
class = "nixos";
};
### Macbook Air ###
mairley = {
arch = "aarch64";
class = "darwin";
nixpkgs = inputs.nixpkgs-darwin;
};
### Servers ###
marleycentre = {
arch = "x86_64";
class = "nixos";
};
marleynet = {
arch = "x86_64";
class = "nixos";
};
};
};
}

View file

@ -1,9 +1,5 @@
{
lib,
config,
...
}: let
inherit (lib.marleyos) enabled;
{config, ...}: let
inherit (config.marleycfg.my) name;
in {
networking = {
computerName = "mairley";
@ -11,19 +7,11 @@ in {
localHostName = "mairley";
};
marleyos = {
appearance = {
base = enabled;
};
programs = {
fish = enabled;
wezterm = enabled;
};
};
marleycfg.profiles.desktop = true;
users = {
knownUsers = ["marley"];
users."marley" = {
knownUsers = [name];
users."${name}" = {
# This is required for some reason.
uid = 501;
@ -31,5 +19,9 @@ in {
};
};
home-manager.users."${name}" = {
home.stateVersion = "24.05";
};
system.stateVersion = 5;
}

View file

@ -1,13 +1,11 @@
{lib, ...}: let
inherit (lib.marleyos) enabled;
{config, ...}: let
inherit (config.marleycfg.my) name;
in {
imports = [./hardware-configuration.nix];
networking.hostName = "marleycentre";
marleyos = {
bundles.server = enabled;
};
marleycfg.profiles.server = true;
users.users = {
marley.openssh.authorizedKeys.keys = [
@ -27,5 +25,9 @@ in {
allowedUDPPorts = [6881];
};
home-manager.users."${name}" = {
home.stateVersion = "24.05";
};
system.stateVersion = "24.05";
}

View file

@ -1,12 +1,18 @@
{lib, ...}: let
inherit (lib.marleyos) enabled;
{
config,
marleylib,
...
}: let
inherit (config.marleycfg.my) name;
inherit (marleylib.module) enabled;
in {
imports = [./hardware-configuration.nix];
networking.hostName = "marleynet";
marleycfg.profiles.server = true;
marleyos = {
bundles.server = enabled;
services.ddclient = enabled;
};
@ -25,5 +31,9 @@ in {
services.openssh.ports = [222];
home-manager.users."${name}" = {
home.stateVersion = "24.05";
};
system.stateVersion = "24.05";
}

View file

@ -1,4 +1,4 @@
_: {
{
services.autorandr = {
enable = true;

35
hosts/nyx/default.nix Normal file
View file

@ -0,0 +1,35 @@
{
marleylib,
config,
...
}: let
inherit (marleylib.module) enabled;
inherit (config.marleycfg.my) name;
in {
imports = [./hardware-configuration.nix ./mounts.nix ./autorandr.nix];
networking.hostName = "nyx";
# For local dev.
networking.firewall.allowedTCPPorts = [8080];
marleycfg.profiles.desktop = true;
marleyos = {
hardware = {
# nvidia = enabled;
};
};
home-manager.users."${name}" = {
marleyos = {
shell.niri.monitors = ["DP-1" "HDMI-A-1"];
programs.calibre = enabled;
services.syncthing = enabled;
};
home.stateVersion = "24.05";
};
system.stateVersion = "24.05";
}

View file

@ -1,4 +1,4 @@
_: {
{
systemd = {
mounts = [
{

43
layout.txt Normal file
View file

@ -0,0 +1,43 @@
modules/${class}/default.nix # imported by easy-hosts.perClass.modules
imports = [
../base # common across all systems
./base
./hardware
./shell # WM/DE
./programs
./services
./profiles.nix # enable/disable items
];
modules/base/default.nix
imports = [
../options # custom options used for deciding other config
{...} # modules w/i base
./home.nix # home-manager setup; imports modules/home
];
modules/home/default.nix # HOME MANAGER OPTIONS ONLY
imports = [
../options
{...}
./shell # WM/DE
./programs
# ${program}.nix - OS check here if needed
./services
# ${service}.nix - OS check here if needed
./profiles.nix # enable/disable items
];

3
lib/default.nix Normal file
View file

@ -0,0 +1,3 @@
{lib}: {
module = import ./module.nix {inherit lib;};
}

57
lib/module.nix Normal file
View file

@ -0,0 +1,57 @@
{lib}: {
## Quickly enable an option.
##
## ```nix
## services.nginx = enabled;
## ```
##
#@ true
enabled = {
enable = true;
};
## Quickly disable an option.
##
## ```nix
## services.nginx = enabled;
## ```
##
#@ false
disabled = {
enable = false;
};
## Like lib.mkEnableOption, but allows specifying the default.
##
## ```nix
## options.marleyos.wayland = mkEnableOption' "wayland" false;
## ```
mkEnableOption' = name: default:
lib.mkOption {
inherit default;
example = true;
description =
if name ? _type && name._type == "mdDoc"
then lib.mdDoc "Whether to enable ${name.text}."
else "Whether to enable ${name}.";
type = lib.types.bool;
};
## Like lib.mkDefault, but uses lib.mapAttrsRecursive to apply mkDefault to
## every attr in the set.
##
## ```nix
## starship.settings.username = mkDefault' {
## enabled = true;
## show_always = false;
## };
## ```
## is equivalent to:
## ```nix
## starship.settings.username = {
## enabled = mkDefault true;
## show_always = mkDefault false;
## };
## ```
mkDefault' = set: lib.mapAttrsRecursive (_: value: lib.mkDefault value) set;
}

View file

@ -1,23 +0,0 @@
_: {
enabled = {
## Quickly enable an option.
##
## ```nix
## services.nginx = enabled;
## ```
##
#@ true
enable = true;
};
disabled = {
## Quickly disable an option.
##
## ```nix
## services.nginx = enabled;
## ```
##
#@ false
enable = false;
};
}

14
modules/base/default.nix Normal file
View file

@ -0,0 +1,14 @@
{
imports = [
../options
./nix.nix
./stylix
./programs
./services
./profiles.nix
./home.nix
];
}

33
modules/base/home.nix Normal file
View file

@ -0,0 +1,33 @@
{
marleylib,
inputs,
inputs',
...
}: let
my = rec {
name = "marley";
fullName = "Marley Rae";
username = "punkfairie";
email = "marley@punkfairie.net";
git = {
name = username;
inherit email;
};
};
in {
config = {
marleycfg.my = my;
home-manager = {
useUserPackages = true;
backupFileExtension = "bak";
users."${my.name}" = {
home.username = my.name;
};
sharedModules = [../home];
extraSpecialArgs = {inherit marleylib inputs inputs';};
};
};
}

View file

@ -1,13 +1,15 @@
{
pkgs,
inputs,
config,
lib,
pkgs,
...
}: {
imports = [
inputs.lix.nixosModules.default # this is universal, despite the 'nixos'
];
config = {
nix = {
package = lib.mkForce pkgs.lix;
package = pkgs.lix;
# Pin system <nixpkgs> to flake nixpkgs version.
# i.e. for use in pkgs = import <nixpkgs> {}.
@ -20,15 +22,11 @@
};
settings = {
experimental-features = ["nix-command" "flakes"];
trusted-users = [
"root"
"@wheel"
];
# Enable flakes.
experimental-features = [
"nix-command"
"flakes"
# @wheel/@admin are added in OS specific modules.
];
# Set up caches.
@ -47,28 +45,20 @@
warn-dirty = false;
auto-optimise-store = true;
};
# Garbage collection.
gc.automatic = true;
use-xdg-base-directories = true;
};
};
nixpkgs.config.import = "${config.xdg.configHome}/nixpkgs/config.nix";
nixpkgs = import ./nixpkgs.nix {inherit inputs;};
xdg.configFile."nixpkgs/config.nix".text =
# nix
''
{
allowUnfree = true;
}
'';
home.packages = let
# More useful repl.
environment.systemPackages = let
nrepl =
pkgs.writeShellScriptBin "nrepl"
# sh
''
nix repl "${toString ./.}/repl.nix" "$@"
nix repl --file "${toString ../../repl.nix}" "$@"
'';
in [
nrepl

12
modules/base/nixpkgs.nix Normal file
View file

@ -0,0 +1,12 @@
{inputs, ...}: {
config = {
allowUnfree = true;
};
overlays = [
inputs.nur.overlays.default
# Custom packages.
(import ../../overlays/marleyos.nix)
];
}

39
modules/base/profiles.nix Normal file
View file

@ -0,0 +1,39 @@
{
config,
marleylib,
lib,
...
}: let
cfg = config.marleycfg.profiles;
inherit (marleylib.module) enabled;
in {
marleyos = lib.mkMerge [
# Universal - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{
programs = {
btop = enabled;
curl = enabled;
fish = enabled;
jq = enabled;
less = enabled;
neovim = enabled;
nix-output-monitor = enabled;
ripgrep = enabled;
wget = enabled;
};
services = {
openssh = enabled; # required for agenix
};
}
#
#
# Graphical Desktop - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(lib.optionalAttrs cfg.desktop {})
#
#
# Server - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(lib.optionalAttrs cfg.server {})
];
}

View file

@ -1,6 +1,7 @@
{
lib,
config,
lib,
pkgs,
...
}: let
cfg = config.marleyos.programs.btop;
@ -8,13 +9,8 @@ in {
options.marleyos.programs.btop.enable = lib.mkEnableOption "btop";
config = lib.mkIf cfg.enable {
programs.btop = {
enable = true;
settings = {
truecolor = true;
vim_keys = true;
};
};
environment.systemPackages = with pkgs; [
btop
];
};
}

View file

@ -0,0 +1,16 @@
{
lib,
config,
pkgs,
...
}: let
cfg = config.marleyos.programs.curl;
in {
options.marleyos.programs.curl.enable = lib.mkEnableOption "curl";
config = lib.mkIf cfg.enable {
environment.systemPackages = with pkgs; [
curl
];
};
}

View file

@ -0,0 +1,13 @@
{
imports = [
./btop.nix
./curl.nix
./fish.nix
./jq.nix
./less.nix
./neovim.nix
./nix-output-monitor.nix
./ripgrep.nix
./wget.nix
];
}

View file

@ -10,10 +10,7 @@ in {
config = lib.mkIf cfg.enable {
programs.fish = {
enable = true;
useBabelfish = true;
};
environment.shells = [config.programs.fish.package];
};
}

View file

@ -1,6 +1,7 @@
{
lib,
config,
pkgs,
...
}: let
cfg = config.marleyos.programs.jq;
@ -8,8 +9,8 @@ in {
options.marleyos.programs.jq.enable = lib.mkEnableOption "jq";
config = lib.mkIf cfg.enable {
programs.jq = {
enable = true;
};
environment.systemPackages = with pkgs; [
jq
];
};
}

View file

@ -1,6 +1,7 @@
{
lib,
config,
lib,
pkgs,
...
}: let
cfg = config.marleyos.programs.less;
@ -8,12 +9,14 @@ in {
options.marleyos.programs.less.enable = lib.mkEnableOption "less";
config = lib.mkIf cfg.enable {
programs.less.enable = true;
programs.less = {
enable = true;
home.sessionVariables = {
LESS = "-R";
envVariables = {
LESS = "-R";
};
lessopen = "|${pkgs.lesspipe}/bin/lesspipe.sh %s";
};
programs.lesspipe.enable = true;
};
}

View file

@ -9,14 +9,8 @@ in {
options.marleyos.programs.neovim.enable = lib.mkEnableOption "neovim";
config = lib.mkIf cfg.enable {
home.packages = with pkgs; [
nvim
environment.systemPackages = with pkgs; [
neovim
];
home.sessionVariables = rec {
EDITOR = "nvim";
VISUAL = "${EDITOR}";
SUDO_EDITOR = "${EDITOR}";
};
};
}

View file

@ -1,15 +1,16 @@
{
lib,
config,
lib,
pkgs,
...
}: let
cfg = config.marleyos.programs.nix-output-monitor;
in {
options.marleyos.programs.nix-output-monitor.enable = lib.mkEnableOption "nix-output-monitor";
options.marleyos.programs.nix-output-monitor.enable =
lib.mkEnableOption "nix-output-monitor";
config = lib.mkIf cfg.enable {
home.packages = with pkgs; [
environment.systemPackages = with pkgs; [
nix-output-monitor
];
};

View file

@ -1,6 +1,7 @@
{
lib,
config,
lib,
pkgs,
...
}: let
cfg = config.marleyos.programs.ripgrep;
@ -8,6 +9,8 @@ in {
options.marleyos.programs.ripgrep.enable = lib.mkEnableOption "ripgrep";
config = lib.mkIf cfg.enable {
programs.ripgrep.enable = true;
environment.systemPackages = with pkgs; [
ripgrep
];
};
}

View file

@ -0,0 +1,16 @@
{
config,
lib,
pkgs,
...
}: let
cfg = config.marleyos.programs.wget;
in {
options.marleyos.programs.wget.enable = lib.mkEnableOption "wget";
config = lib.mkIf cfg.enable {
environment.systemPackages = with pkgs; [
wget
];
};
}

View file

@ -0,0 +1,5 @@
{
imports = [
./openssh.nix
];
}

View file

@ -10,6 +10,7 @@ in {
config = lib.mkIf cfg.enable {
services.openssh = {
enable = true;
settings = {
PermitRootLogin = "prohibit-password";
};

View file

@ -0,0 +1,25 @@
{pkgs, ...}: {
config = {
nixpkgs.overlays = [(import ../../../overlays/maple-mono-NF.nix)];
stylix = {
enable = true;
base16Scheme = "${pkgs.base16-schemes}/share/themes/rose-pine.yaml";
override = {slug = "rose-pine";};
image = ./wallpaper.png;
fonts = {
monospace = {
package = pkgs.maple-mono-NF;
name = "Maple Mono";
};
sizes = {
terminal = 11;
};
};
};
};
}

View file

Before

Width:  |  Height:  |  Size: 4.7 MiB

After

Width:  |  Height:  |  Size: 4.7 MiB

View file

@ -1,16 +0,0 @@
{
lib,
config,
pkgs,
...
}: let
cfg = config.marleyos.appearance.base;
in {
options.marleyos.appearance.base.enable = lib.mkEnableOption "base";
config = lib.mkIf cfg.enable {
fonts.packages = with pkgs; [
maple-mono-NF
];
};
}

View file

@ -1,9 +0,0 @@
{
pkgs,
...
}:
{
config.nix = {
package = pkgs.lix;
};
}

View file

@ -0,0 +1,15 @@
{inputs, ...}: {
imports = [
inputs.agenix.darwinModules.default
../base
./home.nix
./stylix.nix
./system
./programs
./profiles.nix
];
}

15
modules/darwin/home.nix Normal file
View file

@ -0,0 +1,15 @@
{
config,
inputs,
...
}: let
inherit (config.marleycfg.my) name;
in {
imports = [inputs.home-manager.darwinModules.home-manager];
config = {
home-manager.users."${name}" = {
home.homeDirectory = "/Users/${name}";
};
};
}

View file

@ -0,0 +1,16 @@
{marleylib, ...}: let
inherit (marleylib.module) enabled;
in {
marleyos = {
programs = {
fish = enabled;
floorp = enabled;
nh = enabled;
phpstorm = enabled;
pidgin = enabled;
thunderbird = enabled;
wezterm = enabled;
wireguard = enabled;
};
};
}

View file

@ -0,0 +1,12 @@
{
imports = [
./fish.nix
./floorp.nix
./nh.nix
./phpstorm.nix
./pidgin.nix
./thunderbird.nix
./wezterm.nix
./wireguard.nix
];
}

View file

@ -0,0 +1,11 @@
{
config,
lib,
...
}: let
cfg = config.marleyos.programs.fish;
in {
config = lib.mkIf cfg.enable {
environment.shells = [config.programs.fish.package];
};
}

View file

@ -0,0 +1,13 @@
{
config,
lib,
...
}: let
cfg = config.marleyos.programs.floorp;
in {
options.marleyos.programs.floorp.enable = lib.mkEnableOption "floorp";
config = lib.mkIf cfg.enable {
homebrew.casks = ["floorp"];
};
}

View file

@ -1,11 +1,10 @@
{
lib,
config,
lib,
pkgs,
...
}: let
cfg = config.marleyos.programs.nh;
home = config.home.homeDirectory;
in {
options.marleyos.programs.nh.enable = lib.mkEnableOption "nh";
@ -13,11 +12,5 @@ in {
home.packages = with pkgs; [
nh
];
home.sessionVariables.FLAKE = lib.mkDefault "${home}/marleyos";
home.shellAbbrs = {
nhs = "nh search";
};
};
}

View file

@ -0,0 +1,13 @@
{
config,
lib,
...
}: let
cfg = config.marleyos.programs.phpstorm;
in {
options.marleyos.programs.phpstorm.enable = lib.mkEnableOption "phpstorm";
config = lib.mkIf cfg.enable {
homebrew.casks = ["phpstorm"];
};
}

View file

@ -0,0 +1,13 @@
{
config,
lib,
...
}: let
cfg = config.marleyos.programs.pidgin;
in {
options.marleyos.programs.pidgin.enable = lib.mkEnableOption "pidgin";
config = lib.mkIf cfg.enable {
homebrew.casks = ["pidgin"];
};
}

View file

@ -0,0 +1,13 @@
{
config,
lib,
...
}: let
cfg = config.marleyos.programs.thunderbird;
in {
options.marleyos.programs.thunderbird.enable = lib.mkEnableOption "thunderbird";
config = lib.mkIf cfg.enable {
homebrew.casks = ["thunderbird"];
};
}

View file

@ -1,6 +1,6 @@
{
lib,
config,
lib,
...
}: let
cfg = config.marleyos.programs.wezterm;

View file

@ -0,0 +1,15 @@
{
lib,
config,
...
}: let
cfg = config.marleyos.programs.wireguard;
in {
options.marleyos.programs.wireguard.enable = lib.mkEnableOption "wireguard";
config = lib.mkIf cfg.enable {
homebrew.masApps = {
"WireGuard" = 1451685025;
};
};
}

View file

@ -1,20 +0,0 @@
{
lib,
config,
pkgs,
...
}:
let
inherit (lib) mkEnableOption mkIf;
cfg = config.marleyos.programs.wireguard;
in
{
options.marleyos.programs.wireguard.enable = mkEnableOption "wireguard";
config = mkIf cfg.enable {
homebrew.masApps = {
"WireGuard" = 1451685025;
};
};
}

View file

@ -0,0 +1,5 @@
{
imports = [
./openssh.nix
];
}

View file

@ -0,0 +1,13 @@
{
lib,
config,
...
}: let
cfg = config.marleyos.services.openssh;
in {
config = lib.mkIf cfg.enable {
services.openssh.extraConfig = ''
PermitRootLogin prohibit-password
'';
};
}

View file

@ -0,0 +1,3 @@
{inputs, ...}: {
imports = [inputs.stylix.darwinModules.stylix];
}

View file

@ -0,0 +1,6 @@
{
imports = [
./homebrew.nix
./nix.nix
];
}

View file

@ -0,0 +1,11 @@
{
config = {
nix = {
settings = {
trusted-users = [
"@darwin"
];
};
};
};
}

View file

@ -1,40 +0,0 @@
{
lib,
config,
pkgs,
system,
inputs,
...
}: let
inherit (lib.snowfall.system) is-darwin;
cfg = config.marleyos.appearance.base;
inherit (config.marleyos) isDesktop;
in {
options.marleyos.appearance.base.enable = lib.mkEnableOption "base";
config = lib.mkIf cfg.enable {
marleyos = {
apps = {
pinentry =
if isDesktop
then pkgs.pinentry-gtk2
else pkgs.pinentry-curses;
};
};
stylix = {
iconTheme = {
package = pkgs.kora-icon-theme;
dark = "kora";
light = "kora-light-panel";
};
fonts.sizes.terminal = lib.mkIf (is-darwin system) 14;
};
home.packages = with pkgs; [
kora-icon-theme
];
};
}

View file

@ -1,16 +0,0 @@
{
lib,
config,
inputs,
...
}: let
cfg = config.marleyos.appearance.qt;
in {
options.marleyos.appearance.qt.enable = lib.mkEnableOption "qt";
config = lib.mkIf cfg.enable {
qt = {
enable = true;
};
};
}

View file

@ -1,25 +0,0 @@
{
lib,
system,
...
}: let
inherit (lib.snowfall.system) is-linux;
in {
# Anything in this folder should not include an enable/disable option. This is
# the only folder that is always applied.
config = {
marleyos.my = {
name = "marley";
username = "punkfairie";
fullName = "Marley Rae";
email = "marley@punkfairie.net";
};
home.language.base = "en_US.UTF-8";
programs.home-manager.enable = true;
# Autostart wanted systemd services.
systemd.user.startServices = lib.mkIf (is-linux system) true;
};
}

View file

@ -1,17 +0,0 @@
{config, ...}: {
config.home = {
sessionPath = [
"${config.home.homeDirectory}/.local/bin"
];
sessionVariables = {
HACK = "${config.home.homeDirectory}/hackin";
};
shellAbbrs = {
c = "clear";
e = "${config.home.sessionVariables.EDITOR}";
v = "${config.home.sessionVariables.EDITOR}";
};
};
}

View file

@ -1,34 +0,0 @@
{
lib,
config,
...
}: let
cfg = config.marleyos.bundles.desktop;
inherit (lib.marleyos) enabled;
in {
options.marleyos.bundles.desktop.enable = lib.mkEnableOption "desktop";
config = lib.mkIf cfg.enable {
marleyos = {
isDesktop = true;
appearance = {
base = enabled;
gtk = enabled;
qt = enabled;
};
programs = {
cli = enabled;
tui = enabled;
gui = enabled;
};
services = {
# syncthing = enabled;
udiskie = enabled;
};
};
};
}

View file

@ -1,29 +0,0 @@
{
lib,
config,
...
}: let
cfg = config.marleyos.bundles.mac;
inherit (lib.marleyos) enabled disabled;
in {
options.marleyos.bundles.mac.enable = lib.mkEnableOption "mac";
config = lib.mkIf cfg.enable {
marleyos = {
isDesktop = true;
programs = {
cli = enabled;
journalctl = disabled;
systemctl = disabled;
tui = enabled;
cava = disabled;
ncmpcpp = disabled;
wezterm = enabled;
};
};
};
}

View file

@ -1,28 +0,0 @@
{
lib,
config,
...
}: let
cfg = config.marleyos.bundles.server;
inherit (lib.marleyos) enabled disabled;
in {
options.marleyos.bundles.server.enable = lib.mkEnableOption "server";
config = lib.mkIf cfg.enable {
marleyos = {
isServer = true;
programs = {
cli = enabled;
tui = enabled;
neo = lib.mkForce disabled;
rbw = lib.mkForce disabled;
amfora = lib.mkForce disabled;
cava = lib.mkForce disabled;
ncmpcpp = lib.mkForce disabled;
};
};
};
}

17
modules/home/default.nix Normal file
View file

@ -0,0 +1,17 @@
{
imports = [
../options
./option-inheritance.nix
./options
./home-manager.nix
./nix.nix
./system
./shell
./programs
./services
./profiles.nix
];
}

View file

@ -0,0 +1,10 @@
{
config = {
programs.home-manager.enable = true;
home.language.base = "en_US.UTF-8";
# Autostart wanted systemd services on Linux.
systemd.user.startServices = true;
};
}

3
modules/home/nix.nix Normal file
View file

@ -0,0 +1,3 @@
{inputs, ...}: {
config.nixpkgs = import ../base/nixpkgs.nix {inherit inputs;};
}

View file

@ -1,17 +0,0 @@
{
lib,
config,
inputs,
...
}: let
cfg = config.marleyos.nixGL;
in {
options.marleyos.nixGL.enable = lib.mkEnableOption "nixGL";
config = lib.mkIf cfg.enable {
nixGL = {
inherit (inputs.nixgl) packages;
defaultWrapper = "nvidia";
};
};
}

View file

@ -0,0 +1,9 @@
{osConfig, ...}: let
cfg = osConfig.marleycfg;
in {
config = {
marleycfg = {
inherit (cfg) my profiles;
};
};
}

View file

@ -2,14 +2,9 @@
lib,
config,
pkgs,
system,
...
}: let
inherit (lib.snowfall.system) is-linux;
cfg = config.marleyos.apps;
in {
options.marleyos.apps = {
}: {
options.marleycfg.apps = {
pinentry = lib.mkOption {
type = lib.types.package;
default = pkgs.pinentry-gtk2;
@ -46,7 +41,7 @@ in {
};
};
default = default;
inherit default;
};
terminal = lib.mkOption {
@ -77,15 +72,10 @@ in {
options = {
package = lib.mkOption {
type = lib.types.package;
default =
if config.marleyos.wayland.hyprland.enable
then config.programs.wofi.package
else config.programs.rofi.package;
description = "The launcher to use.";
};
command = lib.mkOption {
type = lib.types.str;
default = "--show drun";
description = ''
The command appended after the launcher binary to run it.
'';
@ -95,18 +85,10 @@ in {
};
};
config = lib.mkIf (is-linux system) {
home.packages = [
cfg.pinentry
cfg.clipboard.package
];
programs.rbw = lib.mkDefault {
settings.pinentry = cfg.pinentry;
};
services.gpg-agent = lib.mkDefault {
pinentryPackage = cfg.pinentry;
};
};
# config = lib.mkIf pkgs.stdenv.isLinux {
# # TODO: move these to respective modules
# programs.rbw = lib.mkDefault {
# settings.pinentry = cfg.pinentry;
# };
# };
}

View file

@ -0,0 +1,6 @@
{
imports = [
./apps.nix
./shellAbbrs.nix
];
}

View file

@ -1,7 +0,0 @@
{lib, ...}: {
options.marleyos.isDesktop = lib.mkOption {
type = with lib.types; bool;
default = false;
description = "Whether this machine is used as a graphical desktop.";
};
}

View file

@ -1,7 +0,0 @@
{lib, ...}: {
options.marleyos.isServer = lib.mkOption {
type = with lib.types; bool;
default = false;
description = "Whether this machine is a server.";
};
}

83
modules/home/profiles.nix Normal file
View file

@ -0,0 +1,83 @@
{
config,
marleylib,
lib,
...
}: let
cfg = config.marleycfg.profiles;
inherit (marleylib.module) enabled;
in {
marleyos = lib.mkMerge [
# Universal - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{
programs = {
agenix = enabled;
bat = enabled;
btop = enabled;
curl = enabled;
eza = enabled;
figlet = enabled;
fish = enabled;
git = enabled;
gpg = enabled;
httpie = enabled;
hyfetch = enabled;
journalctl = enabled;
jq = enabled;
just = enabled;
lazydocker = enabled;
lazygit = enabled;
less = enabled;
man = enabled;
nh = enabled;
ripgrep = enabled;
ssh = enabled;
starship = enabled;
systemctl = enabled;
tmux = enabled;
wget = enabled;
zoxide = enabled;
};
}
#
#
# Graphical Desktop - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(lib.optionalAttrs cfg.desktop {
shell.niri = enabled;
programs = {
amfora = enabled;
cava = enabled;
CEmu = enabled;
cheat = enabled;
discord = enabled;
floorp = enabled;
fzf = enabled;
gh = enabled;
glow = enabled;
jqp = enabled;
ncmpcpp = enabled;
nemo = enabled;
neo = enabled;
neovim = enabled;
phpstorm = enabled;
pidgin = enabled;
superfile = enabled;
tea = enabled;
thunderbird = enabled;
vlc = enabled;
wezterm = enabled;
zathura = enabled;
};
services = {
udiskie = enabled;
};
})
#
#
# Server - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(lib.optionalAttrs cfg.server {})
];
}

View file

@ -1,6 +1,6 @@
{
lib,
config,
lib,
pkgs,
...
}: let
@ -8,7 +8,7 @@
in {
options.marleyos.programs.CEmu.enable = lib.mkEnableOption "CEmu";
config = lib.mkIf cfg.enable {
config = lib.mkIf (cfg.enable && pkgs.stdenv.isLinux) {
home.packages = with pkgs; [
# cemu-ti
marleyos.CEmu-TI-84-Plus-CE

View file

@ -1,7 +1,7 @@
{
lib,
config,
pkgs,
lib,
inputs',
...
}: let
cfg = config.marleyos.programs.agenix;
@ -9,8 +9,9 @@ in {
options.marleyos.programs.agenix.enable = lib.mkEnableOption "agenix";
config = lib.mkIf cfg.enable {
home.packages = with pkgs; [
agenix
home.packages = [
# The overlay doesn't work for some reason...
inputs'.agenix.packages.default
];
};
}

View file

@ -2,7 +2,6 @@
lib,
config,
pkgs,
inputs,
...
}: let
cfg = config.marleyos.programs.amfora;

View file

@ -1,7 +1,6 @@
{
lib,
config,
# pkgs,
lib,
...
}: let
cfg = config.marleyos.programs.bat;
@ -12,21 +11,11 @@ in {
programs.bat = {
enable = true;
# FIX: Currently broken. Re-enable when not broken.
# extraPackages = with pkgs.bat-extras; [
# batdiff
# batman
# ];
config = {
style = "auto";
};
};
home.sessionVariables = lib.mkIf config.programs.git.delta.enable {
# BATDIFF_USE_DELTA = "true";
};
programs.fish = {
functions = {
cat = {

View file

@ -0,0 +1,25 @@
{
marleylib,
lib,
config,
osConfig,
...
}: let
inherit (marleylib.module) mkEnableOption';
cfg = config.marleyos.programs.btop;
osCfg = osConfig.marleyos.programs.btop;
in {
options.marleyos.programs.btop.enable = mkEnableOption' "btop" osCfg.enable;
config = lib.mkIf cfg.enable {
programs.btop = {
enable = true;
settings = {
truecolor = true;
vim_keys = true;
};
};
};
}

View file

@ -1,6 +1,6 @@
{
lib,
config,
lib,
pkgs,
...
}: let

View file

@ -1,22 +1,21 @@
{
lib,
config,
osConfig,
lib,
pkgs,
...
}: let
cfg = config.marleyos.programs.cava;
has-mpd = osConfig.services.mpd.enable || config.services.mpd.enable;
in {
options.marleyos.programs.cava.enable = lib.mkEnableOption "cava";
config = lib.mkIf cfg.enable {
config = lib.mkIf (cfg.enable && pkgs.stdenv.isLinux) {
programs.cava = {
# FIX: Re-enable once https://github.com/NixOS/nixpkgs/pull/355948 is
# ported to nixpkgs/unstable
enable = false;
enable = true;
# TODO: disable this when mpd is not enabled? Can that be detected on non
# NixOS systems?
settings = {
input = {
input = lib.mkIf has-mpd {
method = "fifo";
source = "/tmp/mpd.fifo";
};

View file

@ -1,7 +1,7 @@
{
lib,
config,
pkgs,
lib,
...
}: let
cfg = config.marleyos.programs.cheat;

View file

@ -1,47 +0,0 @@
{
lib,
config,
...
}: let
cfg = config.marleyos.programs.cli;
inherit (lib.marleyos) enabled;
in {
options.marleyos.programs.cli.enable = lib.mkEnableOption "cli";
config = lib.mkIf cfg.enable {
marleyos.programs = {
agenix = enabled;
bat = enabled;
# cheat = enabled;
curl = enabled;
eza = enabled;
figlet = enabled;
fish = enabled;
fzf = enabled;
gh = enabled;
git = enabled;
glow = enabled;
gpg = enabled;
httpie = enabled;
hyfetch = enabled;
journalctl = enabled;
jq = enabled;
just = enabled;
less = enabled;
man = enabled;
neo = enabled;
nh = enabled;
nix-output-monitor = enabled;
rbw = enabled;
ripgrep = enabled;
ssh = enabled;
starship = enabled;
systemctl = enabled;
tea = enabled;
tmux = enabled;
wget = enabled;
zoxide = enabled;
};
};
}

View file

@ -1,16 +0,0 @@
{
lib,
config,
...
}: let
cfg = config.marleyos.programs.journalctl;
in {
options.marleyos.programs.journalctl.enable = lib.mkEnableOption "journalctl";
config = lib.mkIf cfg.enable {
home.shellAbbrs = {
jctlf = "sudo journalctl --follow --unit";
jctle = "sudo journalctl --pager-end --unit";
};
};
}

View file

@ -1,17 +0,0 @@
{
lib,
config,
...
}: let
cfg = config.marleyos.programs.rbw;
in {
options.marleyos.programs.rbw.enable = lib.mkEnableOption "rbw";
config = lib.mkIf cfg.enable {
programs.rbw = {
enable = true;
settings.email = "bitwarden@punkfairie.net";
};
};
}

View file

@ -1,208 +0,0 @@
{
lib,
config,
...
}: let
inherit (lib) mkDefault;
cfg = config.marleyos.programs.starship;
in {
config = lib.mkIf cfg.enable {
programs.starship.settings = with config.lib.stylix.colors.withHashtag; let
mkFormat = t: " [](fg:${base02})[${t}]($style)[](fg:${base02}) ";
langFormat = mkFormat "$symbol$version";
in {
format = mkDefault (lib.concatStrings [
"$username"
"$hostname"
"$directory"
"$nix_shell"
"$git_branch"
"$git_status"
"$fill"
"$c"
"$elixir"
"$elm"
"$golang"
"$haskell"
"$java"
"$julia"
"$nodejs"
"$nim"
"$rust"
"$scala"
"$python"
"$time"
"$line_break"
"$character"
]);
username = {
disabled = mkDefault false;
format = mkDefault " [](fg:${base02})[ 󰧱 $user@]($style)";
show_always = mkDefault true;
style_root = mkDefault "bg:${base02} fg:${base0D}";
style_user = mkDefault "bg:${base02} fg:${base0D}";
};
hostname = {
ssh_only = mkDefault false;
format = mkDefault "[$hostname ]($style)[](fg:${base02}) ";
style = mkDefault "bg:${base02} fg:${base0D}";
};
directory = {
format = mkDefault (mkFormat " $path ");
style = mkDefault "bg:${base02} fg:${base0B}";
truncation_length = mkDefault 3;
truncation_symbol = mkDefault "/";
substitutions = {
Documents = mkDefault "󰈙";
Downloads = mkDefault " ";
Music = mkDefault " ";
Pictures = mkDefault " ";
};
};
git_branch = {
format = mkDefault (mkFormat " $symbol $branch ");
style = mkDefault "bg:${base02} fg:${base0C}";
symbol = mkDefault "";
};
git_status = {
disabled = mkDefault false;
style = mkDefault "bg:${base02} fg:${base08}";
format = mkDefault (mkFormat "$all_status$ahead_behind");
up_to_date = mkDefault "[ ](bg:${base02} fg:${base0D})";
untracked = mkDefault "[?\\($count\\)](bg:${base02} fg:${base09})";
stashed = mkDefault "[\\$](bg:${base02} fg:${base0D})";
modified = mkDefault "[!\\($count\\)](bg:${base02} fg:${base09})";
renamed = mkDefault "[»\\($count\\)](bg:${base02} fg:${base0D})";
deleted = mkDefault "[\\($count\\)](style)";
staged = mkDefault "[++\\($count\\)](bg:${base02} fg:${base09})";
ahead = mkDefault "[\\(\${count}\\)](bg:${base02} fg:${base0C})";
diverged = mkDefault "[\\[](bg:${base02} fg:${base0D})[\\(\${ahead_count}\\)](bg:${base02} fg:${base0C})[\\(\${behind_count}\\)](bg:${base02} fg:${base0A})[\\]](bg:${base02} fg:${base0D})";
behind = mkDefault "[\\(\${count}\\)](bg:${base02} fg:${base0A})";
};
fill = {
style = mkDefault "fg:${base02}";
symbol = mkDefault " ";
};
time = {
disabled = mkDefault false;
format = mkDefault (mkFormat " $time 󰴈 ");
style = mkDefault "bg:${base02} fg:${base0A}";
time_format = mkDefault "%I:%M%P";
use_12hr = mkDefault true;
};
character = let
vim = "";
mkChar = sym: col: " [${sym}](fg:${col}) [󰄾](fg:${base0C})";
in {
success_symbol = mkChar "" "${base0D}";
error_symbol = mkChar "󰋔" "${base08}";
vimcmd_symbol = mkChar vim "${base0A}";
vimcmd_replace_one_symbol = mkChar vim "${base0C}";
vimcmd_replace_symbol = mkChar vim "${base0C}";
vimcmd_visual_symbol = mkChar vim "${base0D}";
};
### Languages ###
c = {
style = mkDefault "bg:${base02} fg:${base0B}";
format = mkDefault langFormat;
disabled = mkDefault false;
symbol = mkDefault " ";
};
elixir = {
style = mkDefault "bg:${base02} fg:${base0B}";
format = mkDefault langFormat;
disabled = mkDefault false;
symbol = mkDefault " ";
};
elm = {
style = mkDefault "bg:${base02} fg:${base0B}";
format = mkDefault langFormat;
disabled = mkDefault false;
symbol = mkDefault " ";
};
haskell = {
style = mkDefault "bg:${base02} fg:${base0B}";
format = mkDefault langFormat;
disabled = mkDefault false;
symbol = mkDefault " ";
};
java = {
style = mkDefault "bg:${base02} fg:${base0B}";
format = mkDefault langFormat;
disabled = mkDefault false;
symbol = mkDefault " ";
};
julia = {
style = mkDefault "bg:${base02} fg:${base0B}";
format = mkDefault langFormat;
disabled = mkDefault false;
symbol = mkDefault " ";
};
nodejs = {
style = mkDefault "bg:${base02} fg:${base0B}";
format = mkDefault langFormat;
disabled = mkDefault false;
symbol = mkDefault "󰎙 ";
};
nim = {
style = mkDefault "bg:${base02} fg:${base0B}";
format = mkDefault langFormat;
disabled = mkDefault false;
symbol = mkDefault "󰆥 ";
};
python = {
style = mkDefault "bg:${base02} fg:${base0B}";
disabled = mkDefault false;
symbol = mkDefault " ";
};
rust = {
style = mkDefault "bg:${base02} fg:${base0B}";
format = mkDefault langFormat;
disabled = mkDefault false;
symbol = mkDefault "";
};
scala = {
style = "bg:${base02} fg:${base0B}";
format = mkDefault langFormat;
disabled = false;
symbol = " ";
};
### Tools ###
conda = {
style = mkDefault "bg:${base02} fg:${base0B}";
format = mkDefault (mkFormat "$symbol$environment");
disabled = mkDefault false;
symbol = mkDefault "🅒 ";
};
nix_shell = {
style = "bg:${base02} fg:${base0C}";
format = mkDefault (mkFormat " $symbol $state( \($name\)) ");
disabled = mkDefault false;
symbol = mkDefault " ";
};
};
};
}

View file

@ -1,21 +0,0 @@
{
lib,
config,
...
}: let
cfg = config.marleyos.programs.systemctl;
in {
options.marleyos.programs.systemctl.enable = lib.mkEnableOption "systemctl";
config = lib.mkIf cfg.enable {
home.shellAbbrs = {
sctl = "sudo systemctl";
sctls = "sudo systemctl status";
sctle = "sudo systemctl enable --now";
sctld = "sudo systemctl disable --now";
sctlr = "sudo systemctl restart";
sctla = "sudo systemctl start";
sctlo = "sudo systemctl stop";
};
};
}

View file

@ -1,20 +0,0 @@
{
lib,
config,
pkgs,
...
}:
let
inherit (lib) mkEnableOption mkIf;
cfg = config.marleyos.programs.tea;
in
{
options.marleyos.programs.tea.enable = mkEnableOption "tea";
config = mkIf cfg.enable {
home.packages = with pkgs; [
tea
];
};
}

View file

@ -1,12 +1,17 @@
{
lib,
marleylib,
config,
osConfig,
lib,
pkgs,
...
}: let
inherit (marleylib.module) mkEnableOption';
cfg = config.marleyos.programs.curl;
osCfg = osConfig.marleyos.programs.curl;
in {
options.marleyos.programs.curl.enable = lib.mkEnableOption "curl";
options.marleyos.programs.curl.enable = mkEnableOption' "curl" osCfg.enable;
config = lib.mkIf cfg.enable {
home.packages = with pkgs; [

View file

@ -0,0 +1,60 @@
{
imports = [
./agenix.nix
./amfora
./bat.nix
./btop.nix
./calibre.nix
./cava.nix
./CEmu.nix
./cheat.nix
./curl.nix
./discord.nix
./eza.nix
./figlet.nix
./fish.nix
./floorp.nix
./fuzzel.nix
./fzf.nix
./gh.nix
./git
./glow.nix
./gpg.nix
./httpie.nix
./hyfetch
./journalctl.nix
./jq.nix
./jqp.nix
./just.nix
./lazydocker.nix
./lazygit.nix
./less.nix
./man.nix
./ncmpcpp.nix
./nemo.nix
./neo.nix
./neovim.nix
./nh.nix
./phpstorm
./pidgin
./ripgrep.nix
./ssh.nix
./starship
./superfile.nix
./systemctl.nix
./tea.nix
./thunderbird.nix
./tmux.nix
./vlc.nix
./waybar.nix
./wezterm.nix
./wget.nix
./zathura.nix
./zoxide.nix
# TODO: uncomment when swaylock is figured out
# ./wlogout
./xwayland-satellite.nix
];
}

View file

@ -1,14 +1,20 @@
{
lib,
marleylib,
config,
lib,
inputs,
...
}: let
inherit (lib.marleyos) enabled disabled;
inherit (marleylib.module) enabled disabled;
cfg = config.marleyos.programs.discord;
in {
options.marleyos.programs.discord.enable = lib.mkEnableOption "discord";
imports = [
inputs.nixcord.homeModules.nixcord
];
config = lib.mkIf cfg.enable {
programs.nixcord = {
enable = true;
@ -117,7 +123,7 @@ in {
theme = themes."${scheme}" or defaultTheme;
in {
enable = true;
theme = theme;
inherit theme;
useDevIcon = "COLOR";
};

View file

@ -1,6 +1,6 @@
{
lib,
config,
lib,
...
}: let
cfg = config.marleyos.programs.eza;

Some files were not shown because too many files have changed in this diff Show more