Compare commits

..

No commits in common. "0d8a07bd54b417b41f2882148854b4514e37e91a" and "4d7bd7ecfa72601a7367ae3d31fcc1e41cfd5ea0" have entirely different histories.

306 changed files with 2998 additions and 3556 deletions

2
.gitattributes vendored
View file

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

View file

@ -1,39 +1,33 @@
## Jimbo's Nix Systems
## My Nix files, now organized in a flake.
Thanks for taking a look at my Nix* flake!
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.
Thanks for taking a look at my Nix* configs!
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.
### Installation
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.
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.
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 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 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.
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.
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.
### Usage
My config uses these tools:
``Sway`` - Window manager / Desktop
``ZSH`` - Primary shell
``Foot`` - Terminal emulator
``Rofi`` - App launcher and menu system
Sway - Window manager / Desktop
Foot - Terminal emulator
Rofi - App launcher and menu system
ZSH - Primary shell
I have defined shell aliases in ZSH for rebuilding different parts of Nix, they are as follows:
I have made shell aliases in ZSH for rebuilding the system. They are as follows:
`flakedate` - Update the flake.lock, which renews the sources of nixpkgs. This is needed to update the system.
`sysswitch` - Switch the system profile.
`homeswitch` = Switch the user's home-manager profile.
`nixswitch` = Switch both user and system profile.
`nixswitch` = Switch to new config for both user and system.
`nixdate` = Same as before, but updating flake.nix before doing so. This is essentially a full system update.
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.
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.
For my use, unlocking secrets can be done with this command:
``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 ❤️
![image](./preview.png)

4
extras/cmd.nix Normal file
View file

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

6
extras/displays.nix Normal file
View file

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

11
extras/ips.nix Normal file
View file

@ -0,0 +1,11 @@
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";
}

21
extras/look.nix Normal file
View file

@ -0,0 +1,21 @@
{
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;
};
}

17
extras/overlays.nix Normal file
View file

@ -0,0 +1,17 @@
{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;
};
});
}

5
extras/pkgs/default.nix Normal file
View file

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

View file

@ -0,0 +1,72 @@
{
# 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 = "";
}

BIN
extras/secrets.nix Normal file

Binary file not shown.

21
extras/workspaces.nix Normal file
View file

