Compare commits

..

102 commits

Author SHA1 Message Date
Jimbo 0d8a07bd54 Merge pull request 'The Blue Update' (#1) from Refactor into main
Reviewed-on: #1
2024-10-25 21:26:22 -04:00
Jimbo 7ebdcf6043 The Blue Update. 2024-10-25 21:25:41 -04:00
Jimbo 316f7fd66d Follow vim binds on music player 2024-10-25 21:09:54 -04:00
Jimbo 0f29b2d90d Remove per monitor keys and force myself to use the numkeys 2024-10-25 16:49:14 -04:00
Jimbo 5e48797a7d Fix typo 2024-10-24 23:49:01 -04:00
Jimbo fe73fa0d1f Split domains into their own var file and update all files accordingly 2024-10-24 23:42:09 -04:00
Jimbo 47bf9a94cd Add another domain, fix the mailserver from being able to recieve 2024-10-24 23:05:10 -04:00
Jimbo ac63821835 Keyd bullshit 2024-10-24 22:45:23 -04:00
Jimbo e763ff8c1d Disable arrow keys and move to Vi keys. 2024-10-24 19:44:44 -04:00
Jimbo 8115900d7c Enable compression, change the mpd path, disable MC server backups 2024-10-24 06:20:31 -04:00
Jimbo d17c4c169e Small changes to ranger hotkeys. Going to bed 2024-10-24 06:10:48 -04:00
Jimbo 79ba51269b Fix the mounting of this shit 2024-10-24 05:54:26 -04:00
Jimbo 420c64a70c Change NFS bullshit 2024-10-24 05:45:04 -04:00
Jimbo 389258a617 Update the hardware conf of the server 2024-10-24 05:42:00 -04:00
Jimbo 03e7949ebf Secret change 2024-10-22 22:45:42 -04:00
Jimbo 44e89a5879 Host for more domains 2024-10-22 22:37:44 -04:00
Jimbo b7af0e2095 Fuck it move Roundcube to the Oracle server 2024-10-22 21:38:37 -04:00
Jimbo d9eba72020 Open firewall to mailserver. Oops! 2024-10-22 21:13:04 -04:00
Jimbo e451e70b93 Modularize nginx 2024-10-22 21:08:23 -04:00
Jimbo 9d322d435c Move the acme for Coturn where it belongs 2024-10-22 21:00:03 -04:00
Jimbo f7c3f6e279 Setup mail service to be hosted on Bomberman 2024-10-22 20:43:32 -04:00
Jimbo 734e76940d Add tearing to only Firefly since thats the one that has sway git 2024-10-22 08:53:55 -04:00
Jimbo 7bdf2029bc Fix roguecraft server lol 2024-10-22 08:49:56 -04:00
Jimbo 7f0e1801d7 Move the mailserver to Oracle, give up 2024-10-22 08:02:35 -04:00
Jimbo 951fee17e1 Reformatted the server, pray everything still works 2024-10-22 07:51:39 -04:00
Jimbo 4012b36afc Add Chaotic Nyx, and put Firefly on sway-git. My flickering is finally solved. 2024-10-22 03:22:05 -04:00
Jimbo 1ed45f4437 Ok I'm going to bed now 2024-10-21 04:00:41 -04:00
Jimbo ecfac3e8b2 Small tinkering to the flake, update readme again 2024-10-21 03:58:00 -04:00
Jimbo 507049314f Whoops, remove jovian, self isn't needed? 2024-10-21 03:47:36 -04:00
Jimbo 853df3a0fd Remove Steam Deck and Jovian again, not worth the hassle 2024-10-21 03:03:35 -04:00
Jimbo 14aad2871f Add back Steam Deck and add experimental unstable 2024-10-21 02:12:35 -04:00
Jimbo d4f132616e Define boot options for more machines 2024-10-20 20:29:38 -04:00
Jimbo 11a93bb2c3 Update README again 2024-10-20 20:10:51 -04:00
Jimbo 33b24d67c0 Add NFS to the Lenovo 2024-10-20 20:02:21 -04:00
Jimbo 1bd9bcf59f Change server firewall 2024-10-20 19:43:18 -04:00
Jimbo 50e76c8fe5 Forgot to add the key to the user 2024-10-20 19:34:00 -04:00
Jimbo 95044ea50b Add back Lenovo laptop as Redmond 2024-10-20 18:56:59 -04:00
Jimbo c188a30dc2 Small wireguard changes 2024-10-20 15:39:00 -04:00
Jimbo 986ff8c3d1 Revert some wireguard stuff and change something idk 2024-10-20 15:01:21 -04:00
Jimbo 57fcd83770 Add bulk storage to bomberman 2024-10-20 13:06:13 -04:00
Jimbo 2eb534c73d Add back small brightness shift mod 2024-10-20 04:47:45 -04:00
Jimbo b3acebf991 Add Bomberman keys 2024-10-20 04:41:23 -04:00
Jimbo 9046a92e89 Add initial support for 'bomberman', my Oracle VM 2024-10-20 04:25:07 -04:00
Jimbo b0b291dd04 Remove grub until needed. 2024-10-19 23:17:26 -04:00
Jimbo b0074a081a Add initial support for grub 2024-10-19 19:59:55 -04:00
Jimbo 865afe8ab3 Add an mkforce to the keys of the chromebook to avoid conflicting hotkeys 2024-10-19 13:07:09 -04:00
Jimbo 9af53874c4 Rework the escape key so I don't use it 2024-10-19 12:58:55 -04:00
Jimbo 9d9ae05b45 Linked wrong repo for Will. Whoops! 2024-10-19 00:55:21 -04:00
Jimbo ea955536e1 Update the readme again 2024-10-19 00:34:06 -04:00
Jimbo 4d4975fb0f Reduce and standardize hotkeys to make them more compatible with smaller keyboards. 2024-10-18 21:38:46 -04:00
Jimbo db68904153 Chromebook specific key remaps 2024-10-18 20:33:03 -04:00
Jimbo 9001cdc2a4 Keyd. Hoo boy. 2024-10-18 20:26:32 -04:00
Jimbo eff426b332 Undo the chromebox thing it ain't gonna work yall 2024-10-18 19:54:52 -04:00
Jimbo c056a30383 Add dmidecode for Mrchromebox purposes 2024-10-18 19:49:25 -04:00
Jimbo 3de87a1651 Add fwupd package 2024-10-18 19:39:16 -04:00
Jimbo 71051a6c58 Add back remote mounts to the Chromebook 2024-10-18 19:33:20 -04:00
Jimbo 09bde6129b Add fwupd to devices that support it 2024-10-18 19:31:13 -04:00
Jimbo 2828d7a210 Add a new theme and tamper with some files 2024-10-18 16:26:44 -04:00
Jimbo 03fba91ab6 Add back secrets 2024-10-18 15:48:48 -04:00
Jimbo 033d8f162e Add Chromebook to the roster without secrets 2024-10-18 15:44:38 -04:00
Jimbo 95155e9e93 Add Chromebook to the roster 2024-10-18 15:32:32 -04:00
Jimbo b76d9a6cca Remove ISO for now, will try again with that later 2024-10-17 17:50:33 -04:00
Jimbo 698869fcba Add a snapshots btrfs subvolume 2024-10-17 16:27:55 -04:00
Jimbo 6419926899 Update README again to fix formatting 2024-10-16 02:29:00 -04:00
Jimbo a9d4c4ff63 Update README 2024-10-16 02:28:08 -04:00
Jimbo 6c4518c651 Revert the switch to Vulkan, disable Sunshine by default 2024-10-16 01:59:22 -04:00
Jimbo 1cf5f3ea15 Forgot to import the general headless apps 2024-10-16 01:42:34 -04:00
Jimbo dc2099779b Missed something 2024-10-16 01:32:36 -04:00
Jimbo 6c749ad51d Generalize cyberspark home so it can be used as a generic terminal profile 2024-10-16 01:31:13 -04:00
Jimbo a05ffd55c3 Update the networking stuff 2024-10-16 01:21:11 -04:00
Jimbo 6c9778098b Separate virtualization from the default import 2024-10-16 00:54:16 -04:00
Jimbo 7c4355504e Some changes 2024-10-16 00:51:44 -04:00
Jimbo 39d887dc89 Forgot pkgs 2024-10-16 00:45:09 -04:00
Jimbo 6c157f5411 Add back alsa-utils and scale to the PineBook 2024-10-16 00:44:23 -04:00
Jimbo 54a7a6e21a Move OBS into production 2024-10-16 00:20:47 -04:00
Jimbo 9ba271bb94 More pinebook changes 2024-10-16 00:16:56 -04:00
Jimbo 0eeeb603aa Remove Steam from the default imports for aarch64 purposes 2024-10-16 00:15:16 -04:00
Jimbo 49ce2cd341 Changes to make the laptop work 2024-10-16 00:04:56 -04:00
Jimbo 7f5e5f2cc0 Move the minecraft overlay back out of the global overlays 2024-10-15 22:46:06 -04:00
Jimbo 00ab80d1b8 Move the public keys out of secrets 2024-10-15 22:41:26 -04:00
Jimbo df1532ece0 Shift over the extra ssh port 2024-10-15 17:58:53 -04:00
Jimbo f4fe4036a1 Don't use a weird port for ssh anymore idc 2024-10-15 17:56:05 -04:00
Jimbo a5f06865de Catch all the stuff I missed in the server services to get them to build 2024-10-15 17:46:44 -04:00
Jimbo 25a3a7e237 More small changes to formatting and such 2024-10-15 17:10:40 -04:00
Jimbo c3bc3a56f7 Again, small changes, trying out a new theme 2024-10-15 13:48:33 -04:00
Jimbo 84cfcee9fd Little changes, these are going to be frequent now 2024-10-15 03:33:40 -04:00
Jimbo 857c8ea289 Fix the packages in the overlays 2024-10-15 02:56:05 -04:00
Jimbo 2eba1c95c0 Add back secrets 2024-10-15 02:51:19 -04:00
Jimbo f3d9e8a188 It builds now. 2024-10-15 02:40:43 -04:00
Jimbo 9c71495c73 I'm so close it just keeps throwing random useless errors I swear 2024-10-13 13:01:09 -04:00
Jimbo 862743cbcf Ok that wasn't the full push whoops 2024-10-13 02:53:51 -04:00
Jimbo a62148572b Move packages into overlays as God intended 2024-10-13 02:53:39 -04:00
Jimbo fa3890b814 Going to be changing the way I do variables I think, remove the cmd var 2024-10-13 02:23:51 -04:00
Jimbo cd92b28dc6 ''infinite recursion encountered.'' 2024-10-12 20:44:05 -04:00
Jimbo 4ad26636a7 Gonna revert and modify the original flake, add back overlays from a shared file, and figure things out after 2024-10-12 19:41:05 -04:00
Jimbo 65f90a0bf3 I think my flake needs a complete rewrite 2024-10-12 17:35:52 -04:00
Jimbo 87fbcda3d3 Changes to the flake, thanks Jules 2024-10-09 23:52:50 -04:00
Jimbo 35dabb4249 Must I reiterate.. 2024-10-09 03:36:41 -04:00
Jimbo f29273be22 What a clusterfuck 2024-10-09 03:36:08 -04:00
Jimbo 91f88b8bb2 Add back secrets 2024-10-09 03:34:47 -04:00
Jimbo ea79120e86 Getting a lot closer.. 2024-10-09 03:34:34 -04:00
Jimbo e3bacb2d84 Push these changes to a branch cause I'm kind of giving up 2024-10-07 11:42:34 -04:00
306 changed files with 3556 additions and 2998 deletions

2
.gitattributes vendored
View file

@ -1 +1 @@
extras/secrets.nix filter=git-crypt diff=git-crypt variables/secrets/** filter=git-crypt diff=git-crypt

View file

@ -1,33 +1,39 @@
## My Nix files, now organized in a flake. ## Jimbo's Nix Systems
Thanks for taking a look at my Nix* configs! Thanks for taking a look at my Nix* flake!
While this is primarily organized for my use only, you may find each individual service file or user config to be a good starting point, or something to take and adapt into your own config. While this is primarily organized for my own use, you may find each individual service or config useful to read, reference, learn from, and adapt for your own systems.
### Installation ### Installation
Installing any of my flakes onto a system should be done after any initial install. I would opt to do a minimal install, but this is up to you. Installing this flake is best done from an existing system. A minimal install is fastest, but is up to you. After installing NixOS, backup your hardware-config.nix file, and adapt it to fit the format of ``/hosts``, adjusting for your specific system.
After installing NixOS, backup your hardware-config.nix file, so you can adapt it to fit the format of ``nixos/hardware/machines``, then adjusting the other referenced files in the flake.nix file to reference your specific computer.
An initial install will have to be ran as ``nixos-rebuild switch --flake /etc/nixos/.#HOSTNAME``, where HOSTNAME is a hostname defined in your flake. You may also have to enable "experimental" features with a flag, such as nix-command and flakes. An initial install will can be done with ``nixos-rebuild switch --flake /etc/nixos/.#host``, where ``host`` is a hostname defined in this flake. You may also have to enable "experimental" features with a flag, such as nix-command and flakes.
Home-Manager is handled separately, despite being in the same folder. A rebuild of a user's home would have to be done with ``home-manager switch --flake /etc/nixos``. This will pull the config as defined in the flake as ``USER@HOSTNAME``, where USER is the user running the ``home-manager`` command.
Home-Manager is handled separately from the system, despite being in the same folder. A rebuild of a user's home is done with ``home-manager switch --flake /etc/nixos/.#user@host``, as defined under ``homeConfigurations`` in the flake.
### Usage ### Usage
My config uses these tools: My config uses these tools:
Sway - Window manager / Desktop ``Sway`` - Window manager / Desktop
Foot - Terminal emulator ``ZSH`` - Primary shell
Rofi - App launcher and menu system ``Foot`` - Terminal emulator
ZSH - Primary shell ``Rofi`` - App launcher and menu system
I have made shell aliases in ZSH for rebuilding the system. They are as follows: I have defined shell aliases in ZSH for rebuilding different parts of Nix, they are as follows:
`flakedate` - Update the flake.lock, which renews the sources of nixpkgs. This is needed to update the system. `flakedate` - Update the flake.lock, which renews the sources of nixpkgs. This is needed to update the system.
`sysswitch` - Switch the system profile. `sysswitch` - Switch the system profile.
`homeswitch` = Switch the user's home-manager profile. `homeswitch` = Switch the user's home-manager profile.
`nixswitch` = Switch to new config for both user and system. `nixswitch` = Switch both user and system profile.
`nixdate` = Same as before, but updating flake.nix before doing so. This is essentially a full system update. `nixdate` = Same as before, but updating flake.nix before doing so. This is essentially a full system update.
My config heavily references a gnupg-protected secrets file. These will have to be adapted and rewritten if anyone is to use my config for themselves. My server's config heavily references a git-crypt protected secrets file. These will have to be adapted and rewritten if anyone is to use my config directly.
For my use, unlocking secrets can be done with this command: For my use, unlocking secrets can be done with this command:
``gpg --pinentry-mode loopback --decrypt local.key.asc | git-crypt unlock -`` ``gpg --pinentry-mode loopback --decrypt local.key.asc | git-crypt unlock -``
### Credits
Without the help of heavy inspiration, I would not have been able to learn and get up and running nearly as quickly. My most heavily borrowed configs are as follows:
[CloudyChris' nix-starter-configs fork](https://github.com/CloudyChris/NixOsConfig), the very initial base of my conversion to flakes.
[WillPower3309's personal flake](https://github.com/WillPower3309/nixos-config) for being a pleasure in the SwayFX Discord and having a really nice flake.nix file I borrowed from.
[Jules Sommer's minimal flake](https://github.com/WillPower3309/swayfx) for giving me a good basis for writing individual files and repeatedly helping me throughout the entire process.
Made with love ❤️ Made with love ❤️
![image](./preview.png) ![image](./preview.png)

View file

@ -1,4 +0,0 @@
{
auth = "doas";
nixcfg = "ranger /etc/nixos";
}

View file

@ -1,6 +0,0 @@
{
d1 = "DP-3";
d2 = "DP-1";
d3 = "DP-2";
dI = "eDP-1";
}

View file

@ -1,11 +0,0 @@
rec {
netInt = "eno1";
localSpan = "10.0.0";
server = "${localSpan}.2";
pc = "${localSpan}.3";
vm = "${localSpan}.4";
hx = "${localSpan}.70";
wgInt = "wg0";
wgSpan = "10.100.0";
}

View file

@ -1,21 +0,0 @@
{
colors = {
prime = ''3823C4''; #3823C4
accent = ''1B1F59''; #1B1F59
split = ''555B9E''; #555B9E
actSplit = ''5980B7''; #5980B7
dark = ''101419''; #101419
mid = ''171C23''; #171C23
light = ''272b33''; #272B33
urgent = ''C43823''; #C43823
text = ''C7D3E3''; #C7D3E3
};
fonts = {
main = ''Ubuntu'';
nerd = ''UbuntuMono Nerd Font'';
};
border = rec {
int = 3;
string = toString int;
};
}

View file

@ -1,17 +0,0 @@
{inputs, ...}: {
# This one brings our custom packages from the 'pkgs' directory
additions = final: _prev: import ./pkgs {pkgs = final;};
selfsuper = (self: super: {
mpv = super.mpv.override {
scripts = with self.mpvScripts; [mpris sponsorblock thumbnail];
};
});
finalprev = (final: prev: {
unstable = import inputs.unstable {
system = final.system;
config.allowUnfree = true;
};
});
}

View file

@ -1,5 +0,0 @@
# Custom packages, that can be defined similarly to nixpkgs
{pkgs, ...}: {
xash3d = pkgs.callPackage ./xash/xash3d.nix {};
hlsdk = pkgs.callPackage ./xash/hlsdk.nix {};
}

View file

@ -1,72 +0,0 @@
{
# Define domains
jimDomain = "";
# User account passwords, generated with 'mkpasswd -m sha-512'
jimboAccPass = "";
# External emails
jimUsername = "";
jimEmail = "";
# SSH Keys
jimKeys = [
""
""
];
# System timezone in standard timezone identifier format
timeZone = "";
# Cloudflare API key
flareApiKey = "";
# Wireguard keys, generated with the wg command
wgServerPriv = "";
wgServerPub = "";
wgClientPriv = "";
wgClientPub = "";
wgPixel9Pub = "";
wgOraclePub = "";
# Icecast, plaintext
castAdminPass = "";
castSourcePass = "";
# Photoprism, plaintext
prismAdminPass = "";
# Matrix secrets
matrixSecret = "";
discordBotID = "";
discordBotToken = "";
# Pixelfed secret, must be 32 characters long
pixelfedKey = ''
APP_KEY=
'';
# Transmission credentials, plaintext
transmissionCredFile = ''
{
"rpc-username": "",
"rpc-password": ""
}
'';
# Email cleartext passwords
noreplyPassword = "";
# Email account hashes, generated with 'mkpasswd -m bcrypt'
noreplyMailHash = "";
jimboMailHash = "";
lunaMailHash = "";
freecornMailHash = "";
tinyMailHash = "";
# IPs
jimIP1 = "";
jimIP2 = "";
lunaIP = "";
cornIP = "";
}

Binary file not shown.

View file

@ -1,21 +0,0 @@
{
w0 = ''0:0'';
w1 = ''1:1'';
w2 = ''2:2'';
w3 = ''3:3'';
w4 = ''4:4'';
w5 = ''5:5'';
w6 = ''6:6'';
w7 = ''7:7'';
w8 = ''8:8'';
w9 = ''9:9'';
w1a = ''11:I'';
w2a = ''22:II'';
w3a = ''33:III'';
w4a = ''44:IV'';
w5a = ''55:V'';
w6a = ''66:VI'';
w7a = ''77:VII'';
w8a = ''88:VIII'';
w9a = ''99:IX'';
}

View file

@ -33,6 +33,30 @@
"type": "gitlab" "type": "gitlab"
} }
}, },
"chaotic": {
"inputs": {
"flake-schemas": "flake-schemas",
"home-manager": "home-manager",
"jovian": "jovian",
"nixpkgs": [
"unstable"
]
},
"locked": {
"lastModified": 1729510449,
"narHash": "sha256-/EwjBMYBZ3/2ROT+4M/6tLomgJEgZBpKosWhqtYZkDI=",
"owner": "chaotic-cx",
"repo": "nyx",
"rev": "4e03e8d762623ca925c604800aa18f109cd3bd97",
"type": "github"
},
"original": {
"owner": "chaotic-cx",
"ref": "nyxpkgs-unstable",
"repo": "nyx",
"type": "github"
}
},
"crane": { "crane": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -123,6 +147,20 @@
"type": "github" "type": "github"
} }
}, },
"flake-schemas": {
"locked": {
"lastModified": 1721999734,
"narHash": "sha256-G5CxYeJVm4lcEtaO87LKzOsVnWeTcHGKbKxNamNWgOw=",
"rev": "0a5c42297d870156d9c57d8f99e476b738dcd982",
"revCount": 75,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.5/0190ef2f-61e0-794b-ba14-e82f225e55e6/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%3D0.1.5.tar.gz"
}
},
"flake-utils": { "flake-utils": {
"inputs": { "inputs": {
"systems": "systems" "systems": "systems"
@ -198,6 +236,27 @@
} }
}, },
"home-manager": { "home-manager": {
"inputs": {
"nixpkgs": [
"chaotic",
"nixpkgs"
]
},
"locked": {
"lastModified": 1729414726,
"narHash": "sha256-Dtmm1OU8Ymiy9hVWn/a2B8DhRYo9Eoyx9veERdOBR4o=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "fe56302339bb28e3471632379d733547caec8103",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"home-manager_2": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
@ -218,6 +277,28 @@
"type": "github" "type": "github"
} }
}, },
"jovian": {
"inputs": {
"nix-github-actions": "nix-github-actions",
"nixpkgs": [
"chaotic",
"nixpkgs"
]
},
"locked": {
"lastModified": 1729177642,
"narHash": "sha256-DdKal+ZhB9QD/tnEwFg4cZ4j4YnrkvSljBxnyG+3eE0=",
"owner": "Jovian-Experiments",
"repo": "Jovian-NixOS",
"rev": "bb69165ff372ddbd3228a03513922acd783040e8",
"type": "github"
},
"original": {
"owner": "Jovian-Experiments",
"repo": "Jovian-NixOS",
"type": "github"
}
},
"lanzaboote": { "lanzaboote": {
"inputs": { "inputs": {
"crane": "crane", "crane": "crane",
@ -288,6 +369,29 @@
"type": "github" "type": "github"
} }
}, },
"nix-github-actions": {
"inputs": {
"nixpkgs": [
"chaotic",
"jovian",
"nixpkgs"
]
},
"locked": {
"lastModified": 1690328911,
"narHash": "sha256-fxtExYk+aGf2YbjeWQ8JY9/n9dwuEt+ma1eUFzF8Jeo=",
"owner": "zhaofengli",
"repo": "nix-github-actions",
"rev": "96df4a39c52f53cb7098b923224d8ce941b64747",
"type": "github"
},
"original": {
"owner": "zhaofengli",
"ref": "matrix-name",
"repo": "nix-github-actions",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1722221733, "lastModified": 1722221733,
@ -366,18 +470,17 @@
}, },
"nixpkgs_4": { "nixpkgs_4": {
"locked": { "locked": {
"lastModified": 1727540905, "lastModified": 1728740863,
"narHash": "sha256-40J9tW7Y794J7Uw4GwcAKlMxlX2xISBl6IBigo83ih8=", "narHash": "sha256-u+rxA79a0lyhG+u+oPBRtTDtzz8kvkc9a6SWSt9ekVc=",
"owner": "nixos", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "fbca5e745367ae7632731639de5c21f29c8744ed", "rev": "a3f9ad65a0bf298ed5847629a57808b97e6e8077",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "id": "nixpkgs",
"ref": "nixos-24.05", "ref": "nixos-24.05",
"repo": "nixpkgs", "type": "indirect"
"type": "github"
} }
}, },
"nur": { "nur": {
@ -425,8 +528,9 @@
"root": { "root": {
"inputs": { "inputs": {
"blender-bin": "blender-bin", "blender-bin": "blender-bin",
"chaotic": "chaotic",
"hardware": "hardware", "hardware": "hardware",
"home-manager": "home-manager", "home-manager": "home-manager_2",
"lanzaboote": "lanzaboote", "lanzaboote": "lanzaboote",
"mailserver": "mailserver", "mailserver": "mailserver",
"minecraft": "minecraft", "minecraft": "minecraft",
@ -509,16 +613,15 @@
"locked": { "locked": {
"lastModified": 1728492678, "lastModified": 1728492678,
"narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=", "narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=",
"owner": "nixos", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7", "rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "id": "nixpkgs",
"ref": "nixos-unstable", "ref": "nixos-unstable",
"repo": "nixpkgs", "type": "indirect"
"type": "github"
} }
}, },
"utils": { "utils": {

118
flake.nix
View file

@ -1,97 +1,91 @@
{ {
description = "Jimbo's systems as a flake";
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; nixpkgs.url = "nixpkgs/nixos-24.05";
unstable.url = "github:nixos/nixpkgs/nixos-unstable"; unstable.url = "nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager/release-24.05";
inputs.nixpkgs.follows = "nixpkgs";
};
nur.url = "github:nix-community/NUR"; nur.url = "github:nix-community/NUR";
mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-24.05"; chaotic = {
url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
inputs.nixpkgs.follows = "unstable";
};
blender-bin.url = "https://flakehub.com/f/edolstra/blender-bin/1.0.9.tar.gz"; blender-bin.url = "https://flakehub.com/f/edolstra/blender-bin/1.0.9.tar.gz";
minecraft.url = "github:Infinidoge/nix-minecraft";
hardware.url = "github:nixos/nixos-hardware/master"; hardware.url = "github:nixos/nixos-hardware/master";
# Secure boot
lanzaboote = { lanzaboote = {
url = "github:nix-community/lanzaboote/v0.4.1"; url = "github:nix-community/lanzaboote/v0.4.1";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
# Home manager mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-24.05";
home-manager = { minecraft.url = "github:Infinidoge/nix-minecraft";
url = "github:nix-community/home-manager/release-24.05";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = { outputs = {
self,
nixpkgs, nixpkgs,
unstable, unstable,
home-manager,
nur, nur,
mailserver, chaotic,
blender-bin, blender-bin,
hardware, hardware,
lanzaboote, lanzaboote,
home-manager, mailserver,
minecraft,
... ...
}@inputs: let }:
mkNixos = modules: nixpkgs.lib.nixosSystem { let
mkNix = modules: nixpkgs.lib.nixosSystem {
inherit modules; inherit modules;
specialArgs = { inherit (self) inputs outputs; }; specialArgs = {
inherit
unstable
chaotic
hardware
lanzaboote
mailserver
minecraft
;
};
}; };
mkHome = modules: pkgs: home-manager.lib.homeManagerConfiguration { mkHome = modules: pkgs: home-manager.lib.homeManagerConfiguration {
inherit modules pkgs; inherit modules pkgs;
extraSpecialArgs = { inherit (self) inputs outputs; }; extraSpecialArgs = {
inherit
unstable
nur
blender-bin
;
};
}; };
in { in {
# Your custom packages and modifications, exported as overlays # nixos-rebuild switch --flake .#hostname
overlays = import ./extras/overlays.nix { inherit inputs; };
# Variables defined so they can be accessed globally
secrets = import ./extras/secrets.nix;
cmd = import ./extras/cmd.nix;
displays = import ./extras/displays.nix;
ips = import ./extras/ips.nix;
look = import ./extras/look.nix;
ws = import ./extras/workspaces.nix;
# NixOS configuration: 'nixos-rebuild --flake .#hostname'
nixosConfigurations = { nixosConfigurations = {
JimDesktop = mkNixos [ # PCs and Laptops
./system/hosts/JimDesktop/configuration.nix firefly = mkNix [ ./hosts/firefly/system ];
lanzaboote.nixosModules.lanzaboote shuttleworth = mkNix [ ./hosts/shuttleworth/system ];
]; lacros = mkNix [ ./hosts/lacros/system ];
JimServer = mkNixos [ redmond = mkNix [ ./hosts/redmond/system ];
./system/hosts/JimServer/configuration.nix
mailserver.nixosModule # Servers
]; cyberspark = mkNix [ ./hosts/cyberspark/system ];
JimPine = mkNixos [ bomberman = mkNix [ ./hosts/bomberman/system ];
./system/hosts/JimPine/configuration.nix
hardware.nixosModules.pine64-pinebook-pro
];
}; };
# Home-manager configuration: 'home-manager --flake .#username@hostname' # home-manager switch --flake .#username@hostname
homeConfigurations = { homeConfigurations = {
"jimbo@JimDesktop" = mkHome [ "jimbo@firefly" = mkHome [ ./hosts/firefly/home ] nixpkgs.legacyPackages.x86_64-linux;
./home/hosts/JimDesktop/home.nix "jimbo@shuttleworth" = mkHome [ ./hosts/shuttleworth/home ] nixpkgs.legacyPackages.aarch64-linux;
nur.nixosModules.nur "jimbo@lacros" = mkHome [ ./hosts/lacros/home ] nixpkgs.legacyPackages.x86_64-linux;
] nixpkgs.legacyPackages.x86_64-linux; "jimbo@redmond" = mkHome [ ./hosts/redmond/home ] nixpkgs.legacyPackages.x86_64-linux;
"jimbo@JimServer" = mkHome [ "jimbo@cyberspark" = mkHome [ ./hosts/cyberspark/home ] nixpkgs.legacyPackages.x86_64-linux;
./home/hosts/JimServer/home.nix "jimbo@bomberman" = mkHome [ ./hosts/bomberman/home ] nixpkgs.legacyPackages.aarch64-linux;
] nixpkgs.legacyPackages.x86_64-linux;
"jimbo@JimPine" = mkHome [
./home/hosts/JimPine/home.nix
nur.nixosModules.nur
] nixpkgs.legacyPackages.aarch64-linux;
# Profile for ssh envrionments on different non-root systems
"jimbo@JimTerminal" = mkHome [
./home/hosts/JimTerminal/home.nix
] nixpkgs.legacyPackages.x86_64-linux;
}; };
}; };
} }

View file

@ -1,41 +0,0 @@
# This is your home-manager configuration file
# Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix)
{pkgs, inputs, outputs, ...}: {
imports = [
# Terminal apps
./utils/zsh.nix
./utils/fastfetch.nix
./utils/neovim.nix
./utils/ranger.nix
./utils/tmux.nix
# Services
./services/reloadunits.nix
];
nixpkgs = {
config.allowUnfree = true;
overlays = [
outputs.overlays.additions
outputs.overlays.selfsuper
outputs.overlays.finalprev
inputs.blender-bin.overlays.default
];
};
# Common programs I'll need everywhere
home.packages = with pkgs; [
home-manager
gotop
tcptrack
p7zip
vimv
dua
pciutils
usbutils
protonvpn-cli_2
];
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
home.stateVersion = "24.05";
}

View file

@ -1,47 +0,0 @@
{config, ...}: {
imports = [
# Common modules
./../../base.nix
./../../users/jimbo.nix
./../../utils/git.nix
# GUI Apps
./../../misc/guifiles.nix
./../../misc/fonts.nix
./../../sway/sway.nix
./../../sway/swaylock.nix
./../../programs/gtk.nix
./../../programs/foot.nix
./../../programs/librewolf.nix
./../../programs/mangohud.nix
./../../programs/mpv.nix
./../../programs/obs.nix
./../../programs/pcmanfm-qt.nix
./../../programs/rofi.nix
./../../programs/swappy.nix
./../../programs/easyeffects.nix
./../../utils/ncmpcpp.nix
# Misc apps and tools
./../../misc/useful.nix
./../../misc/avtools.nix
./../../misc/filemanager.nix
./../../misc/production.nix
./../../misc/gaming.nix
./../../misc/xash3d.nix
#./../../misc/emulators.nix
#./../../misc/remotedesktop.nix
./../../misc/school.nix
./../../misc/variables.nix
# Services
./../../services/gnome-keyring.nix
./../../services/mako.nix
./../../services/udiskie.nix
];
# Symlinks
home.file = {
"VMs".source = config.lib.file.mkOutOfStoreSymlink "/etc/libvirt/VMs";
};
}

View file

@ -1,40 +0,0 @@
{
imports = [
# Common modules
./../../base.nix
./../../users/jimbo.nix
./../../utils/git.nix
# GUI Apps
./../../misc/guifiles.nix
./../../misc/fonts.nix
./../../sway/sway.nix
./../../sway/swaylock.nix
./../../programs/gtk.nix
./../../programs/foot.nix
./../../programs/librewolf.nix
./../../programs/mangohud.nix
./../../programs/mpv.nix
./../../programs/obs.nix
./../../programs/pcmanfm-qt.nix
./../../programs/rofi.nix
./../../programs/swappy.nix
./../../programs/easyeffects.nix
./../../utils/ncmpcpp.nix
# Misc apps and tools
./../../misc/useful.nix
./../../misc/avtools.nix
./../../misc/filemanager.nix
./../../misc/gaming.nix
./../../misc/xash3d.nix
./../../misc/remotedesktop.nix
./../../misc/school.nix
./../../misc/variables.nix
# Services
./../../services/gnome-keyring.nix
./../../services/mako.nix
./../../services/udiskie.nix
];
}

View file

@ -1,43 +0,0 @@
{pkgs, outputs, ...}: {
imports = [
# Common modules
./../../base.nix
./../../users/jimbo.nix
./../../utils/git.nix
# GUI Apps
./../../misc/guifiles.nix
./../../misc/fonts.nix
./../../sway/sway.nix
./../../sway/swaylock.nix
./../../programs/gtk.nix
./../../programs/foot.nix
./../../programs/librewolf.nix
./../../programs/mangohud.nix
./../../programs/mpv.nix
./../../programs/pcmanfm-qt.nix
./../../programs/rofi.nix
./../../programs/swappy.nix
./../../programs/easyeffects.nix
./../../utils/ncmpcpp.nix
# Misc apps and tools
./../../misc/useful.nix
./../../misc/avtools.nix
./../../misc/filemanager.nix
./../../misc/remotedesktop.nix
./../../misc/variables.nix
# Services
./../../services/gnome-keyring.nix
./../../services/mako.nix
./../../services/udiskie.nix
];
# Needed to make the speaker work
home.packages = with pkgs; [
alsa-utils
];
wayland.windowManager.sway.config.output.${outputs.displays.dI}.scale = "1.3";
}

View file

@ -1,8 +0,0 @@
{
imports = [
# Common modules
./../../base.nix
./../../users/jimbo.nix
./../../utils/git.nix
];
}

View file

@ -1,14 +0,0 @@
{
imports = [
# Common modules
./../../base.nix
./../../users/jimbo.nix
];
# Rebuild this entire system
programs.zsh = {
shellAliases = {
termswitch = "home-manager switch --flake ~/.home-manager/.#jimbo@JimTerminal --extra-experimental-features 'nix-command flakes'";
};
};
}

View file

@ -1,7 +0,0 @@
{pkgs, ...}: {
home.packages = with pkgs; [
gnome.file-roller
imagemagick
poppler_utils
];
}

View file

@ -1,15 +0,0 @@
{pkgs, ...}: {
# Files that only make sense with a GUI
home.file = {
".face" = {
source = ../assets/user-icon.png;
};
".wallpapers" = {
source = ../assets/wallpapers;
recursive = true;
};
".icons/default" = {
source = "${pkgs.simp1e-cursors}/share/icons/Simp1e-Dark";
};
};
}

View file

@ -1,9 +0,0 @@
{pkgs, ...}: {
home.packages = with pkgs; [
krita
inkscape
audacity
blender_4_2
sunvox
];
}

View file

@ -1,30 +0,0 @@
{pkgs, inputs, ...}: {
# Select default apps
xdg.mimeApps.defaultApplications = {
"inode/directory" = ["pcmanfm-qt.desktop"];
"text/plain" = ["nvim.desktop"];
"image/png" = ["imv.desktop"];
"image/jpeg" = ["imv.desktop"];
"video/*" = ["mpv.desktop"];
};
# Set dconf settings
dconf.settings = {
"org/gnome/desktop/interface/color-scheme" = {
color-scheme = "prefer-dark";
};
"org/virt-manager/virt-manager/connections" = {
autoconnect = ["qemu:///system"];
uris = ["qemu:///system"];
};
};
home.file = let
alsoftConf = ''
drivers=pulse
'';
in {
# Alsoft config
".alsoftrc".text = alsoftConf;
};
}

View file

@ -1,309 +0,0 @@
{pkgs, ...}: {
home = {
packages = with pkgs; [
easyeffects
];
file = let
# An Easyeffects equalizer profile that sounds good to me
easyEffectsProfile = ''
{
"output": {
"blocklist": [],
"crystalizer#0": {
"band0": {
"bypass": false,
"intensity": 0.0,
"mute": false
},
"band1": {
"bypass": false,
"intensity": -1.0,
"mute": false
},
"band2": {
"bypass": false,
"intensity": -2.0,
"mute": false
},
"band3": {
"bypass": false,
"intensity": -3.0,
"mute": false
},
"band4": {
"bypass": false,
"intensity": -4.0,
"mute": false
},
"band5": {
"bypass": false,
"intensity": -5.0,
"mute": false
},
"band6": {
"bypass": false,
"intensity": -6.0,
"mute": false
},
"band7": {
"bypass": false,
"intensity": -7.0,
"mute": false
},
"band8": {
"bypass": false,
"intensity": -8.0,
"mute": false
},
"band9": {
"bypass": false,
"intensity": -9.0,
"mute": false
},
"band10": {
"bypass": false,
"intensity": -10.0,
"mute": false
},
"band11": {
"bypass": false,
"intensity": -11.0,
"mute": false
},
"band12": {
"bypass": false,
"intensity": -12.0,
"mute": false
},
"bypass": false,
"input-gain": 0.0,
"output-gain": 0.0
},
"equalizer#0": {
"balance": 0.0,
"bypass": false,
"input-gain": 0.0,
"left": {
"band0": {
"frequency": 32.0,
"gain": 1.1,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band1": {
"frequency": 64.0,
"gain": 1.16,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band2": {
"frequency": 125.0,
"gain": 3.33,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band3": {
"frequency": 250.0,
"gain": 1.53,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band4": {
"frequency": 500.0,
"gain": -1.83,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band5": {
"frequency": 1000.0,
"gain": -0.58,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band6": {
"frequency": 2000.0,
"gain": 1.42,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band7": {
"frequency": 4000.0,
"gain": 4.73,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band8": {
"frequency": 16000.0,
"gain": 7.62,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band9": {
"frequency": 156.38,
"gain": 2.84,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
}
},
"mode": "IIR",
"num-bands": 10,
"output-gain": 0.0,
"pitch-left": 0.0,
"pitch-right": 0.0,
"right": {
"band0": {
"frequency": 32.0,
"gain": 1.1,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band1": {
"frequency": 64.0,
"gain": 1.16,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band2": {
"frequency": 125.0,
"gain": 3.33,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band3": {
"frequency": 250.0,
"gain": 1.53,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band4": {
"frequency": 500.0,
"gain": -1.83,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band5": {
"frequency": 1000.0,
"gain": -0.58,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band6": {
"frequency": 2000.0,
"gain": 1.42,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band7": {
"frequency": 4000.0,
"gain": 4.73,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band8": {
"frequency": 16000.0,
"gain": 7.62,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band9": {
"frequency": 156.38,
"gain": 2.84,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
}
},
"split-channels": false
},
"plugins_order": [
"equalizer#0",
"crystalizer#0"
]
}
}
'';
in {
# Easyeffects profile
".config/easyeffects/output/JimHeadphones.json".text = easyEffectsProfile;
};
};
}

View file

@ -1,19 +0,0 @@
{pkgs, ...}: {
# Swappy config file
home = {
packages = with pkgs; [
swappy
];
file = let
# Swappy config, for screenshot editing
swappyConfig = ''
[Default]
early_exit=true
save_dir=$HOME/Pictures/Screenshots
'';
in {
# Swappy's config
".config/swappy/config".text = swappyConfig;
};
};
}

View file

@ -1,13 +0,0 @@
{pkgs, ...}: {
services.gnome-keyring = {
enable = true;
components = [
"ssh"
];
};
home.packages = with pkgs; [
gnome.gnome-keyring
gnome.libgnome-keyring
];
}

View file

@ -1,7 +0,0 @@
{
# Nicely reload system units when changing configs
systemd.user = {
enable = true;
startServices = "sd-switch";
};
}

View file

@ -1,269 +0,0 @@
{config, pkgs, outputs, ...}: {
wayland.windowManager.sway = {
config = let
# Set default modifier and variables
primeMod = "Mod4";
secMod = "Mod1";
resizeAmount = ''55'';
sendNotif = ''notify-send --expire-time=1500'';
in {
# Hotkeys
modifier = "${primeMod}";
keybindings = let
# Define scripts specific to Sway
pinWindow = pkgs.writeScript "pin-window" ''
# Get the current border style of the focused window
current_style=$(swaymsg -t get_tree | jq -r '.. | select(.focused?).border')
# Toggle between "normal" (default) and "pixel ${outputs.look.border.string}" border styles
if [ "$current_style" == "none" ]; then
swaymsg "sticky disable, border pixel ${outputs.look.border.string}"
else
swaymsg "sticky enable, border none"
fi
'';
# Kill a window or probe it for info
swayTools = pkgs.writeScript "swaytools" ''
# List the app name and whether or not it uses wayland
swayprop() {
selected_window=$(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | "\(.rect.x),\(.rect.y) \(.rect.width)x\(.rect.height)"' | slurp -r -c ${outputs.look.colors.prime} -B 00000066 -b 00000000)
if [ -n "$selected_window" ]; then
app_id=$(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | select("\(.rect.x),\(.rect.y) \(.rect.width)x\(.rect.height)" == "'"$selected_window"'") | .app_id')
system=$(sed 's/xdg_shell/Wayland/g; s/xwayland/Xorg/g' < <(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | select("\(.rect.x),\(.rect.y) \(.rect.width)x\(.rect.height)" == "'"$selected_window"'") | .shell'))
notify-send "$(echo -e "Window's app_id: $app_id\nWindow System: $system")"
fi
}
# Kill a selected window
swaykill() {
selected_window=$(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | "\(.rect.x),\(.rect.y) \(.rect.width)x\(.rect.height)"' | slurp -r -c ${outputs.look.colors.prime} -B 00000066 -b 00000000)
if [ -n "$selected_window" ]; then
pid=$(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | select("\(.rect.x),\(.rect.y) \(.rect.width)x\(.rect.height)" == "'"$selected_window"'") | .pid')
kill -9 "$pid"
fi
}
# Handle which tool we use
if [ "$1" == "--prop" ]; then
swayprop
elif [ "$1" == "--kill" ]; then
swaykill
fi
'';
in {
## Launcher keys
# LibreWolf profiles
"${primeMod}+F1" = ''exec librewolf -P Jimbo --name=JimBrowser | ${sendNotif} "Main Browser"'';
"${primeMod}+F2" = ''exec librewolf -P Alt --name=AltBrowser | ${sendNotif} "Alternate Browser"'';
"${primeMod}+F3" = ''exec librewolf -P Misc --name=MiscBrowser | ${sendNotif} "Miscellaneous Browser"'';
# Discord
"${primeMod}+F4" = ''exec vesktop --ozone-platform-hint=auto | ${sendNotif} "Discord"'';
# Games
"${primeMod}+F5" = ''exec steam | ${sendNotif} "Steam"'';
"${primeMod}+F6" = ''exec heroic | ${sendNotif} "Heroic Games"'';
# Looking glass for VMs
"${primeMod}+F7" = ''exec looking-glass-client input:rawMouse=yes | ${sendNotif} "Looking Glass"'';
# Virtual Machines
"${primeMod}+F10" = ''exec virt-manager | ${sendNotif} "Virtual Machines"'';
# BeMenu scripts
"${primeMod}+F11" = ''exec rofiscripts --scratchpads | ${sendNotif} "Scratchpads"'';
"${primeMod}+${secMod}+Ctrl+r" = ''exec rofiscripts --resolutions'';
# Open NixOS configuration files
"${primeMod}+F12" = ''exec foot ${outputs.cmd.nixcfg} | ${sendNotif} "Nix Config"'';
# Terminal, rofi, clipmenu, media script, power menu, show/hide waybar
"${primeMod}+Return" = ''exec foot'';
"${primeMod}+s" = ''exec rofi -show run -p Command'';
"${primeMod}+c" = ''exec clipman pick -t rofi'';
"${primeMod}+x" = ''exec rofiscripts --power'';
"${primeMod}+b" = ''exec pkill -USR1 waybar'';
"${primeMod}+Escape" = ''exec ${swayTools} --kill'';
# PCManFM, Emoji Picker, Rofi Launcher, Bluetooth, Ranger
"${primeMod}+Shift+t" = ''exec pcmanfm-qt'';
"${primeMod}+Shift+e" = ''exec BEMOJI_PICKER_CMD="rofi -dmenu -i -p Emoji" bemoji -n -P 0'';
"${primeMod}+Shift+s" = ''exec rofi -show drun -modi drun -drun-display-format {name} -show-icons -disable-history'';
"${primeMod}+Shift+b" = ''exec rofi-bluetooth'';
"${primeMod}+Shift+Return" = ''exec foot ranger'';
# Swaytools prop, colorpicker, obs-cmd
"${primeMod}+Ctrl+x" = ''exec ${swayTools} --prop'';
"${primeMod}+Ctrl+c" = ''exec ${pkgs.hyprpicker}/bin/hyprpicker -an && ${sendNotif} "Color copied to clipboard"'';
"${primeMod}+Ctrl+Prior" = ''exec ${pkgs.obs-cmd}/bin/obs-cmd scene switch "Main"'';
"${primeMod}+Ctrl+Next" = ''exec ${pkgs.obs-cmd}/bin/obs-cmd scene switch "Guest"'';
## Media keys
# Volume control
"XF86AudioRaiseVolume" = ''exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+'';
"XF86AudioLowerVolume" = ''exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-'';
# MPV volume control
"${secMod}+XF86AudioRaiseVolume" = ''exec mpc volume +3'';
"${secMod}+XF86AudioLowerVolume" = ''exec mpc volume -3'';
# Mute, Stop
"XF86AudioMute" = ''exec wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle'';
"XF86AudioStop" = ''exec mpc stop'';
# Play MPD, Firefox, or MPV
"XF86AudioPlay" = ''exec mpc toggle'';
"${secMod}+XF86AudioPlay" = ''exec playerctl --player=librewolf play-pause'';
"Ctrl+XF86AudioPlay" = ''exec playerctl --player=mpv play-pause'';
# Next/Previous
"XF86AudioNext" = ''exec mpc next'';
"XF86AudioPrev" = ''exec mpc prev'';
# Seek
"${secMod}+Shift+XF86AudioNext" = ''exec mpc seek +5'';
"${secMod}+Shift+XF86AudioPrev" = ''exec mpc seek -5'';
## Notification keys
# Toggle mako
"${primeMod}+n" = ''exec makotoggle'';
"${primeMod}+Shift+n" = ''exec makoctl restore'';
"${primeMod}+Ctrl+n" = ''exec makoctl dismiss -a'';
## Miscellaneous keys
# Screenshots
"Print" = ''exec swayshot --swappy'';
"${primeMod}+Shift+f" = ''exec swayshot --swappy'';
"Shift+Print" = ''exec swayshot --screen'';
# Server SSH
"${primeMod}+Ctrl+Return" = ''exec foot ssh ${outputs.ips.server} -p 2222'';
# Display Brightness and Keyboard Brightness
"XF86MonBrightnessUp" = ''exec light -A 5'';
"XF86MonBrightnessDown" = ''exec light -U 5'';
"Shift+XF86MonBrightnessUp" = ''exec light -A 1'';
"Shift+XF86MonBrightnessDown" = ''exec light -U 1'';
"XF86KbdBrightnessUp" = ''exec light -s sysfs/leds/smc::kbd_backlight -A 5'';
"XF86KbdBrightnessDown" = ''exec light -s sysfs/leds/smc::kbd_backlight -U 5'';
## Window manager keys
"${primeMod}+q" = ''kill'';
"${primeMod}+Shift+r" = ''reload'';
# Switch to workspaces
"${primeMod}+grave" = ''workspace ${outputs.ws.w0}'';
"${primeMod}+1" = ''workspace ${outputs.ws.w1}'';
"${primeMod}+2" = ''workspace ${outputs.ws.w2}'';
"${primeMod}+3" = ''workspace ${outputs.ws.w3}'';
"${primeMod}+4" = ''workspace ${outputs.ws.w4}'';
"${primeMod}+5" = ''workspace ${outputs.ws.w5}'';
"${primeMod}+6" = ''workspace ${outputs.ws.w6}'';
"${primeMod}+7" = ''workspace ${outputs.ws.w7}'';
"${primeMod}+8" = ''workspace ${outputs.ws.w8}'';
"${primeMod}+9" = ''workspace ${outputs.ws.w9}'';
# Switch to alternate workspaces
"${secMod}+F1" = ''workspace ${outputs.ws.w1a}'';
"${secMod}+F2" = ''workspace ${outputs.ws.w2a}'';
"${secMod}+F3" = ''workspace ${outputs.ws.w3a}'';
"${secMod}+F4" = ''workspace ${outputs.ws.w4a}'';
"${secMod}+F5" = ''workspace ${outputs.ws.w5a}'';
"${secMod}+F6" = ''workspace ${outputs.ws.w6a}'';
"${secMod}+F7" = ''workspace ${outputs.ws.w7a}'';
"${secMod}+F8" = ''workspace ${outputs.ws.w8a}'';
"${secMod}+F9" = ''workspace ${outputs.ws.w9a}'';
# Move window to and focus new workspace
"${primeMod}+Shift+grave" = ''move container to workspace ${outputs.ws.w0}; workspace ${outputs.ws.w0}'';
"${primeMod}+Shift+1" = ''move container to workspace ${outputs.ws.w1}; workspace ${outputs.ws.w1}'';
"${primeMod}+Shift+2" = ''move container to workspace ${outputs.ws.w2}; workspace ${outputs.ws.w2}'';
"${primeMod}+Shift+3" = ''move container to workspace ${outputs.ws.w3}; workspace ${outputs.ws.w3}'';
"${primeMod}+Shift+4" = ''move container to workspace ${outputs.ws.w4}; workspace ${outputs.ws.w4}'';
"${primeMod}+Shift+5" = ''move container to workspace ${outputs.ws.w5}; workspace ${outputs.ws.w5}'';
"${primeMod}+Shift+6" = ''move container to workspace ${outputs.ws.w6}; workspace ${outputs.ws.w6}'';
"${primeMod}+Shift+7" = ''move container to workspace ${outputs.ws.w7}; workspace ${outputs.ws.w7}'';
"${primeMod}+Shift+8" = ''move container to workspace ${outputs.ws.w8}; workspace ${outputs.ws.w8}'';
"${primeMod}+Shift+9" = ''move container to workspace ${outputs.ws.w9}; workspace ${outputs.ws.w9}'';
# Move window to and focus new alternate workspace
"${secMod}+Shift+F1" = ''move container to workspace ${outputs.ws.w1a}; workspace ${outputs.ws.w1a}'';
"${secMod}+Shift+F2" = ''move container to workspace ${outputs.ws.w2a}; workspace ${outputs.ws.w2a}'';
"${secMod}+Shift+F3" = ''move container to workspace ${outputs.ws.w3a}; workspace ${outputs.ws.w3a}'';
"${secMod}+Shift+F4" = ''move container to workspace ${outputs.ws.w4a}; workspace ${outputs.ws.w4a}'';
"${secMod}+Shift+F5" = ''move container to workspace ${outputs.ws.w5a}; workspace ${outputs.ws.w5a}'';
"${secMod}+Shift+F6" = ''move container to workspace ${outputs.ws.w6a}; workspace ${outputs.ws.w6a}'';
"${secMod}+Shift+F7" = ''move container to workspace ${outputs.ws.w7a}; workspace ${outputs.ws.w7a}'';
"${secMod}+Shift+F8" = ''move container to workspace ${outputs.ws.w8a}; workspace ${outputs.ws.w8a}'';
"${secMod}+Shift+F9" = ''move container to workspace ${outputs.ws.w9a}; workspace ${outputs.ws.w9a}'';
# Change focus across windows
"${primeMod}+Up" = ''focus up'';
"${primeMod}+Down" = ''focus down'';
"${primeMod}+Left" = ''focus left'';
"${primeMod}+Right" = ''focus right'';
# Switch focus across outputs
"${primeMod}+j" = ''focus output ${outputs.displays.d2}'';
"${primeMod}+k" = ''focus output ${outputs.displays.d1}'';
"${primeMod}+l" = ''focus output ${outputs.displays.d3}'';
# Move focused window
"${primeMod}+Shift+Up" = ''move up ${resizeAmount} px'';
"${primeMod}+Shift+Down" = ''move down ${resizeAmount} px'';
"${primeMod}+Shift+Left" = ''move left ${resizeAmount} px'';
"${primeMod}+Shift+Right" = ''move right ${resizeAmount} px'';
# Move window across outputs
"${primeMod}+Shift+j" = ''move output ${outputs.displays.d2}; focus output ${outputs.displays.d2}'';
"${primeMod}+Shift+k" = ''move output ${outputs.displays.d1}; focus output ${outputs.displays.d1}'';
"${primeMod}+Shift+l" = ''move output ${outputs.displays.d3}; focus output ${outputs.displays.d3}'';
# Change focus between floating/tiled, toggle floating
"${primeMod}+space" = ''focus mode_toggle'';
"${primeMod}+Shift+space" = ''floating toggle'';
# Allow a window to be visible on all workspaces, toggle border
"${primeMod}+0" = ''exec ${pinWindow}'';
# Toggle fullscreen
"${primeMod}+f" = ''fullscreen toggle'';
"${primeMod}+${secMod}+Ctrl+f" = ''fullscreen toggle global'';
# Change container layout
"${primeMod}+w" = ''layout toggle split'';
"${primeMod}+e" = ''layout toggle tabbed stacking'';
# Change split direction
"${primeMod}+h" = ''split h'';
"${primeMod}+v" = ''split v'';
# Focus parent / child
"${primeMod}+a" = ''focus parent'';
"${primeMod}+d" = ''focus child'';
# Resize windows
"${primeMod}+${secMod}+Up" = ''resize grow height ${resizeAmount} px or 5 ppt'';
"${primeMod}+${secMod}+Down" = ''resize shrink height ${resizeAmount} px or 5 ppt'';
"${primeMod}+${secMod}+Left" = ''resize shrink width ${resizeAmount} px or 5 ppt'';
"${primeMod}+${secMod}+Right" = ''resize grow width ${resizeAmount} px or 5 ppt'';
# Adjust gap size
"${primeMod}+Shift+equal" = ''gaps inner current set 5'';
"${primeMod}+equal" = ''gaps inner current plus 5'';
"${primeMod}+minus" = ''gaps inner current minus 5'';
# Scratchpads
"Ctrl+Shift+Escape" = ''[app_id="gotop"] scratchpad show, move position center, resize set 1216 888'';
"${primeMod}+Shift+m" = ''[app_id="music"] scratchpad show, move position center, resize set 1006 657'';
"${primeMod}+Shift+v" = ''[app_id="sound"] scratchpad show, move position center, resize set 1000 800'';
"${primeMod}+Shift+Backslash" = ''[app_id="com.github.wwmm.easyeffects"] scratchpad show, move position center, resize set 1000 800'';
};
};
};
}

View file

@ -1,14 +0,0 @@
{config, pkgs, ...}: {
# Enable Sway and write some scripts
wayland.windowManager.sway = {
package = pkgs.unstable.sway;
extraConfig = ''
# SwayFX specific options
blur enable
blur_passes 3
blur_radius 5
layer_effects 'rofi' blur enable
layer_effects 'notifications' blur enable; blur_ignore_transparent enable
'';
};
}

View file

@ -1,50 +0,0 @@
{config, pkgs, outputs, ...}: {
# Enable Sway and write some scripts
wayland.windowManager.sway = {
enable = true;
#package = pkgs.unstable.sway;
wrapperFeatures.gtk = true;
checkConfig = false;
config = {
# Theming settings
colors = {
focused = {
border = "#${outputs.look.colors.prime}";
background = "#${outputs.look.colors.prime}";
text = "#FFFFFF";
indicator = "#${outputs.look.colors.actSplit}";
childBorder = "#${outputs.look.colors.prime}";
};
focusedInactive = {
border = "#${outputs.look.colors.accent}";
background = "#${outputs.look.colors.accent}";
text = "#${outputs.look.colors.text}";
indicator = "#${outputs.look.colors.split}";
childBorder = "#${outputs.look.colors.accent}";
};
unfocused = {
border = "#${outputs.look.colors.dark}";
background = "#${outputs.look.colors.dark}";
text = "#${outputs.look.colors.text}";
indicator = "#${outputs.look.colors.split}";
childBorder = "#${outputs.look.colors.split}";
};
urgent = {
border = "#${outputs.look.colors.urgent}";
background = "#${outputs.look.colors.urgent}";
text = "#${outputs.look.colors.text}";
indicator = "#${outputs.look.colors.urgent}";
childBorder = "#${outputs.look.colors.urgent}";
};
};
fonts = {
names = ["${outputs.look.fonts.main}"];
size = 10.5;
};
gaps = {
inner = 5;
smartGaps = true;
};
};
};
}

View file

@ -1,8 +0,0 @@
{pkgs, outputs, ...}: {
programs.git = {
enable = true;
lfs.enable = true;
userName = outputs.secrets.jimUsername;
userEmail = outputs.secrets.jimEmail;
};
}

View file

@ -0,0 +1,19 @@
{ ... }:
{
imports = [
# Programs and apps
../../../modules/home
../../../modules/home/users
../../../modules/home/programs/misc/headless
../../../modules/home/programs/terminal/fastfetch
../../../modules/home/programs/terminal/git
../../../modules/home/programs/terminal/neovim
../../../modules/home/programs/terminal/ranger
../../../modules/home/programs/terminal/tmux
../../../modules/home/utils/zsh
# Misc
../../../variables/domains
../../../variables/look/colors/purple
];
}

View file

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICtxnPjkLdUIi5mVqBHXM9rW+Mmsqx1C1XnpRusVTWhm jimbo@bomberman

View file

@ -0,0 +1,28 @@
{ config, ... }:
{
imports = [
./hardware
# Apps and programs
../../../modules/system
../../../modules/system/accounts
../../../modules/system/devices/filesystems
../../../modules/system/devices/boot/systemd
../../../modules/system/devices/networking
../../../modules/system/devices/networking/firewall/pc
../../../modules/system/devices/networking/wireguard/pc
../../../modules/system/programs/git
../../../modules/system/programs/security
../../../modules/system/services/common
../../../modules/system/services/server/acme
../../../modules/system/services/server/webhost/nginx
../../../modules/system/services/server/mailserver
# Misc
../../../overlays
../../../variables
];
networking.hostName = "bomberman";
networking.wireguard.interfaces."${config.ips.wgInt}".ips = [ "${config.ips.wgSpan}.19/24" ];
}

View file

@ -0,0 +1,61 @@
{ config, lib, pkgs, modulesPath, ... }:
{
imports = [
(modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd = {
availableKernelModules = [
"xhci_pci"
"virtio_scsi"
];
kernelModules = [
"dm-snapshot"
];
};
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/e50e186d-e5bc-40b0-9cd7-43b609cde3ea";
fsType = "btrfs";
options = [ "subvol=@" ];
};
"/home" = {
device = "/dev/disk/by-uuid/e50e186d-e5bc-40b0-9cd7-43b609cde3ea";
fsType = "btrfs";
options = [ "subvol=@home" ];
};
"/nix" = {
device = "/dev/disk/by-uuid/e50e186d-e5bc-40b0-9cd7-43b609cde3ea";
fsType = "btrfs";
options = [ "subvol=@nix" ];
};
"/var" = {
device = "/dev/disk/by-uuid/e50e186d-e5bc-40b0-9cd7-43b609cde3ea";
fsType = "btrfs";
options = [ "subvol=@var" ];
};
"/.snapshots" = {
device = "/dev/disk/by-uuid/e50e186d-e5bc-40b0-9cd7-43b609cde3ea";
fsType = "btrfs";
options = [ "subvol=@snapshots" ];
};
"/boot" = {
device = "/dev/disk/by-uuid/7C94-8C9A";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
"/export/Bulk" = {
device = "/dev/disk/by-uuid/ef465845-cc56-4db5-9260-8ae515eb025e";
fsType = "btrfs";
noCheck = true;
};
};
swapDevices = [
{ device = "/dev/disk/by-uuid/7e8c773d-c8f4-4dd8-a835-bde78e5b6760"; }
];
networking.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
}

View file

@ -0,0 +1,19 @@
{ ... }:
{
imports = [
# Programs and apps
../../../modules/home
../../../modules/home/users
../../../modules/home/programs/misc/headless
../../../modules/home/programs/terminal/fastfetch
../../../modules/home/programs/terminal/git
../../../modules/home/programs/terminal/neovim
../../../modules/home/programs/terminal/ranger
../../../modules/home/programs/terminal/tmux
../../../modules/home/utils/zsh
# Misc
../../../variables/domains
../../../variables/look/colors/purple
];
}

View file

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIKC8Uqxb09V3msBgDv6lD/nETMYr/X0OgtpDo8ldcMK

View file

@ -0,0 +1,25 @@
{ ... }:
{
imports = [
./hardware
# Apps and programs
../../../modules/system
../../../modules/system/accounts
../../../modules/system/devices/filesystems
../../../modules/system/devices/boot/systemd
../../../modules/system/devices/networking
../../../modules/system/devices/networking/firewall/server
../../../modules/system/devices/networking/wireguard/server
../../../modules/system/programs/git
../../../modules/system/programs/security
../../../modules/system/services/common
../../../modules/system/services/server
# Misc
../../../overlays
../../../variables
];
networking.hostName = "cyberspark";
}

View file

@ -0,0 +1,130 @@
{ config, lib, pkgs, modulesPath, ... }:
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot = {
blacklistedKernelModules = [
"pcspkr"
];
initrd = {
availableKernelModules = [
"xhci_pci"
"ehci_pci"
"ahci"
"nvme"
"usbhid"
"sd_mod"
"sr_mod"
];
kernelModules = [
"kvm-intel"
];
};
swraid = {
enable = true;
mdadmConf = "MAILADDR jimbo@jimbosfiles.com";
};
};
# Main root
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/b8b7ed47-c98c-4a49-af01-b2832dde1287";
fsType = "btrfs";
options = [ "subvol=@" ];
};
"/home" = {
device = "/dev/disk/by-uuid/b8b7ed47-c98c-4a49-af01-b2832dde1287";
fsType = "btrfs";
options = [ "subvol=@home" ];
};
"/nix" = {
device = "/dev/disk/by-uuid/b8b7ed47-c98c-4a49-af01-b2832dde1287";
fsType = "btrfs";
options = [ "subvol=@nix" ];
};
"/var" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
fsType = "btrfs";
options = [ "subvol=@var" ];
};
"/srv/minecraft" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
fsType = "btrfs";
options = [ "subvol=@minecraft" "compress=zstd" ];
};
"/.snapshots" = {
device = "/dev/disk/by-uuid/b8b7ed47-c98c-4a49-af01-b2832dde1287";
fsType = "btrfs";
options = [ "subvol=@snapshots" ];
};
"/boot" = {
device = "/dev/disk/by-uuid/CD94-1D3F";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
# Atrocity of subvols
"/export/JimboNFS/Downloads" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
fsType = "btrfs";
options = [ "subvol=@downloads" "compress=zstd" ];
};
"/export/JimboNFS/Documents" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
fsType = "btrfs";
options = [ "subvol=@docs" "compress=zstd" ];
};
"/export/JimboNFS/Photos" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
fsType = "btrfs";
options = [ "subvol=@photos" "compress=zstd" ];
};
"/export/JimboNFS/Videos/Random" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
fsType = "btrfs";
options = [ "subvol=@videos-random" "compress=zstd" ];
};
"/export/JimboNFS/Videos/Media" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
fsType = "btrfs";
options = [ "subvol=@videos-media" "compress=zstd" ];
};
"/export/JimboNFS/Music/Synced" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
fsType = "btrfs";
options = [ "subvol=@music-synced" "compress=zstd" ];
};
"/export/JimboNFS/Music/Unsynced" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
fsType = "btrfs";
options = [ "subvol=@music-unsynced" "compress=zstd" ];
};
"/export/JimboNFS/Projects" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
fsType = "btrfs";
options = [ "subvol=@projects" "compress=zstd" ];
};
"/export/JimboNFS/School" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
fsType = "btrfs";
options = [ "subvol=@school" "compress=zstd" ];
};
"/export/JimboNFS/.snapshots" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
fsType = "btrfs";
options = [ "subvol=@snapshots" "compress=zstd" ];
};
};
swapDevices = [
{ device = "/dev/disk/by-uuid/57178cfc-3e71-4d35-8c7f-e355f9dc84df"; }
];
networking.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View file

@ -0,0 +1,27 @@
{ nur, config, ... }:
{
imports = [
# Apps and programs
../../../modules/home
../../../modules/home/users
../../../modules/home/files
../../../modules/home/settings
../../../modules/home/programs
../../../modules/home/programs/misc/production
../../../modules/home/programs/misc/gaming/launchers
../../../modules/home/programs/misc/gaming/xash3d
../../../modules/home/programs/misc/school
../../../modules/home/sway
../../../modules/home/utils
# Misc
../../../overlays
../../../variables
../../../variables/look/colors/red
# Imports
nur.nixosModules.nur
];
wayland.windowManager.sway.config.output.${config.displays.d1}.allow_tearing = "yes";
}

View file

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC2lMkUd+BbXITE5LTg94hEzmA6UKsIIbaf5YOjGoLzl

View file

@ -0,0 +1,50 @@
{ pkgs, ... }:
let
commonKernelParams = [
# Nvidia settings
"nvidia_drm.fbdev=1"
"nouveau.config=NvGspRm=1"
# VM/GPU passthrough
"amd_iommu=on"
"iommu=pt"
"nested=1"
# Virtualization nonsense
"transparent_hugepage=never"
# Isolate devices into IOMMU groups
"pcie_acs_override=downstream,multifunction"
"pci=routeirq"
];
in {
boot = {
kernelPackages = pkgs.linuxPackages_cachyos;
blacklistedKernelModules = [
"pcspkr"
];
kernel.sysctl."vm.max_map_count" = 2147483642;
kernelParams = commonKernelParams ++ [
"vfio-pci.ids=10de:1f82,10de:10fa"
];
# Encryption and TPM
initrd = {
systemd.enable = true;
luks.devices = {
"crypt-ssd" = {
device = "/dev/disk/by-uuid/52110c74-19b6-40ef-9710-e6c9b157005f";
preLVM = true;
allowDiscards = true;
};
};
};
};
# Additional entry to boot from the second GPU
specialisation = {
gputwo.configuration = {
boot.kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:2504,10de:228e" ];
};
};
}

View file

@ -0,0 +1,37 @@
{ chaotic, pkgs, ... }:
{
imports = [
./hardware
./boot
# Apps and programs
../../../modules/system
../../../modules/system/accounts
../../../modules/system/desktop
../../../modules/system/programs
../../../modules/system/services
../../../modules/system/services/pc/sunshine
../../../modules/system/services/pc/school
../../../modules/system/services/pc/virtualization/qemu
# Devices and hardware
../../../modules/system/devices
../../../modules/system/devices/boot/lanzaboote
../../../modules/system/devices/video/nvidia
../../../modules/system/devices/networking/firewall/pc
# Misc
../../../overlays
../../../variables
# Imports
chaotic.homeManagerModules.default
];
programs.sway.package = pkgs.sway_git;
networking.hostName = "firefly";
# Force Electron to use Wayland
environment.sessionVariables.NIXOS_OZONE_WL = "1";
}

View file

@ -1,36 +1,10 @@
{ config, lib, pkgs, outputs, modulesPath, ... }: let { config, lib, modulesPath, ... }:
# Set common boot paramaters {
commonKernelParams = [
# Nvidia settings
"nvidia_drm.fbdev=1"
"nouveau.config=NvGspRm=1"
# VM/GPU passthrough
"amd_iommu=on"
"iommu=pt"
"nested=1"
# Virtualization nonsense
"transparent_hugepage=never"
# Isolate devices into IOMMU groups
"pcie_acs_override=downstream,multifunction"
"pci=routeirq"
];
in {
imports = [ imports = [
(modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
]; ];
boot = { boot = {
kernelPackages = pkgs.unstable.linuxPackages_zen;
blacklistedKernelModules = [
"pcspkr"
];
kernel.sysctl."vm.max_map_count" = 2147483642;
kernelParams = commonKernelParams ++ [
"vfio-pci.ids=10de:1f82,10de:10fa"
];
initrd = { initrd = {
availableKernelModules = [ availableKernelModules = [
"nvme" "nvme"
@ -41,32 +15,15 @@ in {
"sd_mod" "sd_mod"
]; ];
kernelModules = [ kernelModules = [
"dm-snapshot"
"vfio" "vfio"
"vfio_pci" "vfio_pci"
"vfio_iommu_type1" "vfio_iommu_type1"
"kvm-amd" "kvm-amd"
]; ];
# Encryption and TPM
systemd.enable = true;
luks.devices = {
"crypt-ssd" = {
device = "/dev/disk/by-uuid/52110c74-19b6-40ef-9710-e6c9b157005f";
preLVM = true;
allowDiscards = true;
};
};
}; };
}; };
# Additional entry to boot from the second GPU
specialisation = {
gputwo.configuration = {
boot.kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:2504,10de:228e" ];
};
};
# Mount everything as necessary
fileSystems = { fileSystems = {
"/" = { "/" = {
device = "/dev/disk/by-uuid/bbfed7d1-62f2-4d8e-b63f-7f6ec932105b"; device = "/dev/disk/by-uuid/bbfed7d1-62f2-4d8e-b63f-7f6ec932105b";
@ -88,6 +45,11 @@ in {
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@var" "noatime" "nodiratime" "discard" ]; options = [ "subvol=@var" "noatime" "nodiratime" "discard" ];
}; };
"/.snapshots" = {
device = "/dev/disk/by-uuid/bbfed7d1-62f2-4d8e-b63f-7f6ec932105b";
fsType = "btrfs";
options = [ "subvol=@snapshots" "noatime" "nodiratime" "discard" ];
};
"/boot" = { "/boot" = {
device = "/dev/disk/by-uuid/3B4A-76C9"; device = "/dev/disk/by-uuid/3B4A-76C9";
fsType = "vfat"; fsType = "vfat";
@ -129,19 +91,57 @@ in {
}; };
# Network mounts # Network mounts
"/home/jimbo/JimboNFS" = { "/home/jimbo/JimboNFS/Downloads" = {
device = "${outputs.ips.server}:/export/JimboNFS"; device = "${config.ips.server}:/export/JimboNFS/Downloads";
fsType = "nfs4";
options = [ "x-systemd.automount" "_netdev" "nofail" "noauto" ];
};
"/home/jimbo/JimboNFS/Documents" = {
device = "${config.ips.server}:/export/JimboNFS/Documents";
fsType = "nfs4";
options = [ "x-systemd.automount" "_netdev" "nofail" "noauto" ];
};
"/home/jimbo/JimboNFS/Photos" = {
device = "${config.ips.server}:/export/JimboNFS/Photos";
fsType = "nfs4";
options = [ "x-systemd.automount" "_netdev" "nofail" "noauto" ];
};
"/home/jimbo/JimboNFS/Videos/Random" = {
device = "${config.ips.server}:/export/JimboNFS/Videos/Random";
fsType = "nfs4";
options = [ "x-systemd.automount" "_netdev" "nofail" "noauto" ];
};
"/home/jimbo/JimboNFS/Videos/Media" = {
device = "${config.ips.server}:/export/JimboNFS/Videos/Media";
fsType = "nfs4";
options = [ "x-systemd.automount" "_netdev" "nofail" "noauto" ];
};
"/home/jimbo/JimboNFS/Music/Synced" = {
device = "${config.ips.server}:/export/JimboNFS/Music/Synced";
fsType = "nfs4";
options = [ "x-systemd.automount" "_netdev" "nofail" "noauto" ];
};
"/home/jimbo/JimboNFS/Music/Unsynced" = {
device = "${config.ips.server}:/export/JimboNFS/Music/Unsynced";
fsType = "nfs4";
options = [ "x-systemd.automount" "_netdev" "nofail" "noauto" ];
};
"/home/jimbo/JimboNFS/Projects" = {
device = "${config.ips.server}:/export/JimboNFS/Projects";
fsType = "nfs4";
options = [ "x-systemd.automount" "_netdev" "nofail" "noauto" ];
};
"/home/jimbo/JimboNFS/School" = {
device = "${config.ips.server}:/export/JimboNFS/School";
fsType = "nfs4"; fsType = "nfs4";
options = [ "x-systemd.automount" "_netdev" "nofail" "noauto" ]; options = [ "x-systemd.automount" "_netdev" "nofail" "noauto" ];
}; };
}; };
# Set the swap partition
swapDevices = [ swapDevices = [
{ device = "/dev/disk/by-uuid/1a6a68d0-8ae7-4836-a585-b708597937a1"; } { device = "/dev/disk/by-uuid/1a6a68d0-8ae7-4836-a585-b708597937a1"; }
]; ];
# Enables DHCP on each ethernet and wireless interface.
networking.useDHCP = lib.mkDefault true; networking.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;

View file

@ -0,0 +1,22 @@
{ config, nur, ... }:
{
imports = [
# Apps and programs
../../../modules/home
../../../modules/home/users
../../../modules/home/files
../../../modules/home/settings
../../../modules/home/programs
../../../modules/home/programs/misc/remote-desktop
../../../modules/home/sway
../../../modules/home/utils
# Misc
../../../overlays
../../../variables
../../../variables/look/colors/orange
# Imports
nur.nixosModules.nur
];
}

View file

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBk6ALxn+zKrRys6/c1oYSoWJaUUEo3nAM224ElhjJQR jimbo@lacros

View file

@ -0,0 +1,17 @@
{ ... }:
{
boot = {
kernelPackages = pkgs.linuxPackages_latest;
kernel.sysctl."vm.max_map_count" = 2147483642;
initrd = {
systemd.enable = true;
luks.devices = {
crypt-mmc = {
device = "/dev/disk/by-uuid/5906e176-7ad3-41e5-bc45-ae65664eb10c";
preLVM = true;
allowDiscards = true;
};
};
};
};
}

View file

@ -0,0 +1,34 @@
{ config, lib, ... }:
{
imports = [
./hardware
./boot
# Apps and programs
../../../modules/system
../../../modules/system/accounts
../../../modules/system/desktop
../../../modules/system/programs
../../../modules/system/services
# Devices and hardware
../../../modules/system/devices
../../../modules/system/devices/boot/lanzaboote
../../../modules/system/devices/networking/wireless
../../../modules/system/devices/networking/firewall/pc
../../../modules/system/devices/networking/wireguard/pc
# Extras
../../../overlays
../../../variables
];
services.keyd.keyboards.default.settings.main = {
leftmeta = lib.mkForce "overload(control, esc)";
leftcontrol = lib.mkForce "leftmeta";
f13 = lib.mkForce "delete";
};
networking.hostName = "lacros";
networking.wireguard.interfaces."${config.ips.wgInt}".ips = [ "${config.ips.wgSpan}.18/24" ];
}

View file

@ -0,0 +1,63 @@
{ config, lib, modulesPath, ... }:
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot = {
initrd = {
availableKernelModules = [ "xhci_pci" "sdhci_pci" ];
kernelModules = [ "dm-snapshot" ];
};
kernelModules = [ "kvm-intel" ];
};
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/e8c9c5a8-4df0-4100-8de6-f08a1a774fad";
fsType = "btrfs";
options = [ "subvol=@" "noatime" "nodiratime" "discard" ];
};
"/nix" = {
device = "/dev/disk/by-uuid/e8c9c5a8-4df0-4100-8de6-f08a1a774fad";
fsType = "btrfs";
options = [ "subvol=@nix" "noatime" "nodiratime" "discard" ];
};
"/var" = {
device = "/dev/disk/by-uuid/e8c9c5a8-4df0-4100-8de6-f08a1a774fad";
fsType = "btrfs";
options = [ "subvol=@var" "noatime" "nodiratime" "discard" ];
};
"/.snapshots" = {
device = "/dev/disk/by-uuid/e8c9c5a8-4df0-4100-8de6-f08a1a774fad";
fsType = "btrfs";
options = [ "subvol=@snapshots" "noatime" "nodiratime" "discard" ];
};
"/home" = {
device = "/dev/disk/by-uuid/e8c9c5a8-4df0-4100-8de6-f08a1a774fad";
fsType = "btrfs";
options = [ "subvol=@home" "noatime" "nodiratime" "discard" ];
};
"/boot" = {
device = "/dev/disk/by-uuid/1C76-1006";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
# Remote
"/home/jimbo/JimboNFS" = {
device = "${config.ips.wgSpan}.1:/export/JimboNFS";
fsType = "nfs4";
options = ["x-systemd.automount" "_netdev" "nofail" "noauto"];
};
};
swapDevices = [
{ device = "/dev/disk/by-uuid/54a9cc22-4a2c-4e04-a968-313c34481489"; }
];
networking.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View file

@ -0,0 +1,24 @@
{ config, nur, ... }:
{
imports = [
# Apps and programs
../../../modules/home
../../../modules/home/users
../../../modules/home/files
../../../modules/home/settings
../../../modules/home/programs
../../../modules/home/programs/misc/production
../../../modules/home/programs/misc/gaming/launchers
../../../modules/home/programs/misc/remote-desktop
../../../modules/home/sway
../../../modules/home/utils
# Misc
../../../overlays
../../../variables
../../../variables/look/colors/green
# Imports
nur.nixosModules.nur
];
}

View file

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG9uITpyw5WgxT7UnswueFtyWxAqQCZv4h9DfcDkr+kn jimbo@nixos

View file

@ -0,0 +1,7 @@
{ pkgs, ... }:
{
boot = {
kernelPackages = pkgs.linuxPackages_latest;
kernel.sysctl."vm.max_map_count" = 2147483642;
};
}

View file

@ -0,0 +1,28 @@
{ config, ... }:
{
imports = [
./hardware
./boot
# Apps and programs
../../../modules/system
../../../modules/system/accounts
../../../modules/system/desktop
../../../modules/system/programs
../../../modules/system/services
# Devices and hardware
../../../modules/system/devices
../../../modules/system/devices/boot/systemd
../../../modules/system/devices/networking/wireless
../../../modules/system/devices/networking/firewall/pc
../../../modules/system/devices/networking/wireguard/pc
# Extras
../../../overlays
../../../variables
];
networking.hostName = "redmond";
networking.wireguard.interfaces."${config.ips.wgInt}".ips = [ "${config.ips.wgSpan}.20/24" ];
}

View file

@ -1,32 +1,24 @@
{ config, lib, pkgs, modulesPath, ... }: { { config, lib, pkgs, modulesPath, ... }:
{
imports = [ imports = [
(modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
]; ];
# Set all boot options
boot = { boot = {
# Set a kernel version and load/blacklist drivers
kernelPackages = pkgs.linuxPackages_zen;
blacklistedKernelModules = [
"pcspkr"
];
kernel.sysctl."vm.max_map_count" = 2147483642;
initrd = { initrd = {
availableKernelModules = [ availableKernelModules = [
"nvme"
"xhci_pci" "xhci_pci"
"usbhid" "ahci"
"usb_storage" "ehci_pci"
"sd_mod" "sd_mod"
"sr_mod"
"sdhci_pci" "sdhci_pci"
]; "rtsx_usb_sdmmc"
kernelModules = [
"kvm-amd"
]; ];
}; };
kernelModules = [ "kvm-amd" ];
}; };
# Mount everything as necessary
fileSystems = { fileSystems = {
"/" = { "/" = {
device = "/dev/disk/by-uuid/c0fe8419-88f9-48a0-8c5b-acd4c11f8037"; device = "/dev/disk/by-uuid/c0fe8419-88f9-48a0-8c5b-acd4c11f8037";
@ -37,11 +29,14 @@
fsType = "vfat"; fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ]; options = [ "fmask=0022" "dmask=0022" ];
}; };
"/home/jimbo/JimboNFS" = {
device = "${config.ips.wgSpan}.1:/export/JimboNFS";
fsType = "nfs4";
options = ["x-systemd.automount" "_netdev" "nofail" "noauto"];
};
}; };
# Enables DHCP on each ethernet and wireless interface.
networking.useDHCP = lib.mkDefault true; networking.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
} }

View file

@ -0,0 +1,28 @@
{ config, pkgs, nur, ... }:
{
imports = [
# Apps and programs
../../../modules/home
../../../modules/home/users
../../../modules/home/files
../../../modules/home/settings
../../../modules/home/programs
../../../modules/home/programs/misc/remote-desktop
../../../modules/home/sway
../../../modules/home/utils
# Misc
../../../overlays
../../../variables
../../../variables/look/colors/purple
# Imports
nur.nixosModules.nur
];
home.packages = with pkgs; [
alsa-utils
];
wayland.windowManager.sway.config.output.${config.displays.dI}.scale = "1.3";
}

View file

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK+L723mCLy9/9UAXwkY3+06Oq22dOj+lDnA0lMLbrsR

View file

@ -0,0 +1,7 @@
{ pkgs, ... }:
{
boot = {
kernelPackages = pkgs.linuxPackages_latest;
kernel.sysctl."vm.max_map_count" = 2147483642;
};
}

View file

@ -0,0 +1,32 @@
{ config, lib, hardware, ... }:
{
imports = [
./hardware
./boot
# Apps and programs
../../../modules/system
../../../modules/system/accounts
../../../modules/system/desktop
../../../modules/system/programs
../../../modules/system/services
# Devices and hardware
../../../modules/system/devices
../../../modules/system/devices/boot/extlinux
../../../modules/system/devices/networking/wireless
../../../modules/system/devices/networking/firewall/pc
../../../modules/system/devices/networking/wireguard/pc
# Extras
../../../overlays
../../../variables
# Imports
hardware.nixosModules.pine64-pinebook-pro
];
networking.hostName = "shuttleworth";
hardware.opengl.driSupport32Bit = lib.mkForce false;
networking.wireguard.interfaces."${config.ips.wgInt}".ips = [ "${config.ips.wgSpan}.17/24" ];
}

View file

@ -1,5 +1,4 @@
{ config, outputs, lib, pkgs, modulesPath, ... }: { config, lib, pkgs, modulesPath, ... }:
{ {
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
@ -28,12 +27,7 @@
fsType = "btrfs"; fsType = "btrfs";
}; };
"/home/jimbo/JimboNFS" = { "/home/jimbo/JimboNFS" = {
device = "${outputs.ips.wgSpan}.1:/export/JimboNFS"; device = "${config.ips.wgSpan}.1:/export/JimboNFS";
fsType = "nfs4";
options = ["x-systemd.automount" "_netdev" "nofail" "noauto"];
};
"/home/jimbo/FreecornNFS" = {
device = "${outputs.secrets.cornIP}:/export/freecornNFS";
fsType = "nfs4"; fsType = "nfs4";
options = ["x-systemd.automount" "_netdev" "nofail" "noauto"]; options = ["x-systemd.automount" "_netdev" "nofail" "noauto"];
}; };

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

@ -0,0 +1,6 @@
{ ... }:
{
programs.home-manager.enable = true;
nixpkgs.config.allowUnfree = true;
home.stateVersion = "24.05";
}

View file

Before

Width:  |  Height:  |  Size: 314 KiB

After

Width:  |  Height:  |  Size: 314 KiB

View file

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 820 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 570 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 470 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

View file

Before

Width:  |  Height:  |  Size: 2 MiB

After

Width:  |  Height:  |  Size: 2 MiB

View file

Before

Width:  |  Height:  |  Size: 2.3 MiB

After

Width:  |  Height:  |  Size: 2.3 MiB

View file

Before

Width:  |  Height:  |  Size: 1.9 MiB

After

Width:  |  Height:  |  Size: 1.9 MiB

View file

@ -0,0 +1,22 @@
{ pkgs, config, ... }: {
home.file = {
"VMs" = {
source = config.lib.file.mkOutOfStoreSymlink "/etc/libvirt/VMs";
};
".face" = {
source = ./assets/pfp.png;
};
".assets/wallpapers" = {
source = ./assets/wallpapers/${config.look.colors.wallpapers};
};
".assets/lockscreen" = {
source = ./assets/lockscreens/holymoly;
};
".icons/default" = {
source = "${pkgs.simp1e-cursors}/share/icons/Simp1e-Dark";
};
".alsoftrc" = {
text = ''drivers=pulse'';
};
};
}

View file

@ -0,0 +1,8 @@
{ ... }:
{
imports = [
./gui
./terminal
./misc
];
}

View file

@ -0,0 +1,13 @@
{ ... }:
{
imports = [
./easyeffects
./foot
./librewolf
./mako
./mangohud
./mpv
./pcmanfm-qt
./rofi
];
}

View file

@ -0,0 +1,294 @@
{
"output": {
"blocklist": [],
"crystalizer#0": {
"band0": {
"bypass": false,
"intensity": 0.0,
"mute": false
},
"band1": {
"bypass": false,
"intensity": -1.0,
"mute": false
},
"band2": {
"bypass": false,
"intensity": -2.0,
"mute": false
},
"band3": {
"bypass": false,
"intensity": -3.0,
"mute": false
},
"band4": {
"bypass": false,
"intensity": -4.0,
"mute": false
},
"band5": {
"bypass": false,
"intensity": -5.0,
"mute": false
},
"band6": {
"bypass": false,
"intensity": -6.0,
"mute": false
},
"band7": {
"bypass": false,
"intensity": -7.0,
"mute": false
},
"band8": {
"bypass": false,
"intensity": -8.0,
"mute": false
},
"band9": {
"bypass": false,
"intensity": -9.0,
"mute": false
},
"band10": {
"bypass": false,
"intensity": -10.0,
"mute": false
},
"band11": {
"bypass": false,
"intensity": -11.0,
"mute": false
},
"band12": {
"bypass": false,
"intensity": -12.0,
"mute": false
},
"bypass": false,
"input-gain": 0.0,
"output-gain": 0.0
},
"equalizer#0": {
"balance": 0.0,
"bypass": false,
"input-gain": 0.0,
"left": {
"band0": {
"frequency": 32.0,
"gain": 1.1,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band1": {
"frequency": 64.0,
"gain": 1.16,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band2": {
"frequency": 125.0,
"gain": 3.33,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band3": {
"frequency": 250.0,
"gain": 1.53,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band4": {
"frequency": 500.0,
"gain": -1.83,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band5": {
"frequency": 1000.0,
"gain": -0.58,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band6": {
"frequency": 2000.0,
"gain": 1.42,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band7": {
"frequency": 4000.0,
"gain": 4.73,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band8": {
"frequency": 16000.0,
"gain": 7.62,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band9": {
"frequency": 156.38,
"gain": 2.84,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
}
},
"mode": "IIR",
"num-bands": 10,
"output-gain": 0.0,
"pitch-left": 0.0,
"pitch-right": 0.0,
"right": {
"band0": {
"frequency": 32.0,
"gain": 1.1,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band1": {
"frequency": 64.0,
"gain": 1.16,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band2": {
"frequency": 125.0,
"gain": 3.33,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band3": {
"frequency": 250.0,
"gain": 1.53,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band4": {
"frequency": 500.0,
"gain": -1.83,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band5": {
"frequency": 1000.0,
"gain": -0.58,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band6": {
"frequency": 2000.0,
"gain": 1.42,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band7": {
"frequency": 4000.0,
"gain": 4.73,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band8": {
"frequency": 16000.0,
"gain": 7.62,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
},
"band9": {
"frequency": 156.38,
"gain": 2.84,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell"
}
},
"split-channels": false
},
"plugins_order": [
"equalizer#0",
"crystalizer#0"
]
}
}

View file

@ -0,0 +1,11 @@
{ pkgs, ... }:
{
home = {
packages = with pkgs; [
easyeffects
];
file = {
".config/easyeffects/output/JimHeadphones.json".source = ./JimHeadphones.json;
};
};
}

View file

@ -1,19 +1,19 @@
{outputs, ...}: { { config, ... }:
# Enable a terminal emulator {
programs.foot = { programs.foot = {
enable = true; enable = true;
server.enable = false; server.enable = false;
settings = { settings = {
main = { main = {
term = "xterm-256color"; term = "xterm-256color";
font = "${outputs.look.fonts.nerd}:size=14.7"; font = "${config.look.fonts.nerd}:size=14.7";
}; };
cursor = { cursor = {
style = "beam"; style = "beam";
}; };
colors = { colors = {
alpha = "0.65"; alpha = "0.85";
background = "${outputs.look.colors.dark}"; background = "${config.look.colors.dark}";
regular0 = "3f3f3f"; regular0 = "3f3f3f";
regular1 = "cc0000"; regular1 = "cc0000";
regular2 = "4e9a06"; regular2 = "4e9a06";

View file

@ -1,30 +1,31 @@
{pkgs, config, outputs, ...}: let { pkgs, config, ... }:
# FireFox colors let
# FireFox colors, based on https://github.com/Dook97/firefox-qutebrowser-userchrome
themeJim = '' themeJim = ''
:root { :root {
--tab-active-bg-color: #${outputs.look.colors.prime}; --tab-active-bg-color: #${config.look.colors.prime};
--tab-hover-bg-color: #${outputs.look.colors.accent}; --tab-hover-bg-color: #${config.look.colors.accent};
--tab-inactive-bg-color: #${outputs.look.colors.dark}; --tab-inactive-bg-color: #${config.look.colors.dark};
--tab-active-fg-fallback-color: #FFFFFF; --tab-active-fg-fallback-color: #FFFFFF;
--tab-inactive-fg-fallback-color: #${outputs.look.colors.text}; --tab-inactive-fg-fallback-color: #${config.look.colors.text};
--urlbar-focused-bg-color: #${outputs.look.colors.dark}; --urlbar-focused-bg-color: #${config.look.colors.dark};
--urlbar-not-focused-bg-color: #${outputs.look.colors.dark}; --urlbar-not-focused-bg-color: #${config.look.colors.dark};
--toolbar-bgcolor: #${outputs.look.colors.dark} !important; --toolbar-bgcolor: #${config.look.colors.dark} !important;
''; '';
themeAlt = '' themeAlt = ''
:root { :root {
--tab-active-bg-color: #${outputs.look.colors.dark}; --tab-active-bg-color: #${config.look.colors.dark};
--tab-hover-bg-color: #${outputs.look.colors.accent}; --tab-hover-bg-color: #${config.look.colors.accent};
--tab-inactive-bg-color: #${outputs.look.colors.prime}; --tab-inactive-bg-color: #${config.look.colors.prime};
--tab-active-fg-fallback-color: #${outputs.look.colors.text}; --tab-active-fg-fallback-color: #${config.look.colors.text};
--tab-inactive-fg-fallback-color: #FFFFFF; --tab-inactive-fg-fallback-color: #FFFFFF;
--urlbar-focused-bg-color: #${outputs.look.colors.prime}; --urlbar-focused-bg-color: #${config.look.colors.prime};
--urlbar-not-focused-bg-color: #${outputs.look.colors.prime}; --urlbar-not-focused-bg-color: #${config.look.colors.prime};
--toolbar-bgcolor: #${outputs.look.colors.prime} !important; --toolbar-bgcolor: #${config.look.colors.prime} !important;
''; '';
quteFoxCSS = '' quteFoxCSS = ''
--tab-font: '${outputs.look.fonts.main}'; --tab-font: '${config.look.fonts.main}';
--urlbar-font: '${outputs.look.fonts.main}'; --urlbar-font: '${config.look.fonts.main}';
/* try increasing if you encounter problems */ /* try increasing if you encounter problems */
--urlbar-height-setting: 24px; --urlbar-height-setting: 24px;
@ -335,9 +336,9 @@ in {
}; };
}; };
commonSettings = { commonSettings = {
"font.name.serif.x-western" = "${outputs.look.fonts.main}"; "font.name.serif.x-western" = "${config.look.fonts.main}";
"font.name.sans-serif.x-western" = "${outputs.look.fonts.main}"; "font.name.sans-serif.x-western" = "${config.look.fonts.main}";
"font.name.monospace.x-western" = "${outputs.look.fonts.nerd}"; "font.name.monospace.x-western" = "${config.look.fonts.nerd}";
"general.autoScroll" = true; "general.autoScroll" = true;
"browser.compactmode.show" = true; "browser.compactmode.show" = true;
"browser.uidensity" = 1; "browser.uidensity" = 1;

View file

@ -1,23 +1,22 @@
{pkgs, outputs, ...}: { { pkgs, config, ... }:
# Notification daemon {
services.mako = { services.mako = {
enable = true; enable = true;
borderColor = "#${outputs.look.colors.accent}"; borderColor = "#${config.look.colors.accent}";
backgroundColor = "#${outputs.look.colors.dark}CC"; backgroundColor = "#${config.look.colors.dark}D9";
output = "${outputs.displays.d1}"; output = "${config.displays.d1}";
sort = "+time"; sort = "+time";
layer = "overlay"; layer = "overlay";
padding = "8"; padding = "8";
margin = "0"; margin = "0";
borderSize = outputs.look.border.int; borderSize = config.look.border.int;
maxIconSize = 40; maxIconSize = 40;
defaultTimeout = 6000; defaultTimeout = 6000;
font = "${outputs.look.fonts.main} 12"; font = "${config.look.fonts.main} 12";
anchor = "bottom-right"; anchor = "bottom-right";
extraConfig = "on-button-right=dismiss-all\nouter-margin=10\n[mode=do-not-disturb]\ninvisible=1"; extraConfig = "on-button-right=dismiss-all\nouter-margin=10\n[mode=do-not-disturb]\ninvisible=1";
}; };
# Script to toggle notifications using mako
home.packages = let home.packages = let
makoToggle = pkgs.writeScriptBin "makotoggle" '' makoToggle = pkgs.writeScriptBin "makotoggle" ''
# Run makoctl mode and store the output in a variable # Run makoctl mode and store the output in a variable

View file

@ -1,11 +1,11 @@
{pkgs, ...}: { { pkgs, ... }:
{
home = { home = {
packages = with pkgs; [ packages = with pkgs; [
mangohud mangohud
]; ];
file = let file = {
# Mangohud config file ".config/MangoHud/MangoHud.conf".text = ''
mangoConf = ''
table_columns=2 table_columns=2
frametime=0 frametime=0
legacy_layout=0 legacy_layout=0
@ -24,9 +24,6 @@
gpu_load_change gpu_load_change
frame_timing frame_timing
''; '';
in {
# Mangohud config
".config/MangoHud/MangoHud.conf".text = mangoConf;
}; };
}; };
} }

View file

@ -1,5 +1,5 @@
{ ... }:
{ {
# MPV settings
programs.mpv = { programs.mpv = {
enable = true; enable = true;
config = { config = {

View file

@ -1,12 +1,12 @@
{pkgs, ...}: { { pkgs, ... }:
# Swappy config file {
home = { home = {
packages = with pkgs; [ packages = with pkgs; [
pcmanfm-qt pcmanfm-qt
gnome.file-roller
]; ];
file = let file = {
# File manager config ".config/pcmanfm-qt/default/settings.conf".text = ''
pcmanConf = ''
[Behavior] [Behavior]
BookmarkOpenMethod=current_tab BookmarkOpenMethod=current_tab
ConfirmDelete=true ConfirmDelete=true
@ -53,9 +53,6 @@
SwitchToNewTab=true SwitchToNewTab=true
TabPaths=@Invalid() TabPaths=@Invalid()
''; '';
in {
# PCManFM config
".config/pcmanfm-qt/default/settings.conf".text = pcmanConf;
}; };
}; };
} }

View file

@ -1,10 +1,10 @@
{pkgs, config, outputs, ...}: { { pkgs, config, ... }:
# Enable Rofi {
programs.rofi = { programs.rofi = {
enable = true; enable = true;
package = pkgs.rofi-wayland; package = pkgs.rofi-wayland;
terminal = "foot"; terminal = "foot";
font = "${outputs.look.fonts.main} 14"; font = "${config.look.fonts.main} 14";
theme = let theme = let
inherit (config.lib.formats.rasi) mkLiteral; inherit (config.lib.formats.rasi) mkLiteral;
in { in {
@ -15,24 +15,24 @@
red = mkLiteral "#DC322F"; red = mkLiteral "#DC322F";
background-color = mkLiteral "#00000000"; background-color = mkLiteral "#00000000";
separatorcolor = mkLiteral "#00000000"; separatorcolor = mkLiteral "#00000000";
normal-foreground = mkLiteral "#${outputs.look.colors.text}"; normal-foreground = mkLiteral "#${config.look.colors.text}";
normal-background = mkLiteral "#${outputs.look.colors.dark}1A"; normal-background = mkLiteral "#${config.look.colors.dark}1A";
urgent-foreground = mkLiteral "#${outputs.look.colors.urgent}"; urgent-foreground = mkLiteral "#${config.look.colors.urgent}";
active-foreground = mkLiteral "#${outputs.look.colors.split}"; active-foreground = mkLiteral "#${config.look.colors.split}";
selected-active-foreground = mkLiteral "#${outputs.look.colors.prime}"; selected-active-foreground = mkLiteral "#${config.look.colors.prime}";
background = mkLiteral "#${outputs.look.colors.dark}B3"; background = mkLiteral "#${config.look.colors.dark}D9";
bordercolor = mkLiteral "#${outputs.look.colors.prime}"; bordercolor = mkLiteral "#${config.look.colors.prime}";
selected-normal-foreground = mkLiteral "#FFFFFF"; selected-normal-foreground = mkLiteral "#FFFFFF";
selected-normal-background = mkLiteral "#${outputs.look.colors.prime}80"; selected-normal-background = mkLiteral "#${config.look.colors.prime}80";
border-color = mkLiteral "#${outputs.look.colors.prime}"; border-color = mkLiteral "#${config.look.colors.prime}";
urgent-background = mkLiteral "#${outputs.look.colors.accent}26"; urgent-background = mkLiteral "#${config.look.colors.accent}26";
active-background = mkLiteral "#${outputs.look.colors.accent}26"; active-background = mkLiteral "#${config.look.colors.accent}26";
selected-active-background = mkLiteral "#${outputs.look.colors.split}54"; selected-active-background = mkLiteral "#${config.look.colors.split}54";
}; };
"#window" = { "#window" = {
background-color = mkLiteral "@background"; background-color = mkLiteral "@background";
width = 500; width = 500;
border = mkLiteral "${outputs.look.border.string}"; border = mkLiteral "${config.look.border.string}";
padding = 5; padding = 5;
}; };
"#message" = { "#message" = {
@ -124,7 +124,7 @@
}; };
}; };
home.packages = let home.packages = let
# All my rofi scripts in one file # A script to execute commands with Rofi
rofiScripts = pkgs.writeScriptBin "rofiscripts" '' rofiScripts = pkgs.writeScriptBin "rofiscripts" ''
# Scratchpad function # Scratchpad function
handle_scratchpads() { handle_scratchpads() {
@ -155,13 +155,13 @@
case $RET in case $RET in
Default) swaymsg reload ;; Default) swaymsg reload ;;
Wide) swaymsg " Wide) swaymsg "
output ${outputs.displays.d1} enable pos 1680 0 mode 1680x1050@59.954Hz output ${config.displays.d1} enable pos 1680 0 mode 1680x1050@59.954Hz
output ${outputs.displays.d2} enable pos 0 0 mode 1680x1050@59.954Hz output ${config.displays.d2} enable pos 0 0 mode 1680x1050@59.954Hz
output ${outputs.displays.d3} enable pos 3360 0 transform 0 output ${config.displays.d3} enable pos 3360 0 transform 0
";; ";;
GPU2) swaymsg " GPU2) swaymsg "
output ${outputs.displays.d2} enable pos 1680 0 mode 1920x1080@60Hz output ${config.displays.d2} enable pos 1680 0 mode 1920x1080@60Hz
output ${outputs.displays.d3} enable pos 0 0 transform 0 output ${config.displays.d3} enable pos 0 0 transform 0
";; ";;
esac esac
} }

View file

@ -1,4 +1,5 @@
{pkgs, ...}: { { pkgs, ... }:
{
home.packages = with pkgs; [ home.packages = with pkgs; [
yt-dlp yt-dlp
spotdl spotdl

View file

@ -0,0 +1,7 @@
{ pkgs, lib, config, ... }:
{
home.packages = with pkgs; [
vesktop
fractal
];
}

View file

@ -0,0 +1,9 @@
{ ... }:
{
imports = [
./avtools
./chat
./general
./headless
];
}

View file

@ -0,0 +1,8 @@
{ ... }:
{
imports = [
./launchers
./emulators
./xash3d
];
}

View file

@ -1,10 +1,11 @@
{pkgs, ...}: { { pkgs, lib, config, ... }:
{
home.packages = with pkgs; [ home.packages = with pkgs; [
dolphin-emu dolphin-emu
cemu cemu
ryujinx ryujinx
duckstation duckstation
pcsx2 pcsx2
unstable.lime3ds #lime3ds
]; ];
} }

View file

@ -1,4 +1,5 @@
{pkgs, ...}: { { pkgs, lib, config, ... }:
{
home.packages = with pkgs; [ home.packages = with pkgs; [
steam steam
steam-run steam-run

View file

@ -1,6 +1,6 @@
{pkgs, ...}: { { pkgs, lib, config, ... }:
{
home.packages = with pkgs; [ home.packages = with pkgs; [
xash3d xash3d
hlsdk
]; ];
} }

View file

@ -1,10 +1,9 @@
{pkgs, ...}: { { pkgs, lib, config, ... }:
{
home.packages = with pkgs; [ home.packages = with pkgs; [
imv imv
qbittorrent qbittorrent
libreoffice-fresh libreoffice-fresh
vesktop
fractal
ffmpegthumbnailer ffmpegthumbnailer
thunderbird thunderbird
protonvpn-cli_2 protonvpn-cli_2

View file

@ -0,0 +1,13 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
gotop
tcptrack
p7zip
vimv
dua
pciutils
usbutils
protonvpn-cli_2
];
}

View file

@ -0,0 +1,16 @@
{ pkgs, blender-bin, ... }:
{
imports = [
./obs
];
home.packages = with pkgs; [
krita
inkscape
audacity
blender_4_2
sunvox
];
nixpkgs.overlays = [ blender-bin.overlays.default ];
}

View file

@ -1,5 +1,5 @@
{pkgs, ...}: { { pkgs, lib, config, ... }:
# OBS with plugins {
programs.obs-studio = { programs.obs-studio = {
enable = true; enable = true;
plugins = with pkgs.obs-studio-plugins; [ plugins = with pkgs.obs-studio-plugins; [

View file

@ -1,4 +1,5 @@
{pkgs, ...}: { { pkgs, lib, config, ... }:
{
home.packages = with pkgs; [ home.packages = with pkgs; [
moonlight-qt moonlight-qt
rustdesk-flutter rustdesk-flutter

View file

@ -1,9 +1,9 @@
{pkgs, ...}: { { pkgs, lib, config, ... }:
{
home.packages = with pkgs; [ home.packages = with pkgs; [
remmina remmina
freerdp freerdp
globalprotect-openconnect
python3
zoom-us zoom-us
globalprotect-openconnect
]; ];
} }

View file

@ -0,0 +1,11 @@
{ ... }:
{
imports = [
./fastfetch
./git
./ncmpcpp
./neovim
./ranger
./tmux
];
}

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