@ -0,0 +1,21 @@
{
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,30 +33,6 @@
"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": {
"inputs": {
"nixpkgs": [
@ -147,20 +123,6 @@
"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": {
"inputs": {
"systems": "systems"
@ -236,27 +198,6 @@
}
},
"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": {
"nixpkgs": [
"nixpkgs"
@ -277,28 +218,6 @@
"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": {
"inputs": {
"crane": "crane",
@ -369,29 +288,6 @@
"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": {
"locked": {
"lastModified": 1722221733,
@ -470,17 +366,18 @@
},
"nixpkgs_4": {
"locked": {
"lastModified": 1728740863,
"narHash": "sha256-u+rxA79a0lyhG+u+oPBRtTDtzz8kvkc9a6SWSt9ekVc=",
"owner": "NixOS",
"lastModified": 1727540905,
"narHash": "sha256-40J9tW7Y794J7Uw4GwcAKlMxlX2xISBl6IBigo83ih8=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "a3f9ad65a0bf298ed5847629a57808b97e6e8077",
"rev": "fbca5e745367ae7632731639de5c21f29c8744ed",
"type": "github"
},
"original": {
"id": "nixpkgs",
"owner": "nixos",
"ref": "nixos-24.05",
"type": "indirect"
"repo": "nixpkgs",
"type": "github"
}
},
"nur": {
@ -528,9 +425,8 @@
"root": {
"inputs": {
"blender-bin": "blender-bin",
"chaotic": "chaotic",
"hardware": "hardware",
"home-manager": "home-manager_2",
"home-manager": "home-manager",
"lanzaboote": "lanzaboote",
"mailserver": "mailserver",
"minecraft": "minecraft",
@ -613,15 +509,16 @@
"locked": {
"lastModified": 1728492678,
"narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=",
"owner": "NixOS",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7",
"type": "github"
},
"original": {
"id": "nixpkgs",
"owner": "nixos",
"ref": "nixos-unstable",
"type": "indirect"
"repo": "nixpkgs",
"type": "github"
}
},
"utils": {

118
flake.nix
View file

@ -1,91 +1,97 @@
{
description = "Jimbo's systems as a flake";
inputs = {
nixpkgs.url = "nixpkgs/nixos-24.05";
unstable.url = "nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager/release-24.05";
inputs.nixpkgs.follows = "nixpkgs";
};
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
unstable.url = "github:nixos/nixpkgs/nixos-unstable";
nur.url = "github:nix-community/NUR";
chaotic = {
url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
inputs.nixpkgs.follows = "unstable";
};
mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-24.05";
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";
# Secure boot
lanzaboote = {
url = "github:nix-community/lanzaboote/v0.4.1";
inputs.nixpkgs.follows = "nixpkgs";
};
mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-24.05";
minecraft.url = "github:Infinidoge/nix-minecraft";
# Home manager
home-manager = {
url = "github:nix-community/home-manager/release-24.05";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = {
self,
nixpkgs,
unstable,
home-manager,
nur,
chaotic,
mailserver,
blender-bin,
hardware,
lanzaboote,
mailserver,
minecraft,
home-manager,
...
}:
let
mkNix = modules: nixpkgs.lib.nixosSystem {
}@inputs: let
mkNixos = modules: nixpkgs.lib.nixosSystem {
inherit modules;
specialArgs = {
inherit
unstable
chaotic
hardware
lanzaboote
mailserver
minecraft
;
};
specialArgs = { inherit (self) inputs outputs; };
};
mkHome = modules: pkgs: home-manager.lib.homeManagerConfiguration {
inherit modules pkgs;
extraSpecialArgs = {
inherit
unstable
nur
blender-bin
;
};
extraSpecialArgs = { inherit (self) inputs outputs; };
};
in {
# nixos-rebuild switch --flake .#hostname
nixosConfigurations = {
# PCs and Laptops
firefly = mkNix [ ./hosts/firefly/system ];
shuttleworth = mkNix [ ./hosts/shuttleworth/system ];
lacros = mkNix [ ./hosts/lacros/system ];
redmond = mkNix [ ./hosts/redmond/system ];
# Your custom packages and modifications, exported as overlays
overlays = import ./extras/overlays.nix { inherit inputs; };
# Servers
cyberspark = mkNix [ ./hosts/cyberspark/system ];
bomberman = mkNix [ ./hosts/bomberman/system ];
# 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 = {
JimDesktop = mkNixos [
./system/hosts/JimDesktop/configuration.nix
lanzaboote.nixosModules.lanzaboote
];
JimServer = mkNixos [
./system/hosts/JimServer/configuration.nix
mailserver.nixosModule
];
JimPine = mkNixos [
./system/hosts/JimPine/configuration.nix
hardware.nixosModules.pine64-pinebook-pro
];
};
# home-manager switch --flake .#username@hostname
# Home-manager configuration: 'home-manager --flake .#username@hostname'
homeConfigurations = {
"jimbo@firefly" = mkHome [ ./hosts/firefly/home ] nixpkgs.legacyPackages.x86_64-linux;
"jimbo@shuttleworth" = mkHome [ ./hosts/shuttleworth/home ] nixpkgs.legacyPackages.aarch64-linux;
"jimbo@lacros" = mkHome [ ./hosts/lacros/home ] nixpkgs.legacyPackages.x86_64-linux;
"jimbo@redmond" = mkHome [ ./hosts/redmond/home ] nixpkgs.legacyPackages.x86_64-linux;
"jimbo@JimDesktop" = mkHome [
./home/hosts/JimDesktop/home.nix
nur.nixosModules.nur
] nixpkgs.legacyPackages.x86_64-linux;
"jimbo@cyberspark" = mkHome [ ./hosts/cyberspark/home ] nixpkgs.legacyPackages.x86_64-linux;
"jimbo@bomberman" = mkHome [ ./hosts/bomberman/home ] nixpkgs.legacyPackages.aarch64-linux;
"jimbo@JimServer" = mkHome [
./home/hosts/JimServer/home.nix
] 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

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 86 KiB

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

Before

Width:  |  Height:  |  Size: 314 KiB

After

Width:  |  Height:  |  Size: 314 KiB

41
home/base.nix Normal file
View file

@ -0,0 +1,41 @@
# 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

@ -0,0 +1,47 @@
{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

@ -0,0 +1,40 @@
{
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

@ -0,0 +1,43 @@
{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

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

View file

@ -0,0 +1,14 @@
{
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,5 +1,4 @@
{ pkgs, ... }:
{
{pkgs, ...}: {
home.packages = with pkgs; [
yt-dlp
spotdl

View file

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

View file

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

View file

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

15
home/misc/guifiles.nix Normal file
View file

@ -0,0 +1,15 @@
{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";
};
};
}

9
home/misc/production.nix Normal file
View file

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

View file

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

View file

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

View file

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

30
home/misc/variables.nix Normal file
View file

@ -0,0 +1,30 @@
{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,6 +1,6 @@
{ pkgs, lib, config, ... }:
{
{pkgs, ...}: {
home.packages = with pkgs; [
xash3d
hlsdk
];
}

View file

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

View file

@ -1,9 +1,9 @@
{ pkgs, config, ... }:
{
{pkgs, outputs, ...}: {
# Define GTK theme settings
gtk = {
enable = true;
font = {
name = "${config.look.fonts.main}";
name = "${outputs.look.fonts.main}";
size = 11;
};
theme = {
@ -16,7 +16,7 @@
};
};
iconTheme = {
package = pkgs.papirus-icon-theme.override { color = "${config.look.colors.folder}"; };
package = pkgs.papirus-icon-theme.override {color = "indigo";};
name = "Papirus-Dark";
};
cursorTheme = {
@ -24,6 +24,7 @@
name = "Simp1e-Dark";
};
# GTK app bookmarks
gtk3 = {
bookmarks = [
# Local
@ -33,7 +34,16 @@
"file:///home/jimbo/Pictures/Screenshots"
"file:///home/jimbo/VMs"
# Remote
"file:///home/jimbo/JimboNFS/Downloads"
"file:///home/jimbo/JimboNFS/Documents"
"file:///home/jimbo/JimboNFS/Music"
"file:///home/jimbo/JimboNFS/Photos"
"file:///home/jimbo/JimboNFS/Videos"
"file:///home/jimbo/JimboNFS/Projects"
# More important stuff
"file:///home/jimbo/JimboNFS/School"
"file:///etc/nixos"
];

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

19
home/programs/swappy.nix Normal file
View file

@ -0,0 +1,19 @@
{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

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

View file

@ -1,22 +1,23 @@
{ pkgs, config, ... }:
{
{pkgs, outputs, ...}: {
# Notification daemon
services.mako = {
enable = true;
borderColor = "#${config.look.colors.accent}";
backgroundColor = "#${config.look.colors.dark}D9";
output = "${config.displays.d1}";
borderColor = "#${outputs.look.colors.accent}";
backgroundColor = "#${outputs.look.colors.dark}CC";
output = "${outputs.displays.d1}";
sort = "+time";
layer = "overlay";
padding = "8";
margin = "0";
borderSize = config.look.border.int;
borderSize = outputs.look.border.int;
maxIconSize = 40;
defaultTimeout = 6000;
font = "${config.look.fonts.main} 12";
font = "${outputs.look.fonts.main} 12";
anchor = "bottom-right";
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
makoToggle = pkgs.writeScriptBin "makotoggle" ''
# Run makoctl mode and store the output in a variable

View file

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

View file

@ -1,5 +1,5 @@
{ ... }:
{
# Mount as user with udisk2
services.udiskie = {
enable = true;
automount = false;

View file

@ -1,7 +1,8 @@
{ pkgs, ... }:
{
{config, pkgs, ...}: {
# Enable Sway and write some scripts
wayland.windowManager.sway = {
config = {
# Use Waybar rather than Sway's
bars = [{command = "waybar";}];
startup = [

View file

@ -1,31 +1,31 @@
{ config, ... }:
{
{config, pkgs, outputs, ...}: {
wayland.windowManager.sway = {
config = {
# Define monitors
output = {
${config.displays.d1} = {
${outputs.displays.d1} = {
pos = "1920 405";
mode = "1920x1080@143.980Hz";
max_render_time = "3";
bg = "~/.assets/wallpapers/1.png fill";
bg = "~/.wallpapers/1.png fill";
adaptive_sync = "on";
#tearing_allowed = "1";
};
${config.displays.d2} = {
${outputs.displays.d2} = {
pos = "0 405";
mode = "1920x1080@60Hz";
max_render_time = "3";
bg = "~/.assets/wallpapers/2.png fill";
bg = "~/.wallpapers/2.png fill";
};
${config.displays.d3} = {
${outputs.displays.d3} = {
pos = "3840 0";
mode = "1680x1050@59.883Hz";
transform = "270";
max_render_time = "3";
bg = "~/.assets/wallpapers/3.png fill";
bg = "~/.wallpapers/3.png fill";
};
"*" = {
bg = "~/.assets/wallpapers/1.png fill";
bg = "~/.wallpapers/1.png fill";
};
};

269
home/sway/hotkeys.nix Normal file
View file

@ -0,0 +1,269 @@
{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,33 +1,33 @@
{ config, ... }:
{
{config, pkgs, outputs, ...}: {
# Enable Sway and write some scripts
wayland.windowManager.sway = {
config = {
# Assign workspaces to config
# Assign workspaces to outputs
workspaceOutputAssign = let
workspaces1 = [
"${config.ws.w0}"
"${config.ws.w1}"
"${config.ws.w2}"
"${config.ws.w3}"
"${config.ws.w1a}"
"${config.ws.w2a}"
"${config.ws.w3a}"
"${outputs.ws.w0}"
"${outputs.ws.w1}"
"${outputs.ws.w2}"
"${outputs.ws.w3}"
"${outputs.ws.w1a}"
"${outputs.ws.w2a}"
"${outputs.ws.w3a}"
];
workspaces2 = [
"${config.ws.w4}"
"${config.ws.w5}"
"${config.ws.w6}"
"${config.ws.w4a}"
"${config.ws.w5a}"
"${config.ws.w6a}"
"${outputs.ws.w4}"
"${outputs.ws.w5}"
"${outputs.ws.w6}"
"${outputs.ws.w4a}"
"${outputs.ws.w5a}"
"${outputs.ws.w6a}"
];
workspaces3 = [
"${config.ws.w7}"
"${config.ws.w8}"
"${config.ws.w9}"
"${config.ws.w7a}"
"${config.ws.w8a}"
"${config.ws.w9a}"
"${outputs.ws.w7}"
"${outputs.ws.w8}"
"${outputs.ws.w9}"
"${outputs.ws.w7a}"
"${outputs.ws.w8a}"
"${outputs.ws.w9a}"
];
assign = output: workspaces:
map (workspace: {
@ -36,13 +36,13 @@
})
workspaces;
in
(assign "${config.displays.d1}" workspaces1) ++
(assign "${config.displays.d2}" workspaces2) ++
(assign "${config.displays.d3}" workspaces3);
(assign "${outputs.displays.d1}" workspaces1) ++
(assign "${outputs.displays.d2}" workspaces2) ++
(assign "${outputs.displays.d3}" workspaces3);
# Rules
window = {
border = config.look.border.int;
border = outputs.look.border.int;
titlebar = false;
commands = [
# Scratchpads
@ -76,7 +76,7 @@
# Give apps that don't have them borders
{
criteria = {con_mark = "borderless";};
command = ''border pixel ${config.look.border.string}'';
command = ''border pixel ${outputs.look.border.string}'';
}
{
criteria = {app_id = "com.github.wwmm.easyeffects";};
@ -111,20 +111,20 @@
];
};
assigns = {
# Broconfig.wsers
"${config.ws.w1}" = [{app_id = "JimBrowser";}];
"${config.ws.w1a}" = [{app_id = "AltBrowser";}];
# Brooutputs.wsers
"${outputs.ws.w1}" = [{app_id = "JimBrooutputs.wser";}];
"${outputs.ws.w1a}" = [{app_id = "AltBrooutputs.wser";}];
# Communication
"${config.ws.w3a}" = [{class = "zoom";}];
"${config.ws.w7}" = [{app_id = "MiscBrowser";} {app_id = "vesktop";} {class = "vesktop";}];
"${config.ws.w8}" = [{app_id = "org.gnome.Fractal";}];
"${config.ws.w9}" = [{app_id = "thunderbird";}];
"${outputs.ws.w3a}" = [{class = "zoom";}];
"${outputs.ws.w7}" = [{app_id = "MiscBrowser";} {app_id = "vesktop";} {class = "vesktop";}];
"${outputs.ws.w8}" = [{app_id = "org.gnome.Fractal";}];
"${outputs.ws.w9}" = [{app_id = "thunderbird";}];
# Else
"${config.ws.w2}" = [{class = "steam";} {app_id = "heroic";}];
"${config.ws.w2a}" = [{app_id = "looking-glass-client";}];
"${config.ws.w4a}" = [{app_id = "com.obsproject.Studio";}];
"${outputs.ws.w2}" = [{class = "steam";} {app_id = "heroic";}];
"${outputs.ws.w2a}" = [{app_id = "looking-glass-client";}];
"${outputs.ws.w4a}" = [{app_id = "com.obsproject.Studio";}];
};
focus.newWindow = "focus";
};

View file

@ -1,24 +1,25 @@
{ config, pkgs, ... }:
{
{config, pkgs, outputs, ...}: {
# Import modules
imports = [
./hardware
./theme
./hotkeys
./programs
./rules
./autostart
./waybar
./swayshot
./swaylock
#"./swayfx.nix"
./hardware.nix
./theme.nix
./hotkeys.nix
./rules.nix
./autostart.nix
./waybar.nix
./swayshot.nix
];
# Enable Sway and write some scripts
wayland.windowManager.sway = {
enable = true;
package = null;
wrapperFeatures.gtk = true;
checkConfig = false;
extraConfig = ''
default_floating_border pixel ${config.look.border.string}
# Options I can't find in Nix yet
default_floating_border pixel ${outputs.look.border.string}
hide_edge_borders --i3 smart
titlebar_padding 10 1
primary_selection disabled
@ -30,8 +31,8 @@
}}
# Switch to workspace 1
workspace ${config.ws.w7}
workspace ${config.ws.w1}
workspace ${outputs.ws.w7}
workspace ${outputs.ws.w1}
'';
};
}

14
home/sway/swayfx.nix Normal file
View file

@ -0,0 +1,14 @@
{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,14 +1,13 @@
{ pkgs, config, ... }:
let
{config, pkgs, outputs, ...}: let
swayLock = pkgs.writeScriptBin "swaylock" ''
# Set the lock script
lockscript() {
BLANK='#00000000'
CLEAR='#FFFFFF22'
DEFAULT='#${config.look.colors.prime}FF'
DEFAULT='#${outputs.look.colors.prime}FF'
TEXT='#FFFFFFFF'
WRONG='#${config.look.colors.split}FF'
VERIFYING='#${config.look.colors.accent}FF'
WRONG='#${outputs.look.colors.split}FF'
VERIFYING='#${outputs.look.colors.accent}FF'
${pkgs.swaylock-effects}/bin/swaylock -f -e \
--key-hl-color=$VERIFYING \
@ -33,9 +32,9 @@ let
\
--indicator \
--indicator-radius=80 \
--image=~/.assets/lockscreen/lock.png \
--image=~/.wallpapers/lock.png \
--clock \
--font=${config.look.fonts.main} \
--font=${outputs.look.fonts.main} \
--font-size=30 \
--timestr="%I:%M%p" \
--datestr="%a %b %d %Y"

View file

@ -1,10 +1,6 @@
{ pkgs, config, ... }:
{
imports = [
./swappy
];
{pkgs, outputs, ...}: {
home.packages = let
# Use grim and slurp to take screenshots in multiple ways
swayShot = pkgs.writeScriptBin "swayshot" ''
# Swappy
handle_swappy() {
@ -13,7 +9,7 @@
# Capture the screenshot of the selected area and save to a temporary file
selected_area=$(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"'\
| XCURSOR_SIZE=40 slurp -w ${config.look.border.string} -c ${config.look.colors.prime} -B 00000066 -b 00000099)
| XCURSOR_SIZE=40 slurp -w ${outputs.look.border.string} -c ${outputs.look.colors.prime} -B 00000066 -b 00000099)
temp_file=$(mktemp -u).png
grim -g "$selected_area" "$temp_file"

50
home/sway/theme.nix Normal file
View file

@ -0,0 +1,50 @@
{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,5 +1,4 @@
{ pkgs, config, ... }:
{
{pkgs, outputs, ...}: {
programs.waybar = let
swayWorkspacesModule = {
format = "{name}";
@ -27,7 +26,7 @@
format-icons = {
headphone = "󰋋 ";
headset = "󰋋 ";
default = [ " " " " ];
default = [" " " "];
};
on-click = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
on-click-middle = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 100%";
@ -262,7 +261,7 @@
name = "bar1";
position = "top";
layer = "bottom";
output = [ config.displays.d1 "VGA-1" ];
output = [outputs.displays.d1 "VGA-1"];
modules-left = ["sway/workspaces" "sway/window"];
modules-right = [
"pulseaudio"
@ -287,13 +286,13 @@
"sway/scratchpad" = scratchpadModule;
"tray" = trayModule;
"bluetooth" = bluetoothModule;
"network" = networkModule // { interface = "enp*"; };
"network" = networkModule // {interface = "enp*";};
};
display2 = {
name = "bar2";
position = "top";
layer = "bottom";
output = [ config.displays.d2 ];
output = [outputs.displays.d2];
modules-left = ["sway/workspaces" "sway/window"];
modules-right = [
"pulseaudio"
@ -318,7 +317,7 @@
name = "bar3";
position = "top";
layer = "bottom";
output = [ config.displays.d3 ];
output = [outputs.displays.d3];
modules-left = ["sway/workspaces" "sway/window"];
modules-right = [
"pulseaudio"
@ -341,8 +340,8 @@
name = "laptop";
position = "top";
layer = "bottom";
output = [ "eDP-1" "LVDS-1" "DSI-1" "HDMI-A-1" ];
modules-left = [ "sway/workspaces" "sway/window" ];
output = ["eDP-1" "LVDS-1" "DSI-1" "HDMI-A-1"];
modules-left = ["sway/workspaces" "sway/window"];
modules-right = [
"pulseaudio"
"custom/media"
@ -383,12 +382,12 @@
border: 0;
border-radius: 0;
min-height: 0;
font-family: ${config.look.fonts.main}, ${config.look.fonts.nerd};
font-family: ${outputs.look.fonts.main}, ${outputs.look.fonts.nerd};
font-size: 15.5px;
color: #${config.look.colors.text};
color: #${outputs.look.colors.text};
}
#waybar {
background: #${config.look.colors.dark};
background: #${outputs.look.colors.dark};
}
#workspaces {
padding: 0 6px 0 0;
@ -413,15 +412,15 @@
min-width: 20px;
}
#workspaces button.visible {
border-bottom: 3px solid #${config.look.colors.prime};
background: #${config.look.colors.mid};
border-bottom: 3px solid #${outputs.look.colors.prime};
background: #${outputs.look.colors.mid};
}
#workspaces button.urgent {
border-bottom: 3px solid #${config.look.colors.urgent};
border-bottom: 3px solid #${outputs.look.colors.urgent};
}
#workspaces button:hover {
box-shadow: none;
background: #${config.look.colors.light};
background: #${outputs.look.colors.light};
}
#scratchpad {
margin-left: 2px;
@ -457,13 +456,13 @@
color: #888;
}
#custom-weather {
border-bottom: 3px solid #3823C4;
border-bottom: 3px solid #${outputs.look.colors.prime};
}
#custom-weather2 {
border-bottom: 3px solid #c75bd3;
}
#custom-notifs {
border-bottom: 3px solid #3823C4;
border-bottom: 3px solid #${outputs.look.colors.prime};
}
#custom-notifs.disabled {
color: #888;

View file

@ -1,4 +1,3 @@
{ ... }:
{
home = {
username = "jimbo";

View file

@ -1,5 +1,4 @@
{ pkgs, ... }:
{
{pkgs, ...}: {
home = {
file = let
fastConf = ''

8
home/utils/git.nix Normal file
View file

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

View file

@ -1,21 +1,17 @@
{ pkgs, ... }:
{
{pkgs, ...}: {
# Enable NCMPCPP
programs.ncmpcpp = {
enable = true;
settings = {
browser_sort_mode = "name";
user_interface = "alternative";
};
bindings = [
{ key = "h"; command = "volume_down"; }
{ key = "j"; command = "scroll_down"; }
{ key = "k"; command = "scroll_up"; }
{ key = "l"; command = "volume_up"; }
];
};
# Enable Discord Music RPC
services.mpd-discord-rpc.enable = true;
# Allow terminal control of mpd
home.packages = with pkgs; [
mpc-cli
];

View file

@ -1,5 +1,5 @@
{ config, pkgs, ... }:
{
{pkgs, outputs, ...}: {
# Install Neovim and plugins
programs.neovim = {
enable = true;
defaultEditor = true;
@ -85,8 +85,8 @@
let g:airline_theme='onedark'
let g:airline#extensions#tabline#enabled = 1
hi Normal guibg=none ctermbg=235
hi Visual guibg=#${config.look.colors.mid} ctermbg=238
hi Pmenu guibg=#${config.look.colors.mid} ctermbg=238
hi Visual guibg=#${outputs.look.colors.mid} ctermbg=238
hi Pmenu guibg=#${outputs.look.colors.mid} ctermbg=238
hi EndOfBuffer guibg=none ctermbg=235
hi LineNr guibg=none ctermbg=none
lua require'colorizer'.setup()

View file

@ -1,5 +1,5 @@
{ pkgs, ... }:
{
{pkgs, ...}: {
# Enable Ranger
programs.ranger = {
enable = true;
settings = {
@ -100,34 +100,28 @@
'';
};
# Ranger's bookmarks and necessary tools
home = {
file = let
rangerBookmarks = ''
# Local files
h:/home/jimbo/
k:/home/jimbo/Downloads
v:/home/jimbo/Videos
c:/home/jimbo/.config
L:/home/jimbo/.local
D:/mnt
n:/etc/nixos
# Ranger's bookmarks
home.file = let
rangerBookmarks = ''
# Local files
h:/home/jimbo/
k:/home/jimbo/Downloads
v:/home/jimbo/Videos
c:/home/jimbo/.config
L:/home/jimbo/.local
D:/mnt
n:/etc/nixos
# Remote files
j:/home/jimbo/JimboNFS
K:/home/jimbo/JimboNFS/Downloads
p:/home/jimbo/JimboNFS/Photos
P:/home/jimbo/JimboNFS/Projects
V:/home/jimbo/JimboNFS/Videos/Random
m:/home/jimbo/JimboNFS/Music/Synced
s:/home/jimbo/JimboNFS/School
'';
in {
".local/share/ranger/bookmarks".text = rangerBookmarks;
};
packages = with pkgs; [
imagemagick
poppler_utils
];
# Remote files
a:/home/jimbo/JimboNFS
K:/home/jimbo/JimboNFS/Downloads
p:/home/jimbo/JimboNFS/Photos
P:/home/jimbo/JimboNFS/Projects
V:/home/jimbo/JimboNFS/Videos/Random
m:/home/jimbo/JimboNFS/Music
s:/home/jimbo/JimboNFS/School
'';
in {
".local/share/ranger/bookmarks".text = rangerBookmarks;
};
}

View file

@ -1,5 +1,5 @@
{ ... }:
{
# Enable tmux
programs.tmux = {
enable = true;
extraConfig = ''

View file

@ -1,5 +1,4 @@
{ pkgs, ... }:
{
{ pkgs, config, ... }: {
programs.zsh = {
enable = true;
autosuggestion.enable = true;
@ -10,12 +9,6 @@
plugins = ["git"];
};
shellAliases = {
# NixOS aliases
nixclean = "doas nix-store --gc; nix-collect-garbage -d";
nixpurge = "doas nix-collect-garbage --delete-old";
nixoptimize = "doas nix store optimise";
nixscrub = "nixclean; nixpurge; nixoptimize";
# Flake commands
flakedate = "doas nix flake update /etc/nixos";
sysswitch = "doas nixos-rebuild switch --flake /etc/nixos";
@ -23,6 +16,11 @@
nixswitch = "sysswitch; homeswitch";
nixdate = "flakedate && sysswitch; homeswitch";
# NixOS aliases
nixclean = "doas nix-store --gc; nix-collect-garbage -d";
nixpurge = "doas nix-collect-garbage --delete-old";
nixoptimize = "doas nix store optimise";
# Shortcut aliases
neo = "clear && fastfetch";
ip = "ip -c";

View file

@ -1,19 +0,0 @@
{ ... }:
{
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

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

View file

@ -1,28 +0,0 @@
{ 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

@ -1,61 +0,0 @@
{ 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

@ -1,19 +0,0 @@
{ ... }:
{
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

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

View file

@ -1,25 +0,0 @@
{ ... }:
{
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

@ -1,130 +0,0 @@
{ 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

@ -1,27 +0,0 @@
{ 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

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

View file

@ -1,50 +0,0 @@
{ 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

@ -1,37 +0,0 @@
{ 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,22 +0,0 @@
{ 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

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

View file

@ -1,17 +0,0 @@
{ ... }:
{
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

@ -1,34 +0,0 @@
{ 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

@ -1,63 +0,0 @@
{ 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

@ -1,24 +0,0 @@
{ 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

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

View file

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

View file

@ -1,28 +0,0 @@
{ 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,28 +0,0 @@
{ 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

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

View file

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

View file

@ -1,32 +0,0 @@
{ 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,6 +0,0 @@
{ ... }:
{
programs.home-manager.enable = true;
nixpkgs.config.allowUnfree = true;
home.stateVersion = "24.05";
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 820 KiB

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