refined for my use
38
.sops.yaml
|
@ -1,46 +1,16 @@
|
||||||
keys:
|
keys:
|
||||||
# Users
|
# Users
|
||||||
- &users:
|
- &users:
|
||||||
- &misterio 7088C7421873E0DB97FF17C2245CAB70B4C225E9
|
- &gburd 6423C518273734713931CB331C4814F03CA7C161
|
||||||
# Hosts
|
# Hosts
|
||||||
- &hosts:
|
- &hosts:
|
||||||
- &atlas age1hm5lf4qk84r4wh00atn6hpts7mpdx80adq26wht2e5qh9ewvhyaszfv82d
|
- &loki age1udt7tgf8pa0r278z6xwrzndg5w9jyvph8p0nycpqw3d39aal5u6skfv556
|
||||||
- &merope age1709qfrwglm75v5x8lpuhryt83k6p6c90npplzzec6a5w8ct93ejscpqpc3
|
|
||||||
- &pleione age1j9ld6ey62hqd33xkyd2fg9362k6xhm5gavsrpsfalwpcs8smxfdqpk84a2
|
|
||||||
- &maia age1dn7pkareh83k8el2yt4dmdfdzn7f45fuc785cnnxgzf3h4r5gqhqd4l93h
|
|
||||||
- &alcyone age1uxvuygmvwpfjrd9d3ulg6ln8dgvaw4l2c90mw0tr72qg3n8vd9ns3dm000
|
|
||||||
- &celaeno age1gxhy9eq38xfplay0kvkeyvsg96g0c4p6rkhajkrj8nc9dswdzqhssgvns0
|
|
||||||
- &electra age1n06f4dcslh8xq686z2fa9ddr3yg5yzj87p727896xsm8xvusdv6qan0grl
|
|
||||||
|
|
||||||
creation_rules:
|
creation_rules:
|
||||||
- path_regex: hosts/celaeno/secrets.ya?ml$
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *celaeno
|
|
||||||
pgp:
|
|
||||||
- *misterio
|
|
||||||
- path_regex: hosts/alcyone/secrets.ya?ml$
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *alcyone
|
|
||||||
pgp:
|
|
||||||
- *misterio
|
|
||||||
- path_regex: hosts/merope/secrets.ya?ml$
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *merope
|
|
||||||
pgp:
|
|
||||||
- *misterio
|
|
||||||
|
|
||||||
- path_regex: hosts/common/secrets.ya?ml$
|
- path_regex: hosts/common/secrets.ya?ml$
|
||||||
key_groups:
|
key_groups:
|
||||||
- age:
|
- age:
|
||||||
- *atlas
|
- *loki
|
||||||
- *merope
|
|
||||||
- *pleione
|
|
||||||
- *maia
|
|
||||||
- *alcyone
|
|
||||||
- *celaeno
|
|
||||||
- *electra
|
|
||||||
pgp:
|
pgp:
|
||||||
- *misterio
|
- *gburd
|
||||||
|
|
11
NOTES
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
* Yubikeys are great, if you use them correctly
|
||||||
|
https://www.procustodibus.com/blog/2023/04/how-to-set-up-a-yubikey/
|
||||||
|
* generate age public key from host's existing SSH keypair
|
||||||
|
nix-shell -p ssh-to-age --run 'cat /etc/ssh/ssh_host_ed25519_key.pub | ssh-to-age'
|
||||||
|
* trigger first encryption of a secrets file
|
||||||
|
EDITOR=vi sops --config .sops.yaml --encrypt --in-place hosts/common/secrets.yaml
|
||||||
|
* edit secrets in that file later
|
||||||
|
|
||||||
|
sudo nixos-rebuild switch --flake .#my-hostname
|
||||||
|
-------
|
||||||
|
services.pcscd.enable = true;
|
19
README.md
|
@ -4,19 +4,6 @@
|
||||||
|
|
||||||
Here's my NixOS/home-manager config files. Requires [Nix flakes](https://nixos.wiki/wiki/Flakes).
|
Here's my NixOS/home-manager config files. Requires [Nix flakes](https://nixos.wiki/wiki/Flakes).
|
||||||
|
|
||||||
**Highlights**:
|
|
||||||
|
|
||||||
- Multiple **NixOS configurations**, including **desktop**, **laptop**, **server**
|
|
||||||
- **Opt-in persistence** through impermanence + blank snapshotting
|
|
||||||
- **Encrypted** single **BTRFS** partition
|
|
||||||
- Fully **declarative** **self-hosted** stuff
|
|
||||||
- Deployment **secrets** using **sops-nix**
|
|
||||||
- **Mesh networked** hosts with **tailscale** and **headscale**
|
|
||||||
- Flexible **Home Manager** Configs through **feature flags**
|
|
||||||
- Extensively configured wayland environments (**sway** and **hyprland**) and editor (**neovim**)
|
|
||||||
- **Declarative** **themes** and **wallpapers** with **nix-colors**
|
|
||||||
- **Hydra CI/CD server and binary cache** that uses the **desktops as remote builders**
|
|
||||||
|
|
||||||
## Structure
|
## Structure
|
||||||
|
|
||||||
- `flake.nix`: Entrypoint for hosts and home configurations. Also exposes a
|
- `flake.nix`: Entrypoint for hosts and home configurations. Also exposes a
|
||||||
|
@ -42,10 +29,6 @@ Here's my NixOS/home-manager config files. Requires [Nix flakes](https://nixos.w
|
||||||
|
|
||||||
## About the installation
|
## About the installation
|
||||||
|
|
||||||
All my computers use a single btrfs (encrypted on all except headless systems)
|
|
||||||
partition, with subvolumes for `/nix`, a `/persist` directory (which I opt in
|
|
||||||
using `impermanence`), swap file, and a root subvolume (cleared on every boot).
|
|
||||||
|
|
||||||
Home-manager is used in a standalone way, and because of opt-in persistence is
|
Home-manager is used in a standalone way, and because of opt-in persistence is
|
||||||
activated on every boot with `loginShellInit`.
|
activated on every boot with `loginShellInit`.
|
||||||
|
|
||||||
|
@ -87,8 +70,6 @@ signing, as well as for SSH'ing around.
|
||||||
|
|
||||||
Most relevant user apps daily drivers:
|
Most relevant user apps daily drivers:
|
||||||
|
|
||||||
- hyprland + swayidle + swaylock
|
|
||||||
- waybar
|
|
||||||
- neovim
|
- neovim
|
||||||
- fish + starship
|
- fish + starship
|
||||||
- kitty
|
- kitty
|
||||||
|
|
85
_flake.nix
|
@ -1,85 +0,0 @@
|
||||||
{
|
|
||||||
description = "Your new nix config";
|
|
||||||
|
|
||||||
inputs = {
|
|
||||||
# Nixpkgs
|
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-23.05";
|
|
||||||
# You can access packages and modules from different nixpkgs revs
|
|
||||||
# at the same time. Here's an working example:
|
|
||||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
|
||||||
# Also see the 'unstable-packages' overlay at 'overlays/default.nix'.
|
|
||||||
|
|
||||||
# Home manager
|
|
||||||
home-manager.url = "github:nix-community/home-manager/release-23.05";
|
|
||||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
|
|
||||||
# TODO: Add any other flake you might need
|
|
||||||
# hardware.url = "github:nixos/nixos-hardware";
|
|
||||||
|
|
||||||
# Shameless plug: looking for a way to nixify your themes and make
|
|
||||||
# everything match nicely? Try nix-colors!
|
|
||||||
# nix-colors.url = "github:misterio77/nix-colors";
|
|
||||||
};
|
|
||||||
|
|
||||||
outputs = { self, nixpkgs, home-manager, ... }@inputs:
|
|
||||||
let
|
|
||||||
inherit (self) outputs;
|
|
||||||
forAllSystems = nixpkgs.lib.genAttrs [
|
|
||||||
"aarch64-linux"
|
|
||||||
"i686-linux"
|
|
||||||
"x86_64-linux"
|
|
||||||
"aarch64-darwin"
|
|
||||||
"x86_64-darwin"
|
|
||||||
];
|
|
||||||
in
|
|
||||||
rec {
|
|
||||||
# Your custom packages
|
|
||||||
# Acessible through 'nix build', 'nix shell', etc
|
|
||||||
packages = forAllSystems (system:
|
|
||||||
let pkgs = nixpkgs.legacyPackages.${system};
|
|
||||||
in import ./pkgs { inherit pkgs; }
|
|
||||||
);
|
|
||||||
# Devshell for bootstrapping
|
|
||||||
# Acessible through 'nix develop' or 'nix-shell' (legacy)
|
|
||||||
devShells = forAllSystems (system:
|
|
||||||
let pkgs = nixpkgs.legacyPackages.${system};
|
|
||||||
in import ./shell.nix { inherit pkgs; }
|
|
||||||
);
|
|
||||||
|
|
||||||
# Your custom packages and modifications, exported as overlays
|
|
||||||
overlays = import ./overlays { inherit inputs; };
|
|
||||||
# Reusable nixos modules you might want to export
|
|
||||||
# These are usually stuff you would upstream into nixpkgs
|
|
||||||
nixosModules = import ./modules/nixos;
|
|
||||||
# Reusable home-manager modules you might want to export
|
|
||||||
# These are usually stuff you would upstream into home-manager
|
|
||||||
homeManagerModules = import ./modules/home-manager;
|
|
||||||
|
|
||||||
# NixOS configuration entrypoint
|
|
||||||
# Available through 'nixos-rebuild --flake .#your-hostname'
|
|
||||||
nixosConfigurations = {
|
|
||||||
# FIXME replace with your hostname
|
|
||||||
your-hostname = nixpkgs.lib.nixosSystem {
|
|
||||||
specialArgs = { inherit inputs outputs; };
|
|
||||||
modules = [
|
|
||||||
# > Our main nixos configuration file <
|
|
||||||
./nixos/configuration.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Standalone home-manager configuration entrypoint
|
|
||||||
# Available through 'home-manager --flake .#your-username@your-hostname'
|
|
||||||
homeConfigurations = {
|
|
||||||
# FIXME replace with your username@hostname
|
|
||||||
"your-username@your-hostname" = home-manager.lib.homeManagerConfiguration {
|
|
||||||
pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance
|
|
||||||
extraSpecialArgs = { inherit inputs outputs; };
|
|
||||||
modules = [
|
|
||||||
# > Our main home-manager configuration file <
|
|
||||||
./home-manager/home.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,63 +0,0 @@
|
||||||
# This is your home-manager configuration file
|
|
||||||
# Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix)
|
|
||||||
|
|
||||||
{ inputs, outputs, lib, config, pkgs, ... }: {
|
|
||||||
# You can import other home-manager modules here
|
|
||||||
imports = [
|
|
||||||
# If you want to use modules your own flake exports (from modules/home-manager):
|
|
||||||
# outputs.homeManagerModules.example
|
|
||||||
|
|
||||||
# Or modules exported from other flakes (such as nix-colors):
|
|
||||||
# inputs.nix-colors.homeManagerModules.default
|
|
||||||
|
|
||||||
# You can also split up your configuration and import pieces of it here:
|
|
||||||
# ./nvim.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
nixpkgs = {
|
|
||||||
# You can add overlays here
|
|
||||||
overlays = [
|
|
||||||
# Add overlays your own flake exports (from overlays and pkgs dir):
|
|
||||||
outputs.overlays.additions
|
|
||||||
outputs.overlays.modifications
|
|
||||||
outputs.overlays.unstable-packages
|
|
||||||
|
|
||||||
# You can also add overlays exported from other flakes:
|
|
||||||
# neovim-nightly-overlay.overlays.default
|
|
||||||
|
|
||||||
# Or define it inline, for example:
|
|
||||||
# (final: prev: {
|
|
||||||
# hi = final.hello.overrideAttrs (oldAttrs: {
|
|
||||||
# patches = [ ./change-hello-to-hi.patch ];
|
|
||||||
# });
|
|
||||||
# })
|
|
||||||
];
|
|
||||||
# Configure your nixpkgs instance
|
|
||||||
config = {
|
|
||||||
# Disable if you don't want unfree packages
|
|
||||||
allowUnfree = true;
|
|
||||||
# Workaround for https://github.com/nix-community/home-manager/issues/2942
|
|
||||||
allowUnfreePredicate = (_: true);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# TODO: Set your username
|
|
||||||
home = {
|
|
||||||
username = "your-username";
|
|
||||||
homeDirectory = "/home/your-username";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Add stuff for your user as you see fit:
|
|
||||||
# programs.neovim.enable = true;
|
|
||||||
# home.packages = with pkgs; [ steam ];
|
|
||||||
|
|
||||||
# Enable home-manager and git
|
|
||||||
programs.home-manager.enable = true;
|
|
||||||
programs.git.enable = true;
|
|
||||||
|
|
||||||
# Nicely reload system units when changing configs
|
|
||||||
systemd.user.startServices = "sd-switch";
|
|
||||||
|
|
||||||
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
|
|
||||||
home.stateVersion = "23.05";
|
|
||||||
}
|
|
|
@ -1,100 +0,0 @@
|
||||||
# This is your system's configuration file.
|
|
||||||
# Use this to configure your system environment (it replaces /etc/nixos/configuration.nix)
|
|
||||||
|
|
||||||
{ inputs, outputs, lib, config, pkgs, ... }: {
|
|
||||||
# You can import other NixOS modules here
|
|
||||||
imports = [
|
|
||||||
# If you want to use modules your own flake exports (from modules/nixos):
|
|
||||||
# outputs.nixosModules.example
|
|
||||||
|
|
||||||
# Or modules from other flakes (such as nixos-hardware):
|
|
||||||
# inputs.hardware.nixosModules.common-cpu-amd
|
|
||||||
# inputs.hardware.nixosModules.common-ssd
|
|
||||||
|
|
||||||
# You can also split up your configuration and import pieces of it here:
|
|
||||||
# ./users.nix
|
|
||||||
|
|
||||||
# Import your generated (nixos-generate-config) hardware configuration
|
|
||||||
./hardware-configuration.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
nixpkgs = {
|
|
||||||
# You can add overlays here
|
|
||||||
overlays = [
|
|
||||||
# Add overlays your own flake exports (from overlays and pkgs dir):
|
|
||||||
outputs.overlays.additions
|
|
||||||
outputs.overlays.modifications
|
|
||||||
outputs.overlays.unstable-packages
|
|
||||||
|
|
||||||
# You can also add overlays exported from other flakes:
|
|
||||||
# neovim-nightly-overlay.overlays.default
|
|
||||||
|
|
||||||
# Or define it inline, for example:
|
|
||||||
# (final: prev: {
|
|
||||||
# hi = final.hello.overrideAttrs (oldAttrs: {
|
|
||||||
# patches = [ ./change-hello-to-hi.patch ];
|
|
||||||
# });
|
|
||||||
# })
|
|
||||||
];
|
|
||||||
# Configure your nixpkgs instance
|
|
||||||
config = {
|
|
||||||
# Disable if you don't want unfree packages
|
|
||||||
allowUnfree = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
nix = {
|
|
||||||
# This will add each flake input as a registry
|
|
||||||
# To make nix3 commands consistent with your flake
|
|
||||||
registry = lib.mapAttrs (_: value: { flake = value; }) inputs;
|
|
||||||
|
|
||||||
# This will additionally add your inputs to the system's legacy channels
|
|
||||||
# Making legacy nix commands consistent as well, awesome!
|
|
||||||
nixPath = lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
# Enable flakes and new 'nix' command
|
|
||||||
experimental-features = "nix-command flakes";
|
|
||||||
# Deduplicate and optimize nix store
|
|
||||||
auto-optimise-store = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# FIXME: Add the rest of your current configuration
|
|
||||||
|
|
||||||
# TODO: Set your hostname
|
|
||||||
networking.hostName = "your-hostname";
|
|
||||||
|
|
||||||
# TODO: This is just an example, be sure to use whatever bootloader you prefer
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
|
||||||
|
|
||||||
# TODO: Configure your system-wide user settings (groups, etc), add more users as needed.
|
|
||||||
users.users = {
|
|
||||||
# FIXME: Replace with your username
|
|
||||||
your-username = {
|
|
||||||
# TODO: You can set an initial password for your user.
|
|
||||||
# If you do, you can skip setting a root password by passing '--no-root-passwd' to nixos-install.
|
|
||||||
# Be sure to change it (using passwd) after rebooting!
|
|
||||||
initialPassword = "correcthorsebatterystaple";
|
|
||||||
isNormalUser = true;
|
|
||||||
openssh.authorizedKeys.keys = [
|
|
||||||
# TODO: Add your SSH public key(s) here, if you plan on using SSH to connect
|
|
||||||
];
|
|
||||||
# TODO: Be sure to add any other groups you need (such as networkmanager, audio, docker, etc)
|
|
||||||
extraGroups = [ "wheel" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# This setups a SSH server. Very important if you're setting up a headless system.
|
|
||||||
# Feel free to remove if you don't need it.
|
|
||||||
services.openssh = {
|
|
||||||
enable = true;
|
|
||||||
# Forbid root login through SSH.
|
|
||||||
permitRootLogin = "no";
|
|
||||||
# Use keys only. Remove if you want to SSH using password (not recommended)
|
|
||||||
passwordAuthentication = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
|
|
||||||
system.stateVersion = "23.05";
|
|
||||||
}
|
|
|
@ -1,10 +0,0 @@
|
||||||
# This is just an example, you should generate yours with nixos-generate-config and put it in here.
|
|
||||||
{
|
|
||||||
fileSystems."/" = {
|
|
||||||
device = "/dev/sda1";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Set your system kind (needed for flakes)
|
|
||||||
nixpkgs.hostPlatform = "x86_64-linux";
|
|
||||||
}
|
|
134
flake.lock
|
@ -196,75 +196,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"hyprland": {
|
|
||||||
"inputs": {
|
|
||||||
"hyprland-protocols": "hyprland-protocols",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"systems": "systems",
|
|
||||||
"wlroots": "wlroots",
|
|
||||||
"xdph": "xdph"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1694776019,
|
|
||||||
"narHash": "sha256-hpkAehMA141aQyERaLlFRYSqePjS739+2eS293pJH+A=",
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "hyprland",
|
|
||||||
"rev": "56adec7c1a49c079f320ba3c0c5ae3948946a9e5",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "hyprland",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"hyprland-protocols": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"hyprland",
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"systems": [
|
|
||||||
"hyprland",
|
|
||||||
"systems"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1691753796,
|
|
||||||
"narHash": "sha256-zOEwiWoXk3j3+EoF3ySUJmberFewWlagvewDRuWYAso=",
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "hyprland-protocols",
|
|
||||||
"rev": "0c2ce70625cb30aef199cb388f99e19a61a6ce03",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "hyprland-protocols",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"hyprwm-contrib": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1693997747,
|
|
||||||
"narHash": "sha256-W23nMGmDnyBgxO8O/9jcZtiSpa0taMNcRAD1das/ttw=",
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "contrib",
|
|
||||||
"rev": "5b67181fced4fb06d26afcf9614b35765c576168",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "contrib",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"impermanence": {
|
"impermanence": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1694622745,
|
"lastModified": 1694622745,
|
||||||
|
@ -420,8 +351,6 @@
|
||||||
"firefox-addons": "firefox-addons",
|
"firefox-addons": "firefox-addons",
|
||||||
"hardware": "hardware",
|
"hardware": "hardware",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"hyprland": "hyprland",
|
|
||||||
"hyprwm-contrib": "hyprwm-contrib",
|
|
||||||
"impermanence": "impermanence",
|
"impermanence": "impermanence",
|
||||||
"nh": "nh",
|
"nh": "nh",
|
||||||
"nix-colors": "nix-colors",
|
"nix-colors": "nix-colors",
|
||||||
|
@ -453,21 +382,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1689347949,
|
|
||||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default-linux",
|
|
||||||
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default-linux",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"utils": {
|
"utils": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1605370193,
|
"lastModified": 1605370193,
|
||||||
|
@ -482,54 +396,6 @@
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"wlroots": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"host": "gitlab.freedesktop.org",
|
|
||||||
"lastModified": 1694302348,
|
|
||||||
"narHash": "sha256-S9NOc88L/1jpNKJqBu2Hihvn0V1HHCK2hXE4bNBAStg=",
|
|
||||||
"owner": "wlroots",
|
|
||||||
"repo": "wlroots",
|
|
||||||
"rev": "65bbbbbf0c3d6844cee3c4e294d0ba07e1f82211",
|
|
||||||
"type": "gitlab"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"host": "gitlab.freedesktop.org",
|
|
||||||
"owner": "wlroots",
|
|
||||||
"repo": "wlroots",
|
|
||||||
"rev": "65bbbbbf0c3d6844cee3c4e294d0ba07e1f82211",
|
|
||||||
"type": "gitlab"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"xdph": {
|
|
||||||
"inputs": {
|
|
||||||
"hyprland-protocols": [
|
|
||||||
"hyprland",
|
|
||||||
"hyprland-protocols"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"hyprland",
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"systems": [
|
|
||||||
"hyprland",
|
|
||||||
"systems"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1694363988,
|
|
||||||
"narHash": "sha256-RF6LXm4J6mBF3B8VcQuABuU4g4tCPHgMYJQSoJ3DW+8=",
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "xdg-desktop-portal-hyprland",
|
|
||||||
"rev": "aca51609d4c415b30e88b96c6f49f0142cbcdae7",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "xdg-desktop-portal-hyprland",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|
18
flake.nix
|
@ -27,31 +27,14 @@
|
||||||
inputs.nixpkgs-22_11.follows = "nixpkgs";
|
inputs.nixpkgs-22_11.follows = "nixpkgs";
|
||||||
inputs.nixpkgs-23_05.follows = "nixpkgs";
|
inputs.nixpkgs-23_05.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
# nix-minecraft = {
|
|
||||||
# url = "github:misterio77/nix-minecraft";
|
|
||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
# };
|
|
||||||
firefly = {
|
firefly = {
|
||||||
url = "github:timhae/firefly";
|
url = "github:timhae/firefly";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
hyprland = {
|
|
||||||
url = "github:hyprwm/hyprland";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
hyprwm-contrib = {
|
|
||||||
url = "github:hyprwm/contrib";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
firefox-addons = {
|
firefox-addons = {
|
||||||
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
|
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
# disconic.url = "github:misterio77/disconic";
|
|
||||||
# website.url = "github:misterio77/website";
|
|
||||||
# paste-misterio-me.url = "github:misterio77/paste.misterio.me";
|
|
||||||
# yrmos.url = "github:misterio77/yrmos";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, home-manager, ... }@inputs:
|
outputs = { self, nixpkgs, home-manager, ... }@inputs:
|
||||||
|
@ -66,7 +49,6 @@
|
||||||
inherit lib;
|
inherit lib;
|
||||||
nixosModules = import ./modules/nixos;
|
nixosModules = import ./modules/nixos;
|
||||||
homeManagerModules = import ./modules/home-manager;
|
homeManagerModules = import ./modules/home-manager;
|
||||||
# templates = import ./templates;
|
|
||||||
|
|
||||||
overlays = import ./overlays { inherit inputs outputs; };
|
overlays = import ./overlays { inherit inputs outputs; };
|
||||||
hydraJobs = import ./hydra.nix { inherit inputs outputs; };
|
hydraJobs = import ./hydra.nix { inherit inputs outputs; };
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ pkgs, ... }: {
|
{ pkgs, lib, config, ... }: {
|
||||||
imports = [
|
imports = [
|
||||||
./bash.nix
|
./bash.nix
|
||||||
./bat.nix
|
./bat.nix
|
||||||
|
@ -24,13 +24,13 @@
|
||||||
bc # Calculator
|
bc # Calculator
|
||||||
bottom # System viewer
|
bottom # System viewer
|
||||||
ncdu # TUI disk usage
|
ncdu # TUI disk usage
|
||||||
eza # Better ls
|
exa # Better ls
|
||||||
ripgrep # Better grep
|
ripgrep # Better grep
|
||||||
fd # Better find
|
fd # Better find
|
||||||
|
curl # cURL
|
||||||
httpie # Better curl
|
httpie # Better curl
|
||||||
diffsitter # Better diff
|
diffsitter # Better diff
|
||||||
jq # JSON pretty printer and manipulator
|
jq # JSON pretty printer and manipulator
|
||||||
trekscii # Cute startrek cli printer
|
|
||||||
timer # To help with my ADHD paralysis
|
timer # To help with my ADHD paralysis
|
||||||
|
|
||||||
nil # Nix LSP
|
nil # Nix LSP
|
||||||
|
|
|
@ -9,6 +9,6 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
home.persistence = {
|
home.persistence = {
|
||||||
"/persist/home/misterio".directories = [ ".config/gh" ];
|
"/persist/home/gburd".directories = [ ".config/gh" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@ let
|
||||||
ssh = "${pkgs.openssh}/bin/ssh";
|
ssh = "${pkgs.openssh}/bin/ssh";
|
||||||
|
|
||||||
git-m7 = pkgs.writeShellScriptBin "git-m7" ''
|
git-m7 = pkgs.writeShellScriptBin "git-m7" ''
|
||||||
repo="$(git remote -v | grep git@m7.rs | head -1 | cut -d ':' -f2 | cut -d ' ' -f1)"
|
repo="$(git remote -v | grep git@burd.me | head -1 | cut -d ':' -f2 | cut -d ' ' -f1)"
|
||||||
# Add a .git suffix if it's missing
|
# Add a .git suffix if it's missing
|
||||||
if [[ "$repo" != *".git" ]]; then
|
if [[ "$repo" != *".git" ]]; then
|
||||||
repo="$repo.git"
|
repo="$repo.git"
|
||||||
|
@ -14,15 +14,15 @@ let
|
||||||
echo "You must specify a name for the repo"
|
echo "You must specify a name for the repo"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
${ssh} -A git@m7.rs << EOF
|
${ssh} -A git@burd.me << EOF
|
||||||
git init --bare "$2.git"
|
git init --bare "$2.git"
|
||||||
git -C "$2.git" branch -m main
|
git -C "$2.git" branch -m main
|
||||||
EOF
|
EOF
|
||||||
git remote add origin git@m7.rs:"$2.git"
|
git remote add origin git@burd.me:"$2.git"
|
||||||
elif [ "$1" == "ls" ]; then
|
elif [ "$1" == "ls" ]; then
|
||||||
${ssh} -A git@m7.rs ls
|
${ssh} -A git@burd.me ls
|
||||||
else
|
else
|
||||||
${ssh} -A git@m7.rs git -C "/srv/git/$repo" $@
|
${ssh} -A git@burd.me git -C "/srv/git/$repo" $@
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
in
|
in
|
||||||
|
@ -37,11 +37,11 @@ in
|
||||||
add-nowhitespace = "!git diff -U0 -w --no-color | git apply --cached --ignore-whitespace --unidiff-zero -";
|
add-nowhitespace = "!git diff -U0 -w --no-color | git apply --cached --ignore-whitespace --unidiff-zero -";
|
||||||
fast-forward = "merge --ff-only";
|
fast-forward = "merge --ff-only";
|
||||||
};
|
};
|
||||||
userName = "Gabriel Fontes";
|
userName = "Greg Burd";
|
||||||
userEmail = "hi@m7.rs";
|
userEmail = "gburd@symas.com";
|
||||||
extraConfig = {
|
extraConfig = {
|
||||||
init.defaultBranch = "main";
|
init.defaultBranch = "main";
|
||||||
user.signing.key = "CE707A2C17FAAC97907FF8EF2E54EA7BFE630916";
|
user.signing.key = "1FC1E7793410DE46";
|
||||||
commit.gpgSign = true;
|
commit.gpgSign = true;
|
||||||
gpg.program = "${config.programs.gpg.package}/bin/gpg2";
|
gpg.program = "${config.programs.gpg.package}/bin/gpg2";
|
||||||
};
|
};
|
||||||
|
|
|
@ -12,10 +12,10 @@ in
|
||||||
{
|
{
|
||||||
home.packages = pinentry.packages;
|
home.packages = pinentry.packages;
|
||||||
|
|
||||||
services.gpg-agent = {
|
services.gpg-agent = { #TODO: gnupg vs gpg-agent ?
|
||||||
enable = true;
|
enable = true;
|
||||||
enableSshSupport = true;
|
enableSshSupport = true;
|
||||||
sshKeys = [ "149F16412997785363112F3DBD713BC91D51B831" ];
|
# sshKeys = [ "149F16412997785363112F3DBD713BC91D51B831" ];
|
||||||
pinentryFlavor = pinentry.name;
|
pinentryFlavor = pinentry.name;
|
||||||
enableExtraSocket = true;
|
enableExtraSocket = true;
|
||||||
};
|
};
|
||||||
|
|
|
@ -15,13 +15,13 @@ in
|
||||||
}];
|
}];
|
||||||
};
|
};
|
||||||
trusted = lib.hm.dag.entryBefore [ "net" ] {
|
trusted = lib.hm.dag.entryBefore [ "net" ] {
|
||||||
host = "m7.rs *.m7.rs *.ts.m7.rs";
|
host = "burd.me *.burd.me *.ts.burd.me";
|
||||||
forwardAgent = true;
|
forwardAgent = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home.persistence = {
|
home.persistence = {
|
||||||
"/persist/home/misterio".directories = [ ".ssh" ];
|
"/persist/home/gburd".directories = [ ".ssh" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
programs.xpo = {
|
programs.xpo = {
|
||||||
enable = true;
|
enable = true;
|
||||||
defaultServer = "m7.rs";
|
defaultServer = "burd.me";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,5 +12,6 @@
|
||||||
./qt.nix
|
./qt.nix
|
||||||
./slack.nix
|
./slack.nix
|
||||||
./sublime-music.nix
|
./sublime-music.nix
|
||||||
|
./protonmail-bridge.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ in {
|
||||||
home.packages = with pkgs; [ discord discocss ];
|
home.packages = with pkgs; [ discord discocss ];
|
||||||
|
|
||||||
home.persistence = {
|
home.persistence = {
|
||||||
"/persist/home/misterio".directories = [ ".config/discord" ];
|
"/persist/home/gburd".directories = [ ".config/discord" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.configFile."discocss/custom.css".text = ''
|
xdg.configFile."discocss/custom.css".text = ''
|
||||||
|
|
|
@ -1,14 +1,16 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, lib, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
programs.browserpass.enable = true;
|
programs.browserpass.enable = true;
|
||||||
programs.firefox = {
|
programs.firefox = {
|
||||||
enable = true;
|
enable = true;
|
||||||
profiles.misterio = {
|
profiles.gburd = {
|
||||||
bookmarks = { };
|
bookmarks = { };
|
||||||
extensions = with pkgs.inputs.firefox-addons; [
|
extensions = with pkgs.inputs.firefox-addons; [
|
||||||
ublock-origin
|
ublock-origin
|
||||||
browserpass
|
keybase
|
||||||
|
tampermonkey
|
||||||
|
proton-pass
|
||||||
|
onetab
|
||||||
];
|
];
|
||||||
bookmarks = { };
|
bookmarks = { };
|
||||||
settings = {
|
settings = {
|
||||||
|
@ -18,7 +20,7 @@
|
||||||
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
||||||
"browser.shell.checkDefaultBrowser" = false;
|
"browser.shell.checkDefaultBrowser" = false;
|
||||||
"browser.shell.defaultBrowserCheckCount" = 1;
|
"browser.shell.defaultBrowserCheckCount" = 1;
|
||||||
"browser.startup.homepage" = "https://start.duckduckgo.com";
|
"browser.startup.homepage" = "https://kagi.com";
|
||||||
"browser.uiCustomization.state" = ''{"placements":{"widget-overflow-fixed-list":[],"nav-bar":["back-button","forward-button","stop-reload-button","home-button","urlbar-container","downloads-button","library-button","ublock0_raymondhill_net-browser-action","_testpilot-containers-browser-action"],"toolbar-menubar":["menubar-items"],"TabsToolbar":["tabbrowser-tabs","new-tab-button","alltabs-button"],"PersonalToolbar":["import-button","personal-bookmarks"]},"seen":["save-to-pocket-button","developer-button","ublock0_raymondhill_net-browser-action","_testpilot-containers-browser-action"],"dirtyAreaCache":["nav-bar","PersonalToolbar","toolbar-menubar","TabsToolbar","widget-overflow-fixed-list"],"currentVersion":18,"newElementCount":4}'';
|
"browser.uiCustomization.state" = ''{"placements":{"widget-overflow-fixed-list":[],"nav-bar":["back-button","forward-button","stop-reload-button","home-button","urlbar-container","downloads-button","library-button","ublock0_raymondhill_net-browser-action","_testpilot-containers-browser-action"],"toolbar-menubar":["menubar-items"],"TabsToolbar":["tabbrowser-tabs","new-tab-button","alltabs-button"],"PersonalToolbar":["import-button","personal-bookmarks"]},"seen":["save-to-pocket-button","developer-button","ublock0_raymondhill_net-browser-action","_testpilot-containers-browser-action"],"dirtyAreaCache":["nav-bar","PersonalToolbar","toolbar-menubar","TabsToolbar","widget-overflow-fixed-list"],"currentVersion":18,"newElementCount":4}'';
|
||||||
"dom.security.https_only_mode" = true;
|
"dom.security.https_only_mode" = true;
|
||||||
"identity.fxaccounts.enabled" = false;
|
"identity.fxaccounts.enabled" = false;
|
||||||
|
@ -31,7 +33,7 @@
|
||||||
home = {
|
home = {
|
||||||
persistence = {
|
persistence = {
|
||||||
# Not persisting is safer
|
# Not persisting is safer
|
||||||
# "/persist/home/misterio".directories = [ ".mozilla/firefox" ];
|
# "/persist/home/gburd".directories = [ ".mozilla/firefox" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
36
home/gburd/features/desktop/common/gnome-wm/default.nix
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
imports = [];
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
gtk3 # For gtk-launch
|
||||||
|
xdg-utils-spawn-terminal # Patched to open terminal
|
||||||
|
];
|
||||||
|
|
||||||
|
# environment.gnome.excludePackages = (with pkgs; [
|
||||||
|
# gnome-photos
|
||||||
|
# gnome-tour
|
||||||
|
# ]) ++ (with pkgs.gnome; [
|
||||||
|
# cheese # webcam tool
|
||||||
|
# gnome-music
|
||||||
|
# gedit # text editor
|
||||||
|
# epiphany # web browser
|
||||||
|
# geary # email reader
|
||||||
|
# gnome-characters
|
||||||
|
# tali # poker game
|
||||||
|
# iagno # go game
|
||||||
|
# hitori # sudoku game
|
||||||
|
# atomix # puzzle game
|
||||||
|
# yelp # Help view
|
||||||
|
# gnome-contacts
|
||||||
|
# gnome-initial-setup
|
||||||
|
# ]);
|
||||||
|
# programs.dconf.enable = true;
|
||||||
|
# environment.systemPackages = with pkgs; [
|
||||||
|
# gnome.gnome-tweaks
|
||||||
|
# ]
|
||||||
|
# };
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
};
|
||||||
|
}
|
|
@ -41,6 +41,6 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
home.persistence = {
|
home.persistence = {
|
||||||
"/persist/home/misterio".directories = [ ".config/kdeconnect" ];
|
"/persist/home/gburd".directories = [ ".config/kdeconnect" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
4
home/gburd/features/desktop/common/protonmail-bridge.nix
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.protonmail-bridge ];
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
{ pkgs, lib, ... }: {
|
{ pkgs, lib, ... }: {
|
||||||
home.packages = [ pkgs.sublime-music ];
|
home.packages = [ pkgs.sublime-music ];
|
||||||
home.persistence = {
|
home.persistence = {
|
||||||
"/persist/home/misterio".directories = [ ".config/sublime-music" ];
|
"/persist/home/gburd".directories = [ ".config/sublime-music" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,39 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./hyprland-vnc.nix
|
|
||||||
./gammastep.nix
|
|
||||||
./kitty.nix
|
|
||||||
./mako.nix
|
|
||||||
./qutebrowser.nix
|
|
||||||
./swayidle.nix
|
|
||||||
./swaylock.nix
|
|
||||||
./waybar.nix
|
|
||||||
./wofi.nix
|
|
||||||
./zathura.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
xdg.mimeApps.enable = true;
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
grim
|
|
||||||
gtk3 # For gtk-launch
|
|
||||||
imv
|
|
||||||
mimeo
|
|
||||||
primary-xwayland
|
|
||||||
pulseaudio
|
|
||||||
slurp
|
|
||||||
waypipe
|
|
||||||
wf-recorder
|
|
||||||
wl-clipboard
|
|
||||||
wl-mirror
|
|
||||||
wl-mirror-pick
|
|
||||||
xdg-utils-spawn-terminal # Patched to open terminal
|
|
||||||
ydotool
|
|
||||||
];
|
|
||||||
|
|
||||||
home.sessionVariables = {
|
|
||||||
MOZ_ENABLE_WAYLAND = 1;
|
|
||||||
QT_QPA_PLATFORM = "wayland";
|
|
||||||
LIBSEAT_BACKEND = "logind";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
{
|
|
||||||
services.gammastep = {
|
|
||||||
enable = true;
|
|
||||||
provider = "geoclue2";
|
|
||||||
temperature = {
|
|
||||||
day = 6000;
|
|
||||||
night = 4600;
|
|
||||||
};
|
|
||||||
settings = {
|
|
||||||
general.adjustment-method = "wayland";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
{ pkgs, lib, config, ... }:
|
|
||||||
let
|
|
||||||
enabledMonitors = lib.filter (m: m.enabled) config.monitors;
|
|
||||||
# A nice VNC script for remotes running hyprland
|
|
||||||
vncsh = pkgs.writeShellScriptBin "vnc.sh" ''
|
|
||||||
ssh $1 bash <<'EOF'
|
|
||||||
pgrep "wayvnc" && exit
|
|
||||||
export HYPRLAND_INSTANCE_SIGNATURE="$(ls /tmp/hypr/ -lt | head -2 | tail -1 | rev | cut -d ' ' -f1 | rev)"
|
|
||||||
export WAYLAND_DISPLAY="wayland-1"
|
|
||||||
ip="$(ip addr show dev tailscale0 | grep 'inet ' | xargs | cut -d ' ' -f2 | cut -d '/' -f1)"
|
|
||||||
xpos="$(hyprctl monitors -j | jq -r 'sort_by(.x)[-1] | .x + .width')"
|
|
||||||
|
|
||||||
${lib.concatLines (lib.forEach enabledMonitors (m: ''
|
|
||||||
hyprctl output create headless
|
|
||||||
monitor="$(hyprctl monitors -j | jq -r 'map(.name)[-1]')"
|
|
||||||
hyprctl keyword monitor $monitor,${toString m.width}x${toString m.height}@${toString m.refreshRate},$(($xpos + ${toString m.x}))x${toString m.y},1
|
|
||||||
screen -d -m wayvnc -k br -S /tmp/vnc-${m.workspace} -f 60 -o $monitor $ip 590${m.workspace}
|
|
||||||
sudo iptables -I INPUT -j ACCEPT -p tcp --dport 590${m.workspace}
|
|
||||||
''))}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
${lib.concatLines (lib.forEach enabledMonitors (m: ''
|
|
||||||
vncviewer $1::590${m.workspace} &
|
|
||||||
''))}
|
|
||||||
|
|
||||||
wait
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
vncsh
|
|
||||||
wayvnc
|
|
||||||
tigervnc
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,66 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (config.colorscheme) colors;
|
|
||||||
kitty-xterm = pkgs.writeShellScriptBin "xterm" ''
|
|
||||||
${config.programs.kitty.package}/bin/kitty -1 "$@"
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
{
|
|
||||||
home = {
|
|
||||||
packages = [ kitty-xterm ];
|
|
||||||
sessionVariables = {
|
|
||||||
TERMINAL = "kitty -1";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
programs.kitty = {
|
|
||||||
enable = true;
|
|
||||||
font = {
|
|
||||||
name = config.fontProfiles.monospace.family;
|
|
||||||
size = 12;
|
|
||||||
};
|
|
||||||
settings = {
|
|
||||||
shell_integration = "no-rc"; # I prefer to do it manually
|
|
||||||
scrollback_lines = 4000;
|
|
||||||
scrollback_pager_history_size = 2048;
|
|
||||||
window_padding_width = 15;
|
|
||||||
foreground = "#${colors.base05}";
|
|
||||||
background = "#${colors.base00}";
|
|
||||||
selection_background = "#${colors.base05}";
|
|
||||||
selection_foreground = "#${colors.base00}";
|
|
||||||
url_color = "#${colors.base04}";
|
|
||||||
cursor = "#${colors.base05}";
|
|
||||||
active_border_color = "#${colors.base03}";
|
|
||||||
inactive_border_color = "#${colors.base01}";
|
|
||||||
active_tab_background = "#${colors.base00}";
|
|
||||||
active_tab_foreground = "#${colors.base05}";
|
|
||||||
inactive_tab_background = "#${colors.base01}";
|
|
||||||
inactive_tab_foreground = "#${colors.base04}";
|
|
||||||
tab_bar_background = "#${colors.base01}";
|
|
||||||
color0 = "#${colors.base00}";
|
|
||||||
color1 = "#${colors.base08}";
|
|
||||||
color2 = "#${colors.base0B}";
|
|
||||||
color3 = "#${colors.base0A}";
|
|
||||||
color4 = "#${colors.base0D}";
|
|
||||||
color5 = "#${colors.base0E}";
|
|
||||||
color6 = "#${colors.base0C}";
|
|
||||||
color7 = "#${colors.base05}";
|
|
||||||
color8 = "#${colors.base03}";
|
|
||||||
color9 = "#${colors.base08}";
|
|
||||||
color10 = "#${colors.base0B}";
|
|
||||||
color11 = "#${colors.base0A}";
|
|
||||||
color12 = "#${colors.base0D}";
|
|
||||||
color13 = "#${colors.base0E}";
|
|
||||||
color14 = "#${colors.base0C}";
|
|
||||||
color15 = "#${colors.base07}";
|
|
||||||
color16 = "#${colors.base09}";
|
|
||||||
color17 = "#${colors.base0F}";
|
|
||||||
color18 = "#${colors.base01}";
|
|
||||||
color19 = "#${colors.base02}";
|
|
||||||
color20 = "#${colors.base04}";
|
|
||||||
color21 = "#${colors.base06}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
{ config, ... }:
|
|
||||||
let inherit (config.colorscheme) colors kind;
|
|
||||||
in {
|
|
||||||
services.mako = {
|
|
||||||
enable = true;
|
|
||||||
iconPath =
|
|
||||||
if kind == "dark" then
|
|
||||||
"${config.gtk.iconTheme.package}/share/icons/Papirus-Dark"
|
|
||||||
else
|
|
||||||
"${config.gtk.iconTheme.package}/share/icons/Papirus-Light";
|
|
||||||
font = "${config.fontProfiles.regular.family} 12";
|
|
||||||
padding = "10,20";
|
|
||||||
anchor = "top-center";
|
|
||||||
width = 400;
|
|
||||||
height = 150;
|
|
||||||
borderSize = 2;
|
|
||||||
defaultTimeout = 12000;
|
|
||||||
backgroundColor = "#${colors.base00}dd";
|
|
||||||
borderColor = "#${colors.base03}dd";
|
|
||||||
textColor = "#${colors.base05}dd";
|
|
||||||
layer = "overlay";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,177 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
let inherit (config.colorscheme) colors kind;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
home.persistence = {
|
|
||||||
"/persist/home/misterio".directories = [
|
|
||||||
".config/qutebrowser/bookmarks"
|
|
||||||
".config/qutebrowser/greasemonkey"
|
|
||||||
".local/share/qutebrowser"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
xdg.mimeApps.defaultApplications = {
|
|
||||||
"text/html" = [ "org.qutebrowser.qutebrowser.desktop" ];
|
|
||||||
"text/xml" = [ "org.qutebrowser.qutebrowser.desktop" ];
|
|
||||||
"x-scheme-handler/http" = [ "org.qutebrowser.qutebrowser.desktop" ];
|
|
||||||
"x-scheme-handler/https" = [ "org.qutebrowser.qutebrowser.desktop" ];
|
|
||||||
"x-scheme-handler/qute" = [ "org.qutebrowser.qutebrowser.desktop" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
programs.qutebrowser = {
|
|
||||||
enable = true;
|
|
||||||
loadAutoconfig = true;
|
|
||||||
settings = {
|
|
||||||
editor.command = [ "xdg-open" "{file}" ];
|
|
||||||
tabs = {
|
|
||||||
show = "multiple";
|
|
||||||
position = "left";
|
|
||||||
tree_tabs = true;
|
|
||||||
};
|
|
||||||
fonts = {
|
|
||||||
default_family = config.fontProfiles.regular.family;
|
|
||||||
default_size = "12pt";
|
|
||||||
};
|
|
||||||
colors = {
|
|
||||||
webpage = {
|
|
||||||
preferred_color_scheme = kind;
|
|
||||||
bg = "#ffffff";
|
|
||||||
};
|
|
||||||
completion = {
|
|
||||||
fg = "#${colors.base05}";
|
|
||||||
match.fg = "#${colors.base09}";
|
|
||||||
even.bg = "#${colors.base00}";
|
|
||||||
odd.bg = "#${colors.base00}";
|
|
||||||
scrollbar = {
|
|
||||||
bg = "#${colors.base00}";
|
|
||||||
fg = "#${colors.base05}";
|
|
||||||
};
|
|
||||||
category = {
|
|
||||||
bg = "#${colors.base00}";
|
|
||||||
fg = "#${colors.base0D}";
|
|
||||||
border = {
|
|
||||||
bottom = "#${colors.base00}";
|
|
||||||
top = "#${colors.base00}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
item.selected = {
|
|
||||||
bg = "#${colors.base02}";
|
|
||||||
fg = "#${colors.base05}";
|
|
||||||
match.fg = "#${colors.base05}";
|
|
||||||
border = {
|
|
||||||
bottom = "#${colors.base02}";
|
|
||||||
top = "#${colors.base02}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
contextmenu = {
|
|
||||||
disabled = {
|
|
||||||
bg = "#${colors.base01}";
|
|
||||||
fg = "#${colors.base04}";
|
|
||||||
};
|
|
||||||
menu = {
|
|
||||||
bg = "#${colors.base00}";
|
|
||||||
fg = "#${colors.base05}";
|
|
||||||
};
|
|
||||||
selected = {
|
|
||||||
bg = "#${colors.base02}";
|
|
||||||
fg = "#${colors.base05}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
downloads = {
|
|
||||||
bar.bg = "#${colors.base00}";
|
|
||||||
error.fg = "#${colors.base08}";
|
|
||||||
start = {
|
|
||||||
bg = "#${colors.base0D}";
|
|
||||||
fg = "#${colors.base00}";
|
|
||||||
};
|
|
||||||
stop = {
|
|
||||||
bg = "#${colors.base0C}";
|
|
||||||
fg = "#${colors.base00}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
hints = {
|
|
||||||
bg = "#${colors.base0A}";
|
|
||||||
fg = "#${colors.base00}";
|
|
||||||
match.fg = "#${colors.base05}";
|
|
||||||
};
|
|
||||||
keyhint = {
|
|
||||||
bg = "#${colors.base00}";
|
|
||||||
fg = "#${colors.base05}";
|
|
||||||
suffix.fg = "#${colors.base05}";
|
|
||||||
};
|
|
||||||
messages = {
|
|
||||||
error.bg = "#${colors.base08}";
|
|
||||||
error.border = "#${colors.base08}";
|
|
||||||
error.fg = "#${colors.base00}";
|
|
||||||
info.bg = "#${colors.base00}";
|
|
||||||
info.border = "#${colors.base00}";
|
|
||||||
info.fg = "#${colors.base05}";
|
|
||||||
warning.bg = "#${colors.base0E}";
|
|
||||||
warning.border = "#${colors.base0E}";
|
|
||||||
warning.fg = "#${colors.base00}";
|
|
||||||
};
|
|
||||||
prompts = {
|
|
||||||
bg = "#${colors.base00}";
|
|
||||||
fg = "#${colors.base05}";
|
|
||||||
border = "#${colors.base00}";
|
|
||||||
selected.bg = "#${colors.base02}";
|
|
||||||
};
|
|
||||||
statusbar = {
|
|
||||||
caret.bg = "#${colors.base00}";
|
|
||||||
caret.fg = "#${colors.base0D}";
|
|
||||||
caret.selection.bg = "#${colors.base00}";
|
|
||||||
caret.selection.fg = "#${colors.base0D}";
|
|
||||||
command.bg = "#${colors.base01}";
|
|
||||||
command.fg = "#${colors.base04}";
|
|
||||||
command.private.bg = "#${colors.base01}";
|
|
||||||
command.private.fg = "#${colors.base0E}";
|
|
||||||
insert.bg = "#${colors.base00}";
|
|
||||||
insert.fg = "#${colors.base0C}";
|
|
||||||
normal.bg = "#${colors.base00}";
|
|
||||||
normal.fg = "#${colors.base05}";
|
|
||||||
passthrough.bg = "#${colors.base00}";
|
|
||||||
passthrough.fg = "#${colors.base0A}";
|
|
||||||
private.bg = "#${colors.base00}";
|
|
||||||
private.fg = "#${colors.base0E}";
|
|
||||||
progress.bg = "#${colors.base0D}";
|
|
||||||
url.error.fg = "#${colors.base08}";
|
|
||||||
url.fg = "#${colors.base05}";
|
|
||||||
url.hover.fg = "#${colors.base09}";
|
|
||||||
url.success.http.fg = "#${colors.base0B}";
|
|
||||||
url.success.https.fg = "#${colors.base0B}";
|
|
||||||
url.warn.fg = "#${colors.base0E}";
|
|
||||||
};
|
|
||||||
tabs = {
|
|
||||||
bar.bg = "#${colors.base00}";
|
|
||||||
even.bg = "#${colors.base00}";
|
|
||||||
even.fg = "#${colors.base05}";
|
|
||||||
indicator.error = "#${colors.base08}";
|
|
||||||
indicator.start = "#${colors.base0D}";
|
|
||||||
indicator.stop = "#${colors.base0C}";
|
|
||||||
odd.bg = "#${colors.base00}";
|
|
||||||
odd.fg = "#${colors.base05}";
|
|
||||||
pinned.even.bg = "#${colors.base0B}";
|
|
||||||
pinned.even.fg = "#${colors.base00}";
|
|
||||||
pinned.odd.bg = "#${colors.base0B}";
|
|
||||||
pinned.odd.fg = "#${colors.base00}";
|
|
||||||
pinned.selected.even.bg = "#${colors.base02}";
|
|
||||||
pinned.selected.even.fg = "#${colors.base05}";
|
|
||||||
pinned.selected.odd.bg = "#${colors.base02}";
|
|
||||||
pinned.selected.odd.fg = "#${colors.base05}";
|
|
||||||
selected.even.bg = "#${colors.base02}";
|
|
||||||
selected.even.fg = "#${colors.base05}";
|
|
||||||
selected.odd.bg = "#${colors.base02}";
|
|
||||||
selected.odd.fg = "#${colors.base05}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
extraConfig = ''
|
|
||||||
c.tabs.padding = {"bottom": 10, "left": 10, "right": 10, "top": 10}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,54 +0,0 @@
|
||||||
{ pkgs, lib, config, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
swaylock = "${config.programs.swaylock.package}/bin/swaylock";
|
|
||||||
pgrep = "${pkgs.procps}/bin/pgrep";
|
|
||||||
pactl = "${pkgs.pulseaudio}/bin/pactl";
|
|
||||||
hyprctl = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl";
|
|
||||||
swaymsg = "${config.wayland.windowManager.sway.package}/bin/swaymsg";
|
|
||||||
|
|
||||||
isLocked = "${pgrep} -x ${swaylock}";
|
|
||||||
lockTime = 4 * 60; # TODO: configurable desktop (10 min)/laptop (4 min)
|
|
||||||
|
|
||||||
# Makes two timeouts: one for when the screen is not locked (lockTime+timeout) and one for when it is.
|
|
||||||
afterLockTimeout = { timeout, command, resumeCommand ? null }: [
|
|
||||||
{ timeout = lockTime + timeout; inherit command resumeCommand; }
|
|
||||||
{ command = "${isLocked} && ${command}"; inherit resumeCommand timeout; }
|
|
||||||
];
|
|
||||||
in
|
|
||||||
{
|
|
||||||
services.swayidle = {
|
|
||||||
enable = true;
|
|
||||||
systemdTarget = "graphical-session.target";
|
|
||||||
timeouts =
|
|
||||||
# Lock screen
|
|
||||||
[{
|
|
||||||
timeout = lockTime;
|
|
||||||
command = "${swaylock} -i ${config.wallpaper} --daemonize";
|
|
||||||
}] ++
|
|
||||||
# Mute mic
|
|
||||||
(afterLockTimeout {
|
|
||||||
timeout = 10;
|
|
||||||
command = "${pactl} set-source-mute @DEFAULT_SOURCE@ yes";
|
|
||||||
resumeCommand = "${pactl} set-source-mute @DEFAULT_SOURCE@ no";
|
|
||||||
}) ++
|
|
||||||
# Turn off RGB
|
|
||||||
(lib.optionals config.services.rgbdaemon.enable (afterLockTimeout {
|
|
||||||
timeout = 20;
|
|
||||||
command = "systemctl --user stop rgbdaemon";
|
|
||||||
resumeCommand = "systemctl --user start rgbdaemon";
|
|
||||||
})) ++
|
|
||||||
# Turn off displays (hyprland)
|
|
||||||
(lib.optionals config.wayland.windowManager.hyprland.enable (afterLockTimeout {
|
|
||||||
timeout = 40;
|
|
||||||
command = "${hyprctl} dispatch dpms off";
|
|
||||||
resumeCommand = "${hyprctl} dispatch dpms on";
|
|
||||||
})) ++
|
|
||||||
# Turn off displays (sway)
|
|
||||||
(lib.optionals config.wayland.windowManager.sway.enable (afterLockTimeout {
|
|
||||||
timeout = 40;
|
|
||||||
command = "${swaymsg} 'output * dpms off'";
|
|
||||||
resumeCommand = "${swaymsg} 'output * dpms on'";
|
|
||||||
}));
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,43 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
let inherit (config.colorscheme) colors;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
programs.swaylock = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.swaylock-effects;
|
|
||||||
settings = {
|
|
||||||
effect-blur = "20x3";
|
|
||||||
fade-in = 0.1;
|
|
||||||
|
|
||||||
font = config.fontProfiles.regular.family;
|
|
||||||
font-size = 15;
|
|
||||||
|
|
||||||
line-uses-inside = true;
|
|
||||||
disable-caps-lock-text = true;
|
|
||||||
indicator-caps-lock = true;
|
|
||||||
indicator-radius = 40;
|
|
||||||
indicator-idle-visible = true;
|
|
||||||
indicator-y-position = 1000;
|
|
||||||
|
|
||||||
ring-color = "#${colors.base02}";
|
|
||||||
inside-wrong-color = "#${colors.base08}";
|
|
||||||
ring-wrong-color = "#${colors.base08}";
|
|
||||||
key-hl-color = "#${colors.base0B}";
|
|
||||||
bs-hl-color = "#${colors.base08}";
|
|
||||||
ring-ver-color = "#${colors.base09}";
|
|
||||||
inside-ver-color = "#${colors.base09}";
|
|
||||||
inside-color = "#${colors.base01}";
|
|
||||||
text-color = "#${colors.base07}";
|
|
||||||
text-clear-color = "#${colors.base01}";
|
|
||||||
text-ver-color = "#${colors.base01}";
|
|
||||||
text-wrong-color = "#${colors.base01}";
|
|
||||||
text-caps-lock-color = "#${colors.base07}";
|
|
||||||
inside-clear-color = "#${colors.base0C}";
|
|
||||||
ring-clear-color = "#${colors.base0C}";
|
|
||||||
inside-caps-lock-color = "#${colors.base09}";
|
|
||||||
ring-caps-lock-color = "#${colors.base02}";
|
|
||||||
separator-color = "#${colors.base02}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,392 +0,0 @@
|
||||||
{ outputs, config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
# Dependencies
|
|
||||||
cat = "${pkgs.coreutils}/bin/cat";
|
|
||||||
cut = "${pkgs.coreutils}/bin/cut";
|
|
||||||
find = "${pkgs.findutils}/bin/find";
|
|
||||||
grep = "${pkgs.gnugrep}/bin/grep";
|
|
||||||
pgrep = "${pkgs.procps}/bin/pgrep";
|
|
||||||
tail = "${pkgs.coreutils}/bin/tail";
|
|
||||||
wc = "${pkgs.coreutils}/bin/wc";
|
|
||||||
xargs = "${pkgs.findutils}/bin/xargs";
|
|
||||||
timeout = "${pkgs.coreutils}/bin/timeout";
|
|
||||||
ping = "${pkgs.iputils}/bin/ping";
|
|
||||||
|
|
||||||
jq = "${pkgs.jq}/bin/jq";
|
|
||||||
gamemoded = "${pkgs.gamemode}/bin/gamemoded";
|
|
||||||
systemctl = "${pkgs.systemd}/bin/systemctl";
|
|
||||||
journalctl = "${pkgs.systemd}/bin/journalctl";
|
|
||||||
playerctl = "${pkgs.playerctl}/bin/playerctl";
|
|
||||||
playerctld = "${pkgs.playerctl}/bin/playerctld";
|
|
||||||
pavucontrol = "${pkgs.pavucontrol}/bin/pavucontrol";
|
|
||||||
wofi = "${pkgs.wofi}/bin/wofi";
|
|
||||||
|
|
||||||
# Function to simplify making waybar outputs
|
|
||||||
jsonOutput = name: { pre ? "", text ? "", tooltip ? "", alt ? "", class ? "", percentage ? "" }: "${pkgs.writeShellScriptBin "waybar-${name}" ''
|
|
||||||
set -euo pipefail
|
|
||||||
${pre}
|
|
||||||
${jq} -cn \
|
|
||||||
--arg text "${text}" \
|
|
||||||
--arg tooltip "${tooltip}" \
|
|
||||||
--arg alt "${alt}" \
|
|
||||||
--arg class "${class}" \
|
|
||||||
--arg percentage "${percentage}" \
|
|
||||||
'{text:$text,tooltip:$tooltip,alt:$alt,class:$class,percentage:$percentage}'
|
|
||||||
''}/bin/waybar-${name}";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
programs.waybar = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.waybar.overrideAttrs (oa: {
|
|
||||||
mesonFlags = (oa.mesonFlags or [ ]) ++ [ "-Dexperimental=true" ];
|
|
||||||
});
|
|
||||||
systemd.enable = true;
|
|
||||||
settings = {
|
|
||||||
primary = {
|
|
||||||
mode = "dock";
|
|
||||||
layer = "top";
|
|
||||||
height = 40;
|
|
||||||
margin = "6";
|
|
||||||
position = "top";
|
|
||||||
modules-left = [
|
|
||||||
"custom/menu"
|
|
||||||
] ++ (lib.optionals config.wayland.windowManager.sway.enable [
|
|
||||||
"sway/workspaces"
|
|
||||||
"sway/mode"
|
|
||||||
]) ++ (lib.optionals config.wayland.windowManager.hyprland.enable [
|
|
||||||
"hyprland/workspaces"
|
|
||||||
"hyprland/submap"
|
|
||||||
]) ++ [
|
|
||||||
"custom/currentplayer"
|
|
||||||
"custom/player"
|
|
||||||
];
|
|
||||||
|
|
||||||
modules-center = [
|
|
||||||
"pulseaudio"
|
|
||||||
"battery"
|
|
||||||
"clock"
|
|
||||||
"custom/unread-mail"
|
|
||||||
"custom/gpg-agent"
|
|
||||||
];
|
|
||||||
|
|
||||||
modules-right = [
|
|
||||||
"network"
|
|
||||||
"custom/tailscale-ping"
|
|
||||||
"custom/gamemode"
|
|
||||||
# TODO: currently broken for some reason
|
|
||||||
# "custom/gammastep"
|
|
||||||
"tray"
|
|
||||||
"custom/hostname"
|
|
||||||
];
|
|
||||||
|
|
||||||
clock = {
|
|
||||||
interval = 1;
|
|
||||||
format = "{:%d/%m %H:%M:%S}";
|
|
||||||
format-alt = "{:%Y-%m-%d %H:%M:%S %z}";
|
|
||||||
on-click-left = "mode";
|
|
||||||
tooltip-format = ''
|
|
||||||
<big>{:%Y %B}</big>
|
|
||||||
<tt><small>{calendar}</small></tt>'';
|
|
||||||
};
|
|
||||||
pulseaudio = {
|
|
||||||
format = "{icon} {volume}%";
|
|
||||||
format-muted = " 0%";
|
|
||||||
format-icons = {
|
|
||||||
headphone = "";
|
|
||||||
headset = "";
|
|
||||||
portable = "";
|
|
||||||
default = [ "" "" "" ];
|
|
||||||
};
|
|
||||||
on-click = pavucontrol;
|
|
||||||
};
|
|
||||||
idle_inhibitor = {
|
|
||||||
format = "{icon}";
|
|
||||||
format-icons = {
|
|
||||||
activated = "";
|
|
||||||
deactivated = "";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
battery = {
|
|
||||||
bat = "BAT0";
|
|
||||||
interval = 10;
|
|
||||||
format-icons = [ "" "" "" "" "" "" "" "" "" "" ];
|
|
||||||
format = "{icon} {capacity}%";
|
|
||||||
format-charging = " {capacity}%";
|
|
||||||
onclick = "";
|
|
||||||
};
|
|
||||||
"sway/window" = {
|
|
||||||
max-length = 20;
|
|
||||||
};
|
|
||||||
network = {
|
|
||||||
interval = 3;
|
|
||||||
format-wifi = " {essid}";
|
|
||||||
format-ethernet = " Connected";
|
|
||||||
format-disconnected = "";
|
|
||||||
tooltip-format = ''
|
|
||||||
{ifname}
|
|
||||||
{ipaddr}/{cidr}
|
|
||||||
Up: {bandwidthUpBits}
|
|
||||||
Down: {bandwidthDownBits}'';
|
|
||||||
on-click = "";
|
|
||||||
};
|
|
||||||
"custom/tailscale-ping" = {
|
|
||||||
interval = 10;
|
|
||||||
return-type = "json";
|
|
||||||
exec =
|
|
||||||
let
|
|
||||||
inherit (builtins) concatStringsSep attrNames;
|
|
||||||
hosts = attrNames outputs.nixosConfigurations;
|
|
||||||
homeMachine = "merope";
|
|
||||||
remoteMachine = "alcyone";
|
|
||||||
in
|
|
||||||
jsonOutput "tailscale-ping" {
|
|
||||||
# Build variables for each host
|
|
||||||
pre = ''
|
|
||||||
set -o pipefail
|
|
||||||
${concatStringsSep "\n" (map (host: ''
|
|
||||||
ping_${host}="$(${timeout} 2 ${ping} -c 1 -q ${host} 2>/dev/null | ${tail} -1 | ${cut} -d '/' -f5 | ${cut} -d '.' -f1)ms" || ping_${host}="Disconnected"
|
|
||||||
'') hosts)}
|
|
||||||
'';
|
|
||||||
# Access a remote machine's and a home machine's ping
|
|
||||||
text = " $ping_${remoteMachine} / $ping_${homeMachine}";
|
|
||||||
# Show pings from all machines
|
|
||||||
tooltip = concatStringsSep "\n" (map (host: "${host}: $ping_${host}") hosts);
|
|
||||||
};
|
|
||||||
format = "{}";
|
|
||||||
on-click = "";
|
|
||||||
};
|
|
||||||
"custom/menu" = {
|
|
||||||
return-type = "json";
|
|
||||||
exec = jsonOutput "menu" {
|
|
||||||
text = "";
|
|
||||||
tooltip = ''$(${cat} /etc/os-release | ${grep} PRETTY_NAME | ${cut} -d '"' -f2)'';
|
|
||||||
};
|
|
||||||
on-click = "${wofi} -S drun -x 10 -y 10 -W 25% -H 60%";
|
|
||||||
};
|
|
||||||
"custom/hostname" = {
|
|
||||||
exec = "echo $USER@$HOSTNAME";
|
|
||||||
};
|
|
||||||
"custom/unread-mail" = {
|
|
||||||
interval = 5;
|
|
||||||
return-type = "json";
|
|
||||||
exec = jsonOutput "unread-mail" {
|
|
||||||
pre = ''
|
|
||||||
count=$(${find} ~/Mail/*/Inbox/new -type f | ${wc} -l)
|
|
||||||
if ${pgrep} mbsync &>/dev/null; then
|
|
||||||
status="syncing"
|
|
||||||
else if [ "$count" == "0" ]; then
|
|
||||||
status="read"
|
|
||||||
else
|
|
||||||
status="unread"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
text = "$count";
|
|
||||||
alt = "$status";
|
|
||||||
};
|
|
||||||
format = "{icon} ({})";
|
|
||||||
format-icons = {
|
|
||||||
"read" = "";
|
|
||||||
"unread" = "";
|
|
||||||
"syncing" = "";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"custom/gpg-agent" = {
|
|
||||||
interval = 2;
|
|
||||||
return-type = "json";
|
|
||||||
exec =
|
|
||||||
let gpgCmds = import ../../../cli/gpg-commands.nix { inherit pkgs; };
|
|
||||||
in
|
|
||||||
jsonOutput "gpg-agent" {
|
|
||||||
pre = ''status=$(${gpgCmds.isUnlocked} && echo "unlocked" || echo "locked")'';
|
|
||||||
alt = "$status";
|
|
||||||
tooltip = "GPG is $status";
|
|
||||||
};
|
|
||||||
format = "{icon}";
|
|
||||||
format-icons = {
|
|
||||||
"locked" = "";
|
|
||||||
"unlocked" = "";
|
|
||||||
};
|
|
||||||
on-click = "";
|
|
||||||
};
|
|
||||||
"custom/gamemode" = {
|
|
||||||
exec-if = "${gamemoded} --status | ${grep} 'is active' -q";
|
|
||||||
interval = 2;
|
|
||||||
return-type = "json";
|
|
||||||
exec = jsonOutput "gamemode" {
|
|
||||||
tooltip = "Gamemode is active";
|
|
||||||
};
|
|
||||||
format = " ";
|
|
||||||
};
|
|
||||||
"custom/gammastep" = {
|
|
||||||
interval = 5;
|
|
||||||
return-type = "json";
|
|
||||||
exec = jsonOutput "gammastep" {
|
|
||||||
pre = ''
|
|
||||||
if unit_status="$(${systemctl} --user is-active gammastep)"; then
|
|
||||||
status="$unit_status ($(${journalctl} --user -u gammastep.service -g 'Period: ' | ${tail} -1 | ${cut} -d ':' -f6 | ${xargs}))"
|
|
||||||
else
|
|
||||||
status="$unit_status"
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
alt = "\${status:-inactive}";
|
|
||||||
tooltip = "Gammastep is $status";
|
|
||||||
};
|
|
||||||
format = "{icon}";
|
|
||||||
format-icons = {
|
|
||||||
"activating" = " ";
|
|
||||||
"deactivating" = " ";
|
|
||||||
"inactive" = "? ";
|
|
||||||
"active (Night)" = " ";
|
|
||||||
"active (Nighttime)" = " ";
|
|
||||||
"active (Transition (Night)" = " ";
|
|
||||||
"active (Transition (Nighttime)" = " ";
|
|
||||||
"active (Day)" = " ";
|
|
||||||
"active (Daytime)" = " ";
|
|
||||||
"active (Transition (Day)" = " ";
|
|
||||||
"active (Transition (Daytime)" = " ";
|
|
||||||
};
|
|
||||||
on-click = "${systemctl} --user is-active gammastep && ${systemctl} --user stop gammastep || ${systemctl} --user start gammastep";
|
|
||||||
};
|
|
||||||
"custom/currentplayer" = {
|
|
||||||
interval = 2;
|
|
||||||
return-type = "json";
|
|
||||||
exec = jsonOutput "currentplayer" {
|
|
||||||
pre = ''
|
|
||||||
player="$(${playerctl} status -f "{{playerName}}" 2>/dev/null || echo "No player active" | ${cut} -d '.' -f1)"
|
|
||||||
count="$(${playerctl} -l | ${wc} -l)"
|
|
||||||
if ((count > 1)); then
|
|
||||||
more=" +$((count - 1))"
|
|
||||||
else
|
|
||||||
more=""
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
alt = "$player";
|
|
||||||
tooltip = "$player ($count available)";
|
|
||||||
text = "$more";
|
|
||||||
};
|
|
||||||
format = "{icon}{}";
|
|
||||||
format-icons = {
|
|
||||||
"No player active" = " ";
|
|
||||||
"Celluloid" = " ";
|
|
||||||
"spotify" = " ";
|
|
||||||
"ncspot" = " ";
|
|
||||||
"qutebrowser" = " ";
|
|
||||||
"firefox" = " ";
|
|
||||||
"discord" = " ";
|
|
||||||
"sublimemusic" = " ";
|
|
||||||
"kdeconnect" = " ";
|
|
||||||
"chromium" = " ";
|
|
||||||
};
|
|
||||||
on-click = "${playerctld} shift";
|
|
||||||
on-click-right = "${playerctld} unshift";
|
|
||||||
};
|
|
||||||
"custom/player" = {
|
|
||||||
exec-if = "${playerctl} status";
|
|
||||||
exec = ''${playerctl} metadata --format '{"text": "{{title}} - {{artist}}", "alt": "{{status}}", "tooltip": "{{title}} - {{artist}} ({{album}})"}' '';
|
|
||||||
return-type = "json";
|
|
||||||
interval = 2;
|
|
||||||
max-length = 30;
|
|
||||||
format = "{icon} {}";
|
|
||||||
format-icons = {
|
|
||||||
"Playing" = "";
|
|
||||||
"Paused" = " ";
|
|
||||||
"Stopped" = "";
|
|
||||||
};
|
|
||||||
on-click = "${playerctl} play-pause";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
# Cheatsheet:
|
|
||||||
# x -> all sides
|
|
||||||
# x y -> vertical, horizontal
|
|
||||||
# x y z -> top, horizontal, bottom
|
|
||||||
# w x y z -> top, right, bottom, left
|
|
||||||
style = let inherit (config.colorscheme) colors; in /* css */ ''
|
|
||||||
* {
|
|
||||||
font-family: ${config.fontProfiles.regular.family}, ${config.fontProfiles.monospace.family};
|
|
||||||
font-size: 12pt;
|
|
||||||
padding: 0 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modules-right {
|
|
||||||
margin-right: -15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modules-left {
|
|
||||||
margin-left: -15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
window#waybar.top {
|
|
||||||
opacity: 0.95;
|
|
||||||
padding: 0;
|
|
||||||
background-color: #${colors.base00};
|
|
||||||
border: 2px solid #${colors.base0C};
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
window#waybar.bottom {
|
|
||||||
opacity: 0.90;
|
|
||||||
background-color: #${colors.base00};
|
|
||||||
border: 2px solid #${colors.base0C};
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
window#waybar {
|
|
||||||
color: #${colors.base05};
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button {
|
|
||||||
background-color: #${colors.base01};
|
|
||||||
color: #${colors.base05};
|
|
||||||
padding: 5px 1px;
|
|
||||||
margin: 3px 0;
|
|
||||||
}
|
|
||||||
#workspaces button.hidden {
|
|
||||||
background-color: #${colors.base00};
|
|
||||||
color: #${colors.base04};
|
|
||||||
}
|
|
||||||
#workspaces button.focused,
|
|
||||||
#workspaces button.active {
|
|
||||||
background-color: #${colors.base0A};
|
|
||||||
color: #${colors.base00};
|
|
||||||
}
|
|
||||||
|
|
||||||
#clock {
|
|
||||||
background-color: #${colors.base0C};
|
|
||||||
color: #${colors.base00};
|
|
||||||
padding-left: 15px;
|
|
||||||
padding-right: 15px;
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 0;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-menu {
|
|
||||||
background-color: #${colors.base0C};
|
|
||||||
color: #${colors.base00};
|
|
||||||
padding-left: 15px;
|
|
||||||
padding-right: 22px;
|
|
||||||
margin: 0;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
#custom-hostname {
|
|
||||||
background-color: #${colors.base0C};
|
|
||||||
color: #${colors.base00};
|
|
||||||
padding-left: 15px;
|
|
||||||
padding-right: 18px;
|
|
||||||
margin-right: 0;
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 0;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
#custom-currentplayer {
|
|
||||||
padding-right: 0;
|
|
||||||
}
|
|
||||||
#tray {
|
|
||||||
color: #${colors.base05};
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,54 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (config) colorscheme;
|
|
||||||
inherit (colorscheme) colors;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
programs.wezterm = {
|
|
||||||
enable = true;
|
|
||||||
colorSchemes = {
|
|
||||||
"${colorscheme.slug}" = {
|
|
||||||
foreground = "#${colors.base05}";
|
|
||||||
background = "#${colors.base00}";
|
|
||||||
|
|
||||||
ansi = [
|
|
||||||
"#${colors.base08}"
|
|
||||||
"#${colors.base09}"
|
|
||||||
"#${colors.base0A}"
|
|
||||||
"#${colors.base0B}"
|
|
||||||
"#${colors.base0C}"
|
|
||||||
"#${colors.base0D}"
|
|
||||||
"#${colors.base0E}"
|
|
||||||
"#${colors.base0F}"
|
|
||||||
];
|
|
||||||
brights = [
|
|
||||||
"#${colors.base00}"
|
|
||||||
"#${colors.base01}"
|
|
||||||
"#${colors.base02}"
|
|
||||||
"#${colors.base03}"
|
|
||||||
"#${colors.base04}"
|
|
||||||
"#${colors.base05}"
|
|
||||||
"#${colors.base06}"
|
|
||||||
"#${colors.base07}"
|
|
||||||
];
|
|
||||||
cursor_fg = "#${colors.base00}";
|
|
||||||
cursor_bg = "#${colors.base05}";
|
|
||||||
selection_fg = "#${colors.base00}";
|
|
||||||
selection_bg = "#${colors.base05}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
extraConfig = /* lua */ ''
|
|
||||||
return {
|
|
||||||
font = wezterm.font("${config.fontProfiles.monospace.family}"),
|
|
||||||
font_size = 12.0,
|
|
||||||
color_scheme = "${colorscheme.slug}",
|
|
||||||
hide_tab_bar_if_only_one_tab = true,
|
|
||||||
window_close_confirmation = "NeverPrompt",
|
|
||||||
set_environment_variables = {
|
|
||||||
TERM = 'wezterm',
|
|
||||||
},
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
--- a/src/wofi.c Mon Feb 22 23:53:57 2021 -0800
|
|
||||||
+++ b/src/wofi.c Wed Aug 11 13:49:13 2021 -0300
|
|
||||||
@@ -881,12 +881,15 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
void wofi_term_run(const char* cmd) {
|
|
||||||
+ char *shell = getenv("SHELL");
|
|
||||||
+ if (!shell) shell = "sh";
|
|
||||||
+
|
|
||||||
if(terminal != NULL) {
|
|
||||||
- execlp(terminal, terminal, "-e", cmd, NULL);
|
|
||||||
+ execlp(terminal, terminal, "-e", shell, "-c", cmd, NULL);
|
|
||||||
}
|
|
||||||
size_t term_count = sizeof(terminals) / sizeof(char*);
|
|
||||||
for(size_t count = 0; count < term_count; ++count) {
|
|
||||||
- execlp(terminals[count], terminals[count], "-e", cmd, NULL);
|
|
||||||
+ execlp(terminals[count], terminals[count], "-e", shell, "-c", cmd, NULL);
|
|
||||||
}
|
|
||||||
fprintf(stderr, "No terminal emulator found please set term in config or use --term\n");
|
|
||||||
exit(1);
|
|
|
@ -1,25 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }: {
|
|
||||||
programs.wofi = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.wofi.overrideAttrs (oa: {
|
|
||||||
patches = (oa.patches or [ ]) ++ [
|
|
||||||
./wofi-run-shell.patch # Fix for https://todo.sr.ht/~scoopta/wofi/174
|
|
||||||
];
|
|
||||||
});
|
|
||||||
settings = {
|
|
||||||
image_size = 48;
|
|
||||||
columns = 3;
|
|
||||||
allow_images = true;
|
|
||||||
insensitive = true;
|
|
||||||
run-always_parse_args = true;
|
|
||||||
run-cache_file = "/dev/null";
|
|
||||||
run-exec_search = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages =
|
|
||||||
let
|
|
||||||
inherit (config.programs.password-store) package enable;
|
|
||||||
in
|
|
||||||
lib.optional enable (pkgs.pass-wofi.override { pass = package; });
|
|
||||||
}
|
|
|
@ -1,32 +0,0 @@
|
||||||
{ config, ... }:
|
|
||||||
let inherit (config.colorscheme) colors;
|
|
||||||
in {
|
|
||||||
programs.zathura = {
|
|
||||||
enable = true;
|
|
||||||
options = {
|
|
||||||
selection-clipboard = "clipboard";
|
|
||||||
font = "${config.fontProfiles.regular.family} 12";
|
|
||||||
recolor = true;
|
|
||||||
default-bg = "#${colors.base00}";
|
|
||||||
default-fg = "#${colors.base01}";
|
|
||||||
statusbar-bg = "#${colors.base02}";
|
|
||||||
statusbar-fg = "#${colors.base04}";
|
|
||||||
inputbar-bg = "#${colors.base00}";
|
|
||||||
inputbar-fg = "#${colors.base07}";
|
|
||||||
notification-bg = "#${colors.base00}";
|
|
||||||
notification-fg = "#${colors.base07}";
|
|
||||||
notification-error-bg = "#${colors.base00}";
|
|
||||||
notification-error-fg = "#${colors.base08}";
|
|
||||||
notification-warning-bg = "#${colors.base00}";
|
|
||||||
notification-warning-fg = "#${colors.base08}";
|
|
||||||
highlight-color = "#${colors.base0A}";
|
|
||||||
highlight-active-color = "#${colors.base0D}";
|
|
||||||
completion-bg = "#${colors.base01}";
|
|
||||||
completion-fg = "#${colors.base05}";
|
|
||||||
completions-highlight-bg = "#${colors.base0D}";
|
|
||||||
completions-highlight-fg = "#${colors.base07}";
|
|
||||||
recolor-lightcolor = "#${colors.base00}";
|
|
||||||
recolor-darkcolor = "#${colors.base06}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,3 +1,16 @@
|
||||||
{
|
{ lib, config, pkgs, ... }: {
|
||||||
imports = [ ../common ];
|
imports = [
|
||||||
|
../common
|
||||||
|
../common/gnome-wm
|
||||||
|
|
||||||
|
./tty-init.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
firefox
|
||||||
|
emacs
|
||||||
|
ungoogled-chromium
|
||||||
|
gnupg
|
||||||
|
pinentry
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,70 +0,0 @@
|
||||||
{ lib, ... }:
|
|
||||||
let
|
|
||||||
workspaces =
|
|
||||||
(map toString (lib.range 0 9)) ++
|
|
||||||
(map (n: "F${toString n}") (lib.range 1 12));
|
|
||||||
# Map keys to hyprland directions
|
|
||||||
directions = rec {
|
|
||||||
left = "l"; right = "r"; up = "u"; down = "d";
|
|
||||||
h = left; l = right; k = up; j = down;
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
wayland.windowManager.hyprland.settings = {
|
|
||||||
bindm = [
|
|
||||||
"SUPER,mouse:272,movewindow"
|
|
||||||
"SUPER,mouse:273,resizewindow"
|
|
||||||
];
|
|
||||||
|
|
||||||
bind = [
|
|
||||||
"SUPERSHIFT,q,killactive"
|
|
||||||
"SUPERSHIFT,e,exit"
|
|
||||||
|
|
||||||
"SUPER,s,togglesplit"
|
|
||||||
"SUPER,f,fullscreen,1"
|
|
||||||
"SUPERSHIFT,f,fullscreen,0"
|
|
||||||
"SUPERSHIFT,space,togglefloating"
|
|
||||||
|
|
||||||
"SUPER,minus,splitratio,-0.25"
|
|
||||||
"SUPERSHIFT,minus,splitratio,-0.3333333"
|
|
||||||
|
|
||||||
"SUPER,equal,splitratio,0.25"
|
|
||||||
"SUPERSHIFT,equal,splitratio,0.3333333"
|
|
||||||
|
|
||||||
"SUPER,g,togglegroup"
|
|
||||||
"SUPER,t,lockactivegroup,toggle"
|
|
||||||
"SUPER,apostrophe,changegroupactive,f"
|
|
||||||
"SUPERSHIFT,apostrophe,changegroupactive,b"
|
|
||||||
|
|
||||||
"SUPER,u,togglespecialworkspace"
|
|
||||||
"SUPERSHIFT,u,movetoworkspace,special"
|
|
||||||
] ++
|
|
||||||
# Change workspace
|
|
||||||
(map (n:
|
|
||||||
"SUPER,${n},workspace,name:${n}"
|
|
||||||
) workspaces) ++
|
|
||||||
# Move window to workspace
|
|
||||||
(map (n:
|
|
||||||
"SUPERSHIFT,${n},movetoworkspacesilent,name:${n}"
|
|
||||||
) workspaces) ++
|
|
||||||
# Move focus
|
|
||||||
(lib.mapAttrsToList (key: direction:
|
|
||||||
"SUPER,${key},movefocus,${direction}"
|
|
||||||
) directions) ++
|
|
||||||
# Swap windows
|
|
||||||
(lib.mapAttrsToList (key: direction:
|
|
||||||
"SUPERSHIFT,${key},swapwindow,${direction}"
|
|
||||||
) directions) ++
|
|
||||||
# Move windows
|
|
||||||
(lib.mapAttrsToList (key: direction:
|
|
||||||
"SUPERCONTROL,${key},movewindoworgroup,${direction}"
|
|
||||||
) directions) ++
|
|
||||||
# Move monitor focus
|
|
||||||
(lib.mapAttrsToList (key: direction:
|
|
||||||
"SUPERALT,${key},focusmonitor,${direction}"
|
|
||||||
) directions) ++
|
|
||||||
# Move workspace to other monitor
|
|
||||||
(lib.mapAttrsToList (key: direction:
|
|
||||||
"SUPERALTSHIFT,${key},movecurrentworkspacetomonitor,${direction}"
|
|
||||||
) directions);
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,187 +0,0 @@
|
||||||
{ lib, config, pkgs, ... }: {
|
|
||||||
imports = [
|
|
||||||
../common
|
|
||||||
../common/wayland-wm
|
|
||||||
|
|
||||||
./tty-init.nix
|
|
||||||
./basic-binds.nix
|
|
||||||
./systemd-fixes.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
inputs.hyprwm-contrib.grimblast
|
|
||||||
hyprslurp
|
|
||||||
hyprpicker
|
|
||||||
];
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.inputs.hyprland.hyprland;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
general = {
|
|
||||||
gaps_in = 15;
|
|
||||||
gaps_out = 20;
|
|
||||||
border_size = 2.7;
|
|
||||||
cursor_inactive_timeout = 4;
|
|
||||||
"col.active_border" = "0xff${config.colorscheme.colors.base0C}";
|
|
||||||
"col.inactive_border" = "0xff${config.colorscheme.colors.base02}";
|
|
||||||
"col.group_border_active" = "0xff${config.colorscheme.colors.base0B}";
|
|
||||||
"col.group_border" = "0xff${config.colorscheme.colors.base04}";
|
|
||||||
};
|
|
||||||
input = {
|
|
||||||
kb_layout = "br,us";
|
|
||||||
touchpad.disable_while_typing = false;
|
|
||||||
};
|
|
||||||
dwindle.split_width_multiplier = 1.35;
|
|
||||||
misc.vfr = "on";
|
|
||||||
|
|
||||||
decoration = {
|
|
||||||
active_opacity = 0.94;
|
|
||||||
inactive_opacity = 0.84;
|
|
||||||
fullscreen_opacity = 1.0;
|
|
||||||
rounding = 5;
|
|
||||||
blur = {
|
|
||||||
enabled = true;
|
|
||||||
size = 5;
|
|
||||||
passes = 3;
|
|
||||||
new_optimizations = true;
|
|
||||||
ignore_opacity = true;
|
|
||||||
};
|
|
||||||
drop_shadow = true;
|
|
||||||
shadow_range = 12;
|
|
||||||
shadow_offset = "3 3";
|
|
||||||
"col.shadow" = "0x44000000";
|
|
||||||
"col.shadow_inactive" = "0x66000000";
|
|
||||||
};
|
|
||||||
animations = {
|
|
||||||
enabled = true;
|
|
||||||
bezier = [
|
|
||||||
"easein,0.11, 0, 0.5, 0"
|
|
||||||
"easeout,0.5, 1, 0.89, 1"
|
|
||||||
"easeinback,0.36, 0, 0.66, -0.56"
|
|
||||||
"easeoutback,0.34, 1.56, 0.64, 1"
|
|
||||||
];
|
|
||||||
|
|
||||||
animation = [
|
|
||||||
"windowsIn,1,3,easeoutback,slide"
|
|
||||||
"windowsOut,1,3,easeinback,slide"
|
|
||||||
"windowsMove,1,3,easeoutback"
|
|
||||||
"workspaces,1,2,easeoutback,slide"
|
|
||||||
"fadeIn,1,3,easeout"
|
|
||||||
"fadeOut,1,3,easein"
|
|
||||||
"fadeSwitch,1,3,easeout"
|
|
||||||
"fadeShadow,1,3,easeout"
|
|
||||||
"fadeDim,1,3,easeout"
|
|
||||||
"border,1,3,easeout"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
exec = [
|
|
||||||
"${pkgs.swaybg}/bin/swaybg -i ${config.wallpaper} --mode fill"
|
|
||||||
];
|
|
||||||
|
|
||||||
bind = let
|
|
||||||
swaylock = "${config.programs.swaylock.package}/bin/swaylock";
|
|
||||||
playerctl = "${config.services.playerctld.package}/bin/playerctl";
|
|
||||||
playerctld = "${config.services.playerctld.package}/bin/playerctld";
|
|
||||||
makoctl = "${config.services.mako.package}/bin/makoctl";
|
|
||||||
wofi = "${config.programs.wofi.package}/bin/wofi";
|
|
||||||
pass-wofi = "${pkgs.pass-wofi.override {
|
|
||||||
pass = config.programs.password-store.package;
|
|
||||||
}}/bin/pass-wofi";
|
|
||||||
|
|
||||||
grimblast = "${pkgs.inputs.hyprwm-contrib.grimblast}/bin/grimblast";
|
|
||||||
pactl = "${pkgs.pulseaudio}/bin/pactl";
|
|
||||||
tly = "${pkgs.tly}/bin/tly";
|
|
||||||
gtk-play = "${pkgs.libcanberra-gtk3}/bin/canberra-gtk-play";
|
|
||||||
notify-send = "${pkgs.libnotify}/bin/notify-send";
|
|
||||||
|
|
||||||
gtk-launch = "${pkgs.gtk3}/bin/gtk-launch";
|
|
||||||
xdg-mime = "${pkgs.xdg-utils}/bin/xdg-mime";
|
|
||||||
defaultApp = type: "${gtk-launch} $(${xdg-mime} query default ${type})";
|
|
||||||
|
|
||||||
terminal = config.home.sessionVariables.TERMINAL;
|
|
||||||
browser = defaultApp "x-scheme-handler/https";
|
|
||||||
editor = defaultApp "text/plain";
|
|
||||||
in [
|
|
||||||
# Program bindings
|
|
||||||
"SUPER,Return,exec,${terminal}"
|
|
||||||
"SUPER,e,exec,${editor}"
|
|
||||||
"SUPER,v,exec,${editor}"
|
|
||||||
"SUPER,b,exec,${browser}"
|
|
||||||
# Brightness control (only works if the system has lightd)
|
|
||||||
",XF86MonBrightnessUp,exec,light -A 10"
|
|
||||||
",XF86MonBrightnessDown,exec,light -U 10"
|
|
||||||
# Volume
|
|
||||||
",XF86AudioRaiseVolume,exec,${pactl} set-sink-volume @DEFAULT_SINK@ +5%"
|
|
||||||
",XF86AudioLowerVolume,exec,${pactl} set-sink-volume @DEFAULT_SINK@ -5%"
|
|
||||||
",XF86AudioMute,exec,${pactl} set-sink-mute @DEFAULT_SINK@ toggle"
|
|
||||||
"SHIFT,XF86AudioMute,exec,${pactl} set-source-mute @DEFAULT_SOURCE@ toggle"
|
|
||||||
",XF86AudioMicMute,exec,${pactl} set-source-mute @DEFAULT_SOURCE@ toggle"
|
|
||||||
# Screenshotting
|
|
||||||
",Print,exec,${grimblast} --notify --freeze copy output"
|
|
||||||
"SHIFT,Print,exec,${grimblast} --notify --freeze copy active"
|
|
||||||
"CONTROL,Print,exec,${grimblast} --notify --freeze copy screen"
|
|
||||||
"SUPER,Print,exec,${grimblast} --notify --freeze copy area"
|
|
||||||
"ALT,Print,exec,${grimblast} --notify --freeze copy area"
|
|
||||||
# Tally counter
|
|
||||||
"SUPER,z,exec,${notify-send} -t 1000 $(${tly} time) && ${tly} add && ${gtk-play} -i dialog-information" # Add new entry
|
|
||||||
"SUPERCONTROL,z,exec,${notify-send} -t 1000 $(${tly} time) && ${tly} undo && ${gtk-play} -i dialog-warning" # Undo last entry
|
|
||||||
"SUPERCONTROLSHIFT,z,exec,${tly} reset && ${gtk-play} -i complete" # Reset
|
|
||||||
"SUPERSHIFT,z,exec,${notify-send} -t 1000 $(${tly} time)" # Show current time
|
|
||||||
] ++
|
|
||||||
|
|
||||||
(lib.optionals config.services.playerctld.enable [
|
|
||||||
# Media control
|
|
||||||
",XF86AudioNext,exec,${playerctl} next"
|
|
||||||
",XF86AudioPrev,exec,${playerctl} previous"
|
|
||||||
",XF86AudioPlay,exec,${playerctl} play-pause"
|
|
||||||
",XF86AudioStop,exec,${playerctl} stop"
|
|
||||||
"ALT,XF86AudioNext,exec,${playerctld} shift"
|
|
||||||
"ALT,XF86AudioPrev,exec,${playerctld} unshift"
|
|
||||||
"ALT,XF86AudioPlay,exec,systemctl --user restart playerctld"
|
|
||||||
]) ++
|
|
||||||
# Screen lock
|
|
||||||
(lib.optionals config.programs.swaylock.enable [
|
|
||||||
",XF86Launch5,exec,${swaylock} -i ${config.wallpaper}"
|
|
||||||
",XF86Launch4,exec,${swaylock} -i ${config.wallpaper}"
|
|
||||||
"SUPER,backspace,exec,${swaylock} -i ${config.wallpaper}"
|
|
||||||
]) ++
|
|
||||||
# Notification manager
|
|
||||||
(lib.optionals config.services.mako.enable [
|
|
||||||
"SUPER,w,exec,${makoctl} dismiss"
|
|
||||||
]) ++
|
|
||||||
|
|
||||||
# Launcher
|
|
||||||
(lib.optionals config.programs.wofi.enable [
|
|
||||||
"SUPER,x,exec,${wofi} -S drun -x 10 -y 10 -W 25% -H 60%"
|
|
||||||
"SUPER,d,exec,${wofi} -S run"
|
|
||||||
] ++ (lib.optionals config.programs.password-store.enable [
|
|
||||||
",Scroll_Lock,exec,${pass-wofi}" # fn+k
|
|
||||||
",XF86Calculator,exec,${pass-wofi}" # fn+f12
|
|
||||||
"SUPER,semicolon,exec,pass-wofi"
|
|
||||||
]));
|
|
||||||
|
|
||||||
monitor = map (m: let
|
|
||||||
resolution = "${toString m.width}x${toString m.height}@${toString m.refreshRate}";
|
|
||||||
position = "${toString m.x}x${toString m.y}";
|
|
||||||
in
|
|
||||||
"${m.name},${if m.enabled then "${resolution},${position},1" else "disable"}"
|
|
||||||
) (config.monitors);
|
|
||||||
|
|
||||||
workspace = map (m:
|
|
||||||
"${m.name},${m.workspace}"
|
|
||||||
) (lib.filter (m: m.enabled && m.workspace != null) config.monitors);
|
|
||||||
|
|
||||||
};
|
|
||||||
# This is order sensitive, so it has to come here.
|
|
||||||
extraConfig = ''
|
|
||||||
# Passthrough mode (e.g. for VNC)
|
|
||||||
bind=SUPER,P,submap,passthrough
|
|
||||||
submap=passthrough
|
|
||||||
bind=SUPER,P,submap,reset
|
|
||||||
submap=reset
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{ lib, config, ... }:
|
|
||||||
let
|
|
||||||
cfg = config.wayland.windowManager.hyprland;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
config = lib.mkIf (cfg.enable && cfg.systemdIntegration) {
|
|
||||||
# Stolen from https://github.com/alebastr/sway-systemd/commit/0fdb2c4b10beb6079acd6073c5b3014bd58d3b74
|
|
||||||
systemd.user.targets.hyprland-session-shutdown = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Shutdown running Hyprland session";
|
|
||||||
DefaultDependencies = "no";
|
|
||||||
StopWhenUnneeded = "true";
|
|
||||||
|
|
||||||
Conflicts = [
|
|
||||||
"graphical-session.target"
|
|
||||||
"graphical-session-pre.target"
|
|
||||||
"hyprland-session.target"
|
|
||||||
];
|
|
||||||
After = [
|
|
||||||
"graphical-session.target"
|
|
||||||
"graphical-session-pre.target"
|
|
||||||
"hyprland-session.target"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
wayland.windowManager.hyprland.settings.bind = lib.mkAfter [
|
|
||||||
"SUPERSHIFT,e,exec,systemctl --user start hyprland-session-shutdown.target; hyprctl dispatch exit"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,9 +1,6 @@
|
||||||
{ pkgs, ... }: {
|
{ pkgs, ... }: {
|
||||||
imports = [
|
imports = [
|
||||||
./lutris.nix
|
# ./steam.nix
|
||||||
./steam.nix
|
|
||||||
./prism-launcher.nix
|
|
||||||
./runescape.nix
|
|
||||||
];
|
];
|
||||||
home.packages = with pkgs; [ gamescope ];
|
home.packages = with pkgs; [ gamescope ];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
{ lib, pkgs, ... }: {
|
|
||||||
home = {
|
|
||||||
packages = [ pkgs.factorio ];
|
|
||||||
persistence = {
|
|
||||||
"/persist/home/misterio" = {
|
|
||||||
allowOther = true;
|
|
||||||
directories = [ ".factorio" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
{ pkgs, lib, ... }: {
|
|
||||||
home.packages = [ pkgs.lutris ];
|
|
||||||
|
|
||||||
home.persistence = {
|
|
||||||
"/persist/home/misterio" = {
|
|
||||||
allowOther = true;
|
|
||||||
directories = [
|
|
||||||
{
|
|
||||||
# Use symlink, as games may be IO-heavy
|
|
||||||
directory = "Games/Lutris";
|
|
||||||
method = "symlink";
|
|
||||||
}
|
|
||||||
".config/lutris"
|
|
||||||
".local/share/lutris"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
{ pkgs, lib, ... }: {
|
|
||||||
home.packages = [ pkgs.osu-lazer ];
|
|
||||||
|
|
||||||
home.persistence = {
|
|
||||||
"/persist/home/misterio".directories = [ ".local/share/osu" ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
{ pkgs, lib, ... }: {
|
|
||||||
home.packages = [ pkgs.prismlauncher-qt5 ];
|
|
||||||
|
|
||||||
home.persistence = {
|
|
||||||
"/persist/home/misterio".directories = [ ".local/share/PrismLauncher" ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
{ pkgs, lib, ... }:
|
|
||||||
let
|
|
||||||
# Add PULSE_LATENCY_MSEC to .desktop file
|
|
||||||
pulse_latency = 100;
|
|
||||||
runescape = pkgs.runescape.overrideAttrs (oa: {
|
|
||||||
nativeBuildInputs = (oa.nativeBuildInputs or []) ++ [
|
|
||||||
pkgs.makeWrapper
|
|
||||||
];
|
|
||||||
buildCommand = (oa.buildCommand or "") + ''
|
|
||||||
wrapProgram "$out/bin/RuneScape" \
|
|
||||||
--set PULSE_LATENCY_MSEC ${toString pulse_latency} \
|
|
||||||
--run 'echo $PULSE_LATENCY_MSEC'
|
|
||||||
'';
|
|
||||||
});
|
|
||||||
openssl = lib.head (lib.filter (p: p.pname == "openssl") runescape.fhsenv.targetPaths);
|
|
||||||
in {
|
|
||||||
home.packages = [
|
|
||||||
runescape
|
|
||||||
pkgs.hdos
|
|
||||||
pkgs.runelite
|
|
||||||
];
|
|
||||||
|
|
||||||
nixpkgs.config.permittedInsecurePackages = [
|
|
||||||
openssl.name
|
|
||||||
];
|
|
||||||
|
|
||||||
home.persistence = {
|
|
||||||
"/persist/home/misterio" = {
|
|
||||||
allowOther = true;
|
|
||||||
directories = [
|
|
||||||
"Jagex"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -34,7 +34,7 @@ in
|
||||||
protontricks
|
protontricks
|
||||||
];
|
];
|
||||||
home.persistence = {
|
home.persistence = {
|
||||||
"/persist/home/misterio" = {
|
"/persist/home/gburd" = {
|
||||||
allowOther = true;
|
allowOther = true;
|
||||||
directories = [
|
directories = [
|
||||||
".factorio"
|
".factorio"
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
{ pkgs, lib, ... }: {
|
|
||||||
home.packages = [ pkgs.yuzu-mainline ];
|
|
||||||
|
|
||||||
home.persistence = {
|
|
||||||
"/persist/home/misterio" = {
|
|
||||||
allowOther = true;
|
|
||||||
directories = [ "Games/Yuzu" ".config/yuzu" ".local/share/yuzu" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -12,6 +12,6 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
home.persistence = {
|
home.persistence = {
|
||||||
"/persist/home/misterio".directories = [ ".password-store" ];
|
"/persist/home/gburd".directories = [ ".password-store" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,9 +5,9 @@ let
|
||||||
pass = "${config.programs.password-store.package}/bin/pass";
|
pass = "${config.programs.password-store.package}/bin/pass";
|
||||||
|
|
||||||
common = rec {
|
common = rec {
|
||||||
realName = "Gabriel Fontes";
|
realName = "Greg Burd";
|
||||||
gpg = {
|
gpg = {
|
||||||
key = "7088 C742 1873 E0DB 97FF 17C2 245C AB70 B4C2 25E9";
|
key = "D4BB42BE729AEFBD2EFEBF8822931AF7895E82DF";
|
||||||
signByDefault = true;
|
signByDefault = true;
|
||||||
};
|
};
|
||||||
signature = {
|
signature = {
|
||||||
|
@ -15,7 +15,7 @@ let
|
||||||
text = ''
|
text = ''
|
||||||
${realName}
|
${realName}
|
||||||
|
|
||||||
https://gsfontes.com
|
https://burd.me
|
||||||
PGP: ${gpg.key}
|
PGP: ${gpg.key}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -23,7 +23,7 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
home.persistence = {
|
home.persistence = {
|
||||||
"/persist/home/misterio".directories = [ "Mail" ];
|
"/persist/home/gburd".directories = [ "Mail" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
accounts.email = {
|
accounts.email = {
|
||||||
|
@ -31,11 +31,11 @@ in
|
||||||
accounts = {
|
accounts = {
|
||||||
personal = rec {
|
personal = rec {
|
||||||
primary = true;
|
primary = true;
|
||||||
address = "hi@m7.rs";
|
address = "greg@burd.me";
|
||||||
aliases = ["gabriel@gsfontes.com" "eu@misterio.me"];
|
aliases = ["gregburd@gmail.com"];
|
||||||
passwordCommand = "${pass} ${smtp.host}/${address}";
|
passwordCommand = "${pass} ${smtp.host}/${address}";
|
||||||
|
|
||||||
imap.host = "mail.m7.rs";
|
imap.host = "mail.burd.me";
|
||||||
mbsync = {
|
mbsync = {
|
||||||
enable = true;
|
enable = true;
|
||||||
create = "maildir";
|
create = "maildir";
|
||||||
|
@ -53,25 +53,16 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
msmtp.enable = true;
|
msmtp.enable = true;
|
||||||
smtp.host = "mail.m7.rs";
|
smtp.host = "mail.burd.me";
|
||||||
userName = address;
|
userName = address;
|
||||||
} // common;
|
} // common;
|
||||||
|
|
||||||
college = rec {
|
symas = rec {
|
||||||
address = "g.fontes@usp.br";
|
address = "gburd@symas.com";
|
||||||
passwordCommand = "${pass} ${smtp.host}/${address}";
|
|
||||||
|
|
||||||
msmtp.enable = true;
|
|
||||||
smtp.host = "smtp.gmail.com";
|
|
||||||
userName = address;
|
|
||||||
} // common;
|
|
||||||
|
|
||||||
zoocha = rec {
|
|
||||||
address = "gabriel@zoocha.com";
|
|
||||||
passwordCommand = "${pass} ${smtp.host}/${address}";
|
passwordCommand = "${pass} ${smtp.host}/${address}";
|
||||||
|
|
||||||
/* TODO: add imap (conditionally)
|
/* TODO: add imap (conditionally)
|
||||||
imap.host = "imap.gmail.com";
|
imap.host = "symas.zmailcloud.com";
|
||||||
mbsync = {
|
mbsync = {
|
||||||
enable = true;
|
enable = true;
|
||||||
create = "maildir";
|
create = "maildir";
|
||||||
|
@ -87,7 +78,7 @@ in
|
||||||
*/
|
*/
|
||||||
|
|
||||||
msmtp.enable = true;
|
msmtp.enable = true;
|
||||||
smtp.host = "smtp.gmail.com";
|
smtp.host = "symas.zmailcloud.com";
|
||||||
userName = address;
|
userName = address;
|
||||||
} // common;
|
} // common;
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,7 +6,7 @@ in
|
||||||
home.packages = with pkgs; [ vdirsyncer ];
|
home.packages = with pkgs; [ vdirsyncer ];
|
||||||
|
|
||||||
home.persistence = {
|
home.persistence = {
|
||||||
"/persist/home/misterio".directories =
|
"/persist/home/gburd".directories =
|
||||||
[ "Calendars" "Contacts" ".local/share/vdirsyncer" ];
|
[ "Calendars" "Contacts" ".local/share/vdirsyncer" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -27,9 +27,9 @@ in
|
||||||
|
|
||||||
[storage contacts_remote]
|
[storage contacts_remote]
|
||||||
type = "carddav"
|
type = "carddav"
|
||||||
url = "https://dav.m7.rs"
|
url = "https://dav.burd.me"
|
||||||
username = "hi@m7.rs"
|
username = "greg@burd.me"
|
||||||
password.fetch = ["command", "${pass}", "mail.m7.rs/hi@m7.rs"]
|
password.fetch = ["command", "${pass}", "mail.burd.m/greg@burd.me"]
|
||||||
|
|
||||||
[pair calendars]
|
[pair calendars]
|
||||||
a = "calendars_local"
|
a = "calendars_local"
|
||||||
|
@ -45,9 +45,9 @@ in
|
||||||
|
|
||||||
[storage calendars_remote]
|
[storage calendars_remote]
|
||||||
type = "caldav"
|
type = "caldav"
|
||||||
url = "https://dav.m7.rs"
|
url = "https://dav.burd.me"
|
||||||
username = "hi@m7.rs"
|
username = "greg@burd.me"
|
||||||
password.fetch = ["command", "${pass}", "mail.m7.rs/hi@m7.rs"]
|
password.fetch = ["command", "${pass}", "mail.burd.me/greg@burd.me"]
|
||||||
'';
|
'';
|
||||||
|
|
||||||
systemd.user.services.vdirsyncer = {
|
systemd.user.services.vdirsyncer = {
|
||||||
|
|
|
@ -35,16 +35,16 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
username = lib.mkDefault "misterio";
|
username = lib.mkDefault "gburd";
|
||||||
homeDirectory = lib.mkDefault "/home/${config.home.username}";
|
homeDirectory = lib.mkDefault "/home/${config.home.username}";
|
||||||
stateVersion = lib.mkDefault "22.05";
|
stateVersion = lib.mkDefault "23.05";
|
||||||
sessionPath = [ "$HOME/.local/bin" ];
|
sessionPath = [ "$HOME/.local/bin" ];
|
||||||
sessionVariables = {
|
sessionVariables = {
|
||||||
FLAKE = "$HOME/Documents/NixConfig";
|
FLAKE = "$HOME/Documents/NixConfig";
|
||||||
};
|
};
|
||||||
|
|
||||||
persistence = {
|
persistence = {
|
||||||
"/persist/home/misterio" = {
|
"/persist/home/gburd" = {
|
||||||
directories = [
|
directories = [
|
||||||
"Documents"
|
"Documents"
|
||||||
"Downloads"
|
"Downloads"
|
||||||
|
@ -57,19 +57,4 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
colorscheme = lib.mkDefault colorSchemes.dracula;
|
|
||||||
wallpaper =
|
|
||||||
let
|
|
||||||
largest = f: xs: builtins.head (builtins.sort (a: b: a > b) (map f xs));
|
|
||||||
largestWidth = largest (x: x.width) config.monitors;
|
|
||||||
largestHeight = largest (x: x.height) config.monitors;
|
|
||||||
in
|
|
||||||
lib.mkDefault (nixWallpaperFromScheme
|
|
||||||
{
|
|
||||||
scheme = config.colorscheme;
|
|
||||||
width = largestWidth;
|
|
||||||
height = largestHeight;
|
|
||||||
logoScale = 4;
|
|
||||||
});
|
|
||||||
home.file.".colorscheme".text = config.colorscheme.slug;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./global
|
./global
|
||||||
./features/desktop/hyprland
|
./features/desktop/gnome
|
||||||
./features/desktop/wireless
|
./features/desktop/wireless
|
||||||
./features/productivity
|
./features/productivity
|
||||||
./features/pass
|
./features/pass
|
||||||
|
@ -12,11 +12,11 @@
|
||||||
wallpaper = outputs.wallpapers.aenami-lunar;
|
wallpaper = outputs.wallpapers.aenami-lunar;
|
||||||
colorscheme = inputs.nix-colors.colorSchemes.atelier-heath;
|
colorscheme = inputs.nix-colors.colorSchemes.atelier-heath;
|
||||||
|
|
||||||
monitors = [{
|
# monitors = [{
|
||||||
name = "eDP-1";
|
# name = "eDP-1";
|
||||||
width = 1920;
|
# width = 1920;
|
||||||
height = 1080;
|
# height = 1080;
|
||||||
workspace = "1";
|
# workspace = "1";
|
||||||
primary = true;
|
# primary = true;
|
||||||
}];
|
# }];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,246 +1,63 @@
|
||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
Comment: 7088 C742 1873 E0DB 97FF 17C2 245C AB70 B4C2 25E9
|
Version: GnuPG v1
|
||||||
Comment: Gabriel Fontes <hi@m7.rs>
|
|
||||||
Comment: Gabriel Fontes <gabriel@gsfontes.com>
|
|
||||||
Comment: Gabriel Fontes <eu@misterio.me>
|
|
||||||
Comment: Gabriel Fontes <g.fontes@usp.br>
|
|
||||||
Comment: Gabriel Fontes <gabriel@gelos.club>
|
|
||||||
Comment: Gabriel Fontes <gabriel.fontes@uget.express>
|
|
||||||
Comment: Gabriel Fontes <gabriel@zoocha.com>
|
|
||||||
|
|
||||||
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
|
||||||
9xirCzvyji2yrZ1bWj0qnxeGZx4/akXN3a6m3MPOTEKOxNnPDOs497spKusU3l4F
|
TFu5ZpiN0+ys06HUFOsNC4f4GGwrsEP9kSdOUiNYzixagjThqWGBmMW/MkWfdGOg
|
||||||
wWDKnhHPdYz5kdIPOfOBwipLDWFQOoWIa6/mvuWCKQ8X4Hp0meiBFsDaSGvU9OE/
|
5Tox/hDv9aWCr+8P2C3XyLF4w2i2ADDRCbF77Tag4/d1Ni/hz10X3lgZ/jzmhw4i
|
||||||
NqJj44RSnB/IWPLsDZnDYdIFhVuZYIlQ5cES3h3ACdae0oF6PqzK8x+iJTNMtdae
|
WcGEseGpMQEDbh098mUcdJJbOceXnozahIWA1XxP93gpVKpuXUyDYxJvbOMMYSQT
|
||||||
AmNZyFEpues3iwLcuwZlFyO8hn9HNZsQnBDhyJPksWwqw736KJQH/OKv10X1ZHdz
|
6x/O5FiZynjqsXMq4B+lmGmYoR7qzbfk7e0EugSj6dWrUVM=
|
||||||
wGItcLm0LEdhYnJpZWwgRm9udGVzIDxnYWJyaWVsLmZvbnRlc0B1Z2V0LmV4cHJl
|
=yrZE
|
||||||
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
|
|
||||||
LyE=
|
|
||||||
=UHEm
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDci4wJghnRRSqQuX1z2xeaUR+p/muKzac0jw0mgpXE2T/3iVlMJJ3UXJ+tIbySP6ezt0GVmzejNOvUarPAm0tOcW6W0Ejys2Tj+HBRU19rcnUtf4vsKk8r5PW5MnwS8DqZonP5eEbhW2OrX5ZsVyDT+Bqrf39p3kOyWYLXT2wA7y928g8FcXOZjwjTaWGWtA+BxAvbJgXhU9cl/y45kF69rfmc3uOQmeXpKNyOlTk6ipSrOfJkcHgNFFeLnxhJ7rYxpoXnxbObGhaNqn7gc5mt+ek+fwFzZ8j6QSKFsPr0NzwTFG80IbyiyrnC/MeRNh7SQFPAESIEP8LK3PoNx2l1M+MjCQXsb4oIG2oYYMRa2yx8qZ3npUOzMYOkJFY1uI/UEE/j/PlQSzMHfpmWus4o2sijfr8OmVPGeoU/UnVPyINqHhyAd1d3Iji3y3LMVemHtp5wVcuswABC7IRVVKZYrMCXMiycY5n00ch6XTaXBwCY00y8B3Mzkd7Ofq98YHc= hi@m7.rs
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGSNy/vMr2Zk9pvfjQnxiU9F8CGQJwCiXDxPecKG9/q+ Greg Burd <greg@burd.me> - 2023-01-23
|
||||||
|
|
1
home/gburd/symas-ssh.pub
Normal file
|
@ -0,0 +1 @@
|
||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDPvS6pE5Y8Yc3YnKpKinjVKyziqnb7JZJGonDKnZi3I Greg Burd <gburd@symas.com> - 2023-08-03
|
|
@ -2,7 +2,7 @@
|
||||||
{
|
{
|
||||||
# Enable acme for usage with nginx vhosts
|
# Enable acme for usage with nginx vhosts
|
||||||
security.acme = {
|
security.acme = {
|
||||||
defaults.email = "eu@misterio.me";
|
defaults.email = "greg+acme@burd.me";
|
||||||
acceptTerms = true;
|
acceptTerms = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ in
|
||||||
flags = [
|
flags = [
|
||||||
"--refresh"
|
"--refresh"
|
||||||
];
|
];
|
||||||
flake = "git://m7.rs/nix-config?ref=release-${hostName}";
|
flake = "git://github.com/gburd/nix-config?ref=release-${hostName}";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Only run if current config (self) is older than the new one.
|
# Only run if current config (self) is older than the new one.
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
# This file (and the global directory) holds config that i use on all hosts
|
# This file (and the global directory) holds config used on all hosts
|
||||||
{ inputs, outputs, ... }: {
|
{ inputs, outputs, ... }: {
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
./acme.nix
|
./acme.nix
|
||||||
|
@ -11,7 +13,7 @@
|
||||||
./optin-persistence.nix
|
./optin-persistence.nix
|
||||||
./podman.nix
|
./podman.nix
|
||||||
./sops.nix
|
./sops.nix
|
||||||
./ssh-serve-store.nix
|
# ./ssh-serve-store.nix
|
||||||
./steam-hardware.nix
|
./steam-hardware.nix
|
||||||
./systemd-initrd.nix
|
./systemd-initrd.nix
|
||||||
./tailscale.nix
|
./tailscale.nix
|
||||||
|
@ -35,7 +37,7 @@
|
||||||
environment.enableAllTerminfo = true;
|
environment.enableAllTerminfo = true;
|
||||||
|
|
||||||
hardware.enableRedistributableFirmware = true;
|
hardware.enableRedistributableFirmware = true;
|
||||||
networking.domain = "m7.rs";
|
networking.domain = "burd.me";
|
||||||
|
|
||||||
# Increase open file limit for sudoers
|
# Increase open file limit for sudoers
|
||||||
security.pam.loginLimits = [
|
security.pam.loginLimits = [
|
||||||
|
|
|
@ -1,13 +1,22 @@
|
||||||
{ lib, ... }: {
|
{ lib, ... }: {
|
||||||
|
|
||||||
|
# Select internationalisation properties.
|
||||||
i18n = {
|
i18n = {
|
||||||
defaultLocale = lib.mkDefault "en_US.UTF-8";
|
defaultLocale = lib.mkDefault "en_US.UTF-8";
|
||||||
extraLocaleSettings = {
|
extraLocaleSettings = {
|
||||||
LC_TIME = lib.mkDefault "pt_BR.UTF-8";
|
LC_ADDRESS = "en_US.UTF-8";
|
||||||
|
LC_IDENTIFICATION = "en_US.UTF-8";
|
||||||
|
LC_MEASUREMENT = "en_US.UTF-8";
|
||||||
|
LC_MONETARY = "en_US.UTF-8";
|
||||||
|
LC_NAME = "en_US.UTF-8";
|
||||||
|
LC_NUMERIC = "en_US.UTF-8";
|
||||||
|
LC_PAPER = "en_US.UTF-8";
|
||||||
|
LC_TELEPHONE = "en_US.UTF-8";
|
||||||
|
LC_TIME = "en_US.UTF-8";
|
||||||
};
|
};
|
||||||
supportedLocales = lib.mkDefault [
|
supportedLocales = lib.mkDefault [
|
||||||
"en_US.UTF-8/UTF-8"
|
"en_US.UTF-8/UTF-8"
|
||||||
"pt_BR.UTF-8/UTF-8"
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
time.timeZone = lib.mkDefault "America/Sao_Paulo";
|
time.timeZone = lib.mkDefault "America/New_York";
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,12 +2,12 @@
|
||||||
{
|
{
|
||||||
nix = {
|
nix = {
|
||||||
settings = {
|
settings = {
|
||||||
substituters = [
|
# substituters = [
|
||||||
"https://cache.m7.rs"
|
# "https://cache.burd.me"
|
||||||
];
|
# ];
|
||||||
trusted-public-keys = [
|
# trusted-public-keys = [
|
||||||
"cache.m7.rs:kszZ/NSwE/TjhOcPPQ16IuUiuRSisdiIwhKZCxguaWg="
|
# "cache.burd.me:kszZ/NSwE/TjhOcPPQ16IuUiuRSisdiIwhKZCxguaWg="
|
||||||
];
|
# ];
|
||||||
trusted-users = [ "root" "@wheel" ];
|
trusted-users = [ "root" "@wheel" ];
|
||||||
auto-optimise-store = lib.mkDefault true;
|
auto-optimise-store = lib.mkDefault true;
|
||||||
experimental-features = [ "nix-command" "flakes" "repl-flake" ];
|
experimental-features = [ "nix-command" "flakes" "repl-flake" ];
|
||||||
|
|
|
@ -4,7 +4,7 @@ let
|
||||||
inherit (config.networking) hostName;
|
inherit (config.networking) hostName;
|
||||||
hosts = outputs.nixosConfigurations;
|
hosts = outputs.nixosConfigurations;
|
||||||
pubKey = host: ../../${host}/ssh_host_ed25519_key.pub;
|
pubKey = host: ../../${host}/ssh_host_ed25519_key.pub;
|
||||||
gitHost = hosts."alcyone".config.networking.hostName;
|
gitHost = hosts."TODO-host-git-host-name-here".config.networking.hostName;
|
||||||
|
|
||||||
# Sops needs acess to the keys before the persist dirs are even mounted; so
|
# Sops needs acess to the keys before the persist dirs are even mounted; so
|
||||||
# just persisting the keys won't work, we must point at /persist
|
# just persisting the keys won't work, we must point at /persist
|
||||||
|
@ -34,9 +34,9 @@ in
|
||||||
knownHosts = builtins.mapAttrs
|
knownHosts = builtins.mapAttrs
|
||||||
(name: _: {
|
(name: _: {
|
||||||
publicKeyFile = pubKey name;
|
publicKeyFile = pubKey name;
|
||||||
extraHostNames =
|
# extraHostNames =
|
||||||
(lib.optional (name == hostName) "localhost") ++ # Alias for localhost if it's the same host
|
# (lib.optional (name == hostName) "localhost") ++ # Alias for localhost if it's the same host
|
||||||
(lib.optionals (name == gitHost) [ "m7.rs" "git.m7.rs" ]); # Alias for m7.rs and git.m7.rs if it's the git host
|
# (lib.optionals (name == gitHost) [ "burd.me" "git.burd.me" ]);
|
||||||
})
|
})
|
||||||
hosts;
|
hosts;
|
||||||
};
|
};
|
||||||
|
|
4
hosts/common/optional/cups.nix
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
# Enable CUPS to print documents.
|
||||||
|
services.printing.enable = true;
|
||||||
|
}
|
|
@ -2,6 +2,14 @@
|
||||||
let hostname = config.networking.hostName;
|
let hostname = config.networking.hostName;
|
||||||
in {
|
in {
|
||||||
boot.initrd = {
|
boot.initrd = {
|
||||||
luks.devices."${hostname}".device = "/dev/disk/by-label/${hostname}_crypt";
|
# Enable swap on luks
|
||||||
|
luks.devices."luks-3b6dddfd-5390-441f-a72d-a3b2809204df".device = "/dev/disk/by-uuid/3b6dddfd-5390-441f-a72d-a3b2809204df";
|
||||||
|
|
||||||
|
# Setup encrypted root keyfile
|
||||||
|
luks.devices."luks-3b6dddfd-5390-441f-a72d-a3b2809204df".keyFile = "/crypto_keyfile.bin";
|
||||||
|
secrets = {
|
||||||
|
"/crypto_keyfile.bin" = null;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
{
|
{
|
||||||
services = {
|
services = {
|
||||||
xserver = {
|
xserver = {
|
||||||
|
enable = true;
|
||||||
desktopManager.gnome = {
|
desktopManager.gnome = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
displayManager.gdm = {
|
displayManager.gdm = {
|
||||||
enable = true;
|
enable = true;
|
||||||
autoSuspend = false;
|
autoSuspend = false;
|
||||||
|
wayland = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
geoclue2.enable = true;
|
geoclue2.enable = true;
|
||||||
|
|
|
@ -15,12 +15,12 @@ let
|
||||||
exec '${vars} ${command} -l debug; ${pkgs.sway}/bin/swaymsg exit'
|
exec '${vars} ${command} -l debug; ${pkgs.sway}/bin/swaymsg exit'
|
||||||
''}";
|
''}";
|
||||||
|
|
||||||
misterioCfg = homeCfgs.misterio;
|
gburdCfg = homeCfgs.gburd;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
users.extraUsers.greeter.packages = [
|
users.extraUsers.greeter.packages = [
|
||||||
misterioCfg.gtk.theme.package
|
gburdCfg.gtk.theme.package
|
||||||
misterioCfg.gtk.iconTheme.package
|
gburdCfg.gtk.iconTheme.package
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.regreet = {
|
programs.regreet = {
|
||||||
|
@ -28,10 +28,10 @@ in
|
||||||
settings = {
|
settings = {
|
||||||
GTK = {
|
GTK = {
|
||||||
icon_theme_name = "ePapirus";
|
icon_theme_name = "ePapirus";
|
||||||
theme_name = misterioCfg.gtk.theme.name;
|
theme_name = gburdCfg.gtk.theme.name;
|
||||||
};
|
};
|
||||||
background = {
|
background = {
|
||||||
path = misterioCfg.wallpaper;
|
path = gburdCfg.wallpaper;
|
||||||
fit = "Cover";
|
fit = "Cover";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,7 +11,7 @@ in
|
||||||
recommendedOptimisation = true;
|
recommendedOptimisation = true;
|
||||||
clientMaxBodySize = "300m";
|
clientMaxBodySize = "300m";
|
||||||
|
|
||||||
virtualHosts."${hostName}.m7.rs" = {
|
virtualHosts."${hostName}.burd.me" = {
|
||||||
default = true;
|
default = true;
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
enableACME = true;
|
enableACME = true;
|
||||||
|
|
|
@ -9,11 +9,6 @@
|
||||||
plymouth = {
|
plymouth = {
|
||||||
enable = true;
|
enable = true;
|
||||||
theme = "spinner-monochrome";
|
theme = "spinner-monochrome";
|
||||||
themePackages = [
|
|
||||||
(pkgs.plymouth-spinner-monochrome.override {
|
|
||||||
inherit (config.boot.plymouth) logo;
|
|
||||||
})
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
loader.timeout = 0;
|
loader.timeout = 0;
|
||||||
kernelParams = [
|
kernelParams = [
|
||||||
|
|
8
hosts/common/optional/x11-keymap.nix
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
# Configure keymap in X11
|
||||||
|
services.xserver = {
|
||||||
|
layout = "us";
|
||||||
|
xkbVariant = "";
|
||||||
|
xkbOptions = "ctrl:swapcaps";
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,95 +1,34 @@
|
||||||
misterio-password: ENC[AES256_GCM,data:bQR9UtCNRl9S/anjqwO8Ssnbx8v+sx1YMKgNeL2lvHQ0JB0vXcyQuUHnvKF0qZU3h8G/zJBJ06oDSwd0xH6wghExC3LQGkqG4uuPxj2JZTbZMgaCYawq2clo45D1p/7UYkm1d+5iHGO1Ag==,iv:SYGY0leQkFniuxiG/V4EsBPF4saSctoQ9Yke9cg5QzA=,tag:5Gzj98eaop9nfSUu0x70hQ==,type:str]
|
gburd-password: ENC[AES256_GCM,data:ldXmHftA4POy,iv:8NLcj8hrZ9WUeqkDLctgO5G9DiK3Abwu5Rk9jbrFLhk=,tag:326N+ckbPOKi+LZsgrxusw==,type:str]
|
||||||
layla-password: ENC[AES256_GCM,data:dE83+HB3RHl1g95mAtO7DjETyibWuJTgSAJBksYkUeG97bsXbP3YAgEdZ6NJ3YQ6/AAqVNqvhmL/GYt8B1E4cvBls8cL5YlNjvDRrp+15uDpQ8mRNF49xGciRfDsn2GQqkCLpZdHaEqowg==,iv:F2gOedMcFce/JFEY2RPAWEqQxSFsSGU4cmcTRU1+5R4=,tag:CzgiefLAzg0TwB6rRA0YDA==,type:str]
|
wireless: ENC[AES256_GCM,data:I3gTVu4geDms+Q==,iv:Uxjdmx/fi6mA6xt/j1dNajR4iJqUvavY+dhMZF0+500=,tag:P712+4p3lstJwGaN9DM7PA==,type:str]
|
||||||
wireless: ENC[AES256_GCM,data:MZiHyKHBn6M6I9OjTFKdCvssAWCXSvIpaV6YLx+EWlSgZlihLVRHx2bZcKKo/rAoXi3kAIaEbDeID75HozMLPTcks7hFrMwoYCFlmLYsNefBvqrVHNBy1RlZqe4trF6ikKdYCJcuFcQYlTStWdjrWkdHPTJv45U0RRhzgSUvINWf3Ykv6Qt7XPGH/RLVOnIq6zmcomDx7Bi7HHANRKlEpdwhAa7O8kUDA2tMFUF9w85AW2JVlBPOVibJUd87l9OtaSNc8lJSRykvS8a1mFoMaIz8P604vRCG5N1HVahXGUg7QtTGt/gg1QJ9xZouULAM5SNaI9t3cg5XUo6nj4rt4Wcsg7hR3WdCtEKLr9xq1Ytsh2hhZkIfiZ2akEi9zU92CoOBsVDJy/PBuE0aR28cq4BzgJBGOvfGemXnuYdF3em4mvOcEQ0c4eq1trVyPFnlSmwyVEgljG042oDgdaGv12Sdxykr7QY/NpU5G/yF+hUsbaKCc/Kj7rgqWHf1ZMXOjphaYEeWwbSELU7+oMqlWHUEPqrQgRtqsjdvqKCPhMdqJl3qHGEFAE4ogPinhBWL2ajLPLefTCKyP6S/Lsj0,iv:IX60RPNzvzudIv0tN+tgLwSxCjAZeyo+QuZYgONc4R0=,tag:LVa/eneBz7iSOLfcE5Rhkg==,type:str]
|
|
||||||
sops:
|
sops:
|
||||||
kms: []
|
kms: []
|
||||||
gcp_kms: []
|
gcp_kms: []
|
||||||
azure_kv: []
|
azure_kv: []
|
||||||
hc_vault: []
|
hc_vault: []
|
||||||
age:
|
age:
|
||||||
- recipient: age1hm5lf4qk84r4wh00atn6hpts7mpdx80adq26wht2e5qh9ewvhyaszfv82d
|
- recipient: age1udt7tgf8pa0r278z6xwrzndg5w9jyvph8p0nycpqw3d39aal5u6skfv556
|
||||||
enc: |
|
enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAyTE5PczhoNHpBWWczZHY2
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxbTFNdmdQRGxEdDFLbGJH
|
||||||
dE5aa2tTeGFxMVBhMEtKQkwyNXdjMm5uZHlNCkVRNEFrbWJVeUdLWElBc0hNOXRN
|
bGcvYklVOWxEd3NDWHJxUENDaWhrZ29VQVU0ClFWbE5Fd1RwUWRLM2NOdXh0MXlI
|
||||||
cGlCUHYxc0MxejBIKy9JMkR1QlNtbDQKLS0tIFFhcFkwMXRhMnYrcEd2Qks3TjBC
|
MWI1TDZjUmsySitheWdZditORml4dFkKLS0tIERWTUFyeW9VK0NSQlI2Nk92MmRa
|
||||||
bnplZDBhMDlkME9CaklmM1hUK1k2TDAKtZStGRVRFvsJhNBozYwD8FTRWYNpViwT
|
YmxhVWhMM1l6R28xL2NLLytBWkpvVWcK1SZNdwTA/3/wF+fzWOlwqAmQCgKJh+98
|
||||||
mK3qU6aVRU73MJrjpqmsfgrn7zKZ/pC+BGr3VQSRVb/3q1U2zEIQBQ==
|
L5sVicaj0ns+G8ZsqEPnOYklHo1o0G0GpF39LOx8bDpGAQllHRpsBQ==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
- recipient: age1709qfrwglm75v5x8lpuhryt83k6p6c90npplzzec6a5w8ct93ejscpqpc3
|
lastmodified: "2023-09-18T19:32:57Z"
|
||||||
enc: |
|
mac: ENC[AES256_GCM,data:9feL7sfe6LOXecCCI5C+VKe6i6xMjWMSnP4i3rb2y1a3+/xB5575RPf3nZUbzUz9OwZIDUiydO9nx1vPHQPFcwz/gfdPsNbu0q7AuVxa9RhDEW3+vrBiGQDWUIXA29yU2XN4QYqwwIDq/kymBXH48CBCgj3RBfCBnOfIkvwQvu8=,iv:CIyGMjvT31ZkNj0BTs2euINxa2ihDqOD/ASpDqFo4Sk=,tag:zZQBqsGAcDc3ezrBhAqxNw==,type:str]
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiVkowVnc2aG1qSHBLaDdO
|
|
||||||
RkVuZ0JOeDRWSlE4TDl3bWJ5eVVUZ3ltWkZNCm51VWFNU0dURDhRU3JLVDBoMzcx
|
|
||||||
aks1bC9Vblg2S2RldjcyL2FDMzRSVU0KLS0tIGt0aC9GTmVwV01BdFJrUFZmcTJJ
|
|
||||||
WTJiTFVMV1BZOVFQdDgzTGFrZlRybVkK5sAsALcmI6LaTS8d0N3fovrqy2T5WI8l
|
|
||||||
DFwYJ8cpNwA/b7ImLD4GWYuENk+1JAp4NgbPK5XQ/vdk590080E6Kw==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1j9ld6ey62hqd33xkyd2fg9362k6xhm5gavsrpsfalwpcs8smxfdqpk84a2
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBDSS9sd1J3MnVCcUdKVWRV
|
|
||||||
V0EyVm5LVE5zLzJkd0QwR3JaZ09jdFVhdmxzCloxdGpwUGJCRWUvcDU2ZE11SWNw
|
|
||||||
NzBCNzhrTnNXNzEwS1luSlI3aENFb2MKLS0tIDNJMy92bkhnaEJxbUI5OGVnZ1Fa
|
|
||||||
ZVFTa3IzeDVVT01IOXhGOE9KZVFQV2sK7LLx8yGP3iKpXtlIrvWNXCkHuqWfc6AP
|
|
||||||
A6oZMwP6P/uMOiXCSStWhAQpEmY/JcbcyfnfWXV7LckXxL7CElJloQ==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1dn7pkareh83k8el2yt4dmdfdzn7f45fuc785cnnxgzf3h4r5gqhqd4l93h
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsZW1xVjJUWE1YemN4QVB5
|
|
||||||
SVZLQ0FwcERTbTZBSmJUdkorVWFFVlZLc0NzCmZaMVB5T0VCZ1BFN1ZzR0dBSnZl
|
|
||||||
UE96ZGl3d3g0cDNEOHF5UEhPZDU4blUKLS0tIG9uRThreDhVNHBTUmovTEJyZnRl
|
|
||||||
cU5TMHFyMXNIUnlXcjZHNkNtRG44OFUK9cCjIF6Ip6e+/VEJMhDV5HM2it/eFOdz
|
|
||||||
8sBVBZS6SL4xCRoFMOmnnw9PCLreCws2i34nI0uW1T22JPbh3FExTg==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1uxvuygmvwpfjrd9d3ulg6ln8dgvaw4l2c90mw0tr72qg3n8vd9ns3dm000
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBzTDZBb0dZeEtGN2dFejVo
|
|
||||||
M2JNMGZEUnc4NTlNYUp5WUdadjlEQzVncXhZCjJpS04wRnBFb2g1VE5kdHZnNEZS
|
|
||||||
T21zQUNRc09XUGNaZWxyVWdhOE94Q0EKLS0tIFY4Y3lsWGxHWlJzNDE0cEp4ZE5M
|
|
||||||
YlVKN1VmSzhNam1mRW5xTnVDMG9GYVkKCAx2LVbYHhrWz6qS1oe2IJoSEM+TdiAq
|
|
||||||
hGECp0v9DwoQo8ud3nL4k5sAxa11j0iLNDVS2wGEpsISVNhnjOda0g==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1gxhy9eq38xfplay0kvkeyvsg96g0c4p6rkhajkrj8nc9dswdzqhssgvns0
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA1eVFvbEI2djYxWVBMdkxy
|
|
||||||
aEVJbUlJYU5WTmZSdGVBQW1VcHdyQlZaZWd3CjNxNTVsSWovNjVuWGs1NnlpMEsz
|
|
||||||
eUJTVUZCbkkweWFPUEF4ZTZCRVlnckkKLS0tIFlGd2x5RTVoY0ZLdjdiM3QyNVFN
|
|
||||||
djJEQW4wc2NnTWhPeXVsNTQ1RW92MGsKr1L803YuhsmaysQogh5I2KUHffYcMA03
|
|
||||||
4dekr1pEEX059oHbbvp90Xs23WWiLftcNozNT1m1iI74ZCpmyMRC/g==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1n06f4dcslh8xq686z2fa9ddr3yg5yzj87p727896xsm8xvusdv6qan0grl
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTRkJ5SFJ5NkRqaE0reCtS
|
|
||||||
cFlLa0l6VVNtM3ZTQ0hEL0Y1cTlYRUJrOGpFCmFMeGtuSkdyZEhtQkphRndxR2pZ
|
|
||||||
c3QySDhJazZpQXB1TDdOVExUR0pFcWcKLS0tIGNqRk85WnllZlNzUWY1QTFmY3ZJ
|
|
||||||
WGFSejNJc3dSWjZSeWN0ZktCYm1WNVkKmjKRIFTUO9VGRS+Q+zX0SFtrraEwXxSS
|
|
||||||
8hpAMFll2qGQFi39bPqg8lUQ/t628/EZtvkRQZOwT7+xNFur28mUPA==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
lastmodified: "2023-06-27T18:54:34Z"
|
|
||||||
mac: ENC[AES256_GCM,data:AqtrQ5MHpkMm/BltLnDajgDed1WqHgZUpco3PqZ1jmeufluyVfq3J9+gjH4ougz26PSvXR4Y+qEXk5dbo6L1TJPckORlnFSr2ZZBCNuRnYPgBQo+nX6sNaNDU0pk45vXE/gKPJooBNs8emWiTb69J4HqZLtsNzQewRWEjQ2E9PM=,iv:irjTYQd8fgzxuNrhpYpbmPLivbOqTOvwEE+GGX3NqdE=,tag:1AcC871LO32FcI+meZE/cA==,type:str]
|
|
||||||
pgp:
|
pgp:
|
||||||
- created_at: "2023-03-01T15:18:20Z"
|
- created_at: "2023-09-18T19:32:56Z"
|
||||||
enc: |-
|
enc: |
|
||||||
-----BEGIN PGP MESSAGE-----
|
-----BEGIN PGP MESSAGE-----
|
||||||
|
|
||||||
wcDMAwa9kVfiDH1CAQv+JRTEbaBdksdzKsBwIrEbsx6av1pg0dct99LMwLljQNQu
|
hF4DboE6HHw4Rh8SAQdAVnPfBHrVKJSxVWOUxe/Xxtklt2fd/fwU5grY7JCvH1kw
|
||||||
Vg3apXYTavC4D+gQLYk6eKcBc4ldjSQDCxqztJH3xvRVooPg0YwAFTPhD4xlOE+N
|
kJC70RC7Wcgx+gkqbkPAZqfozY2ScrC7lgga8SRNCyjaunVfQjlO6ZS9d3XhLUOr
|
||||||
VPElotbjWC/wKzfOe+2/6jwXILBOXPYhIiyskKx+41iPAn0TqFLzGFrx19fWUxbV
|
1GgBCQIQeoBRXoQHjOht18H9f4ZdKzqJ1R+sPiU2qakjDfVkoo1mu5LRFYUOz5tc
|
||||||
OvQqCetlU06/X2YzRG4Xw8zB/u29a+hOygpdc5fa4MSgvFcZz2PXYESPDH33jpcH
|
633XPXbvL9Yi/hec+kSkynowbnpQtq6YfN2w7HASoBb5EUTdcmzGcflqoOhRNP8X
|
||||||
jvjLLnWt8RHiwmnRpF3rrAYbn8MhTrRqF0FShUnw+7IjZYMOqn5XM/d3iAZTijVj
|
uJogC+lhlySzDQ==
|
||||||
XW/McYtIiDLMIX9jA3iKlK/lq4jtefPKD+RkG0eSGSDzw3+Cuvqh/B7fcKwNY1P4
|
=uZkZ
|
||||||
jd/mHuAzC4jeT1vme1ocIezqqULA0LKjmatzG+dehQ6+mHfh+G1iuB/C6vFPG+dR
|
|
||||||
RqHM/Kk4ctiNEoellipbHSVQLKZSHVYTlVpxyz2R7tMr619Cuj+OQWYwdWgQy3Vp
|
|
||||||
2m8kPAWA1EOlDKiL81ul0lEBpLFkWVHKTKBXdbin2d4FYhhyT19FpqMqhmPkNgDt
|
|
||||||
0eVoCzyokhl9JJK/BsLHMRq5QSnlen1dE/alVpbtJ4vfNgG6gWRUcNmsMOHL/jfC
|
|
||||||
R14=
|
|
||||||
=MjJK
|
|
||||||
-----END PGP MESSAGE-----
|
-----END PGP MESSAGE-----
|
||||||
fp: 7088C7421873E0DB97FF17C2245CAB70B4C225E9
|
fp: 6423C518273734713931CB331C4814F03CA7C161
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.7.3
|
version: 3.7.3
|
||||||
|
|
|
@ -3,19 +3,18 @@ let ifTheyExist = groups: builtins.filter (group: builtins.hasAttr group config.
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
users.mutableUsers = false;
|
users.mutableUsers = false;
|
||||||
users.users.misterio = {
|
users.users.gburd = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
shell = pkgs.fish;
|
shell = pkgs.bash;
|
||||||
extraGroups = [
|
extraGroups = [
|
||||||
"wheel"
|
"wheel"
|
||||||
"video"
|
"video"
|
||||||
"audio"
|
"audio"
|
||||||
|
"networkmanager"
|
||||||
] ++ ifTheyExist [
|
] ++ ifTheyExist [
|
||||||
"minecraft"
|
|
||||||
"network"
|
"network"
|
||||||
"wireshark"
|
"wireshark"
|
||||||
"i2c"
|
"i2c"
|
||||||
"mysql"
|
|
||||||
"docker"
|
"docker"
|
||||||
"podman"
|
"podman"
|
||||||
"git"
|
"git"
|
||||||
|
@ -23,17 +22,20 @@ in
|
||||||
"deluge"
|
"deluge"
|
||||||
];
|
];
|
||||||
|
|
||||||
openssh.authorizedKeys.keys = [ (builtins.readFile ../../../../home/misterio/ssh.pub) ];
|
openssh.authorizedKeys.keys = [
|
||||||
passwordFile = config.sops.secrets.misterio-password.path;
|
(builtins.readFile ../../../../home/gburd/ssh.pub)
|
||||||
|
(builtins.readFile ../../../../home/gburd/symas-ssh.pub)
|
||||||
|
];
|
||||||
|
passwordFile = config.sops.secrets.gburd-password.path;
|
||||||
packages = [ pkgs.home-manager ];
|
packages = [ pkgs.home-manager ];
|
||||||
};
|
};
|
||||||
|
|
||||||
sops.secrets.misterio-password = {
|
sops.secrets.gburd-password = {
|
||||||
sopsFile = ../../secrets.yaml;
|
sopsFile = ../../secrets.yaml;
|
||||||
neededForUsers = true;
|
neededForUsers = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager.users.misterio = import ../../../../home/misterio/${config.networking.hostName}.nix;
|
home-manager.users.gburd = import ../../../../home/gburd/${config.networking.hostName}.nix;
|
||||||
|
|
||||||
services.geoclue2.enable = true;
|
services.geoclue2.enable = true;
|
||||||
security.pam.services = { swaylock = { }; };
|
security.pam.services = { swaylock = { }; };
|
|
@ -1,26 +0,0 @@
|
||||||
{ pkgs, lib, config, ... }:
|
|
||||||
{
|
|
||||||
imports = [ ./packages.nix ];
|
|
||||||
|
|
||||||
users.mutableUsers = false;
|
|
||||||
users.users.layla = {
|
|
||||||
isNormalUser = true;
|
|
||||||
shell = pkgs.fish;
|
|
||||||
extraGroups = [
|
|
||||||
"wheel"
|
|
||||||
"video"
|
|
||||||
"audio"
|
|
||||||
];
|
|
||||||
passwordFile = config.sops.secrets.layla-password.path;
|
|
||||||
};
|
|
||||||
|
|
||||||
sops.secrets.layla-password = {
|
|
||||||
sopsFile = ../../secrets.yaml;
|
|
||||||
neededForUsers = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Persist entire home
|
|
||||||
environment.persistence = {
|
|
||||||
"/persist".directories = [ "/home/layla" ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,28 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
let
|
|
||||||
steam-with-pkgs = pkgs.steam.override {
|
|
||||||
extraPkgs = pkgs: with pkgs; [
|
|
||||||
xorg.libXcursor
|
|
||||||
xorg.libXi
|
|
||||||
xorg.libXinerama
|
|
||||||
xorg.libXScrnSaver
|
|
||||||
libpng
|
|
||||||
libpulseaudio
|
|
||||||
libvorbis
|
|
||||||
stdenv.cc.cc.lib
|
|
||||||
libkrb5
|
|
||||||
keyutils
|
|
||||||
];
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
users.users.layla.packages = with pkgs; [
|
|
||||||
firefox
|
|
||||||
|
|
||||||
steam-with-pkgs
|
|
||||||
gamescope
|
|
||||||
protontricks
|
|
||||||
lutris
|
|
||||||
prismlauncher
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -7,8 +7,10 @@
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
|
||||||
../common/global
|
../common/global
|
||||||
../common/users/misterio
|
../common/users/gburd
|
||||||
|
|
||||||
|
../common/optional/cups.nix
|
||||||
|
../common/optional/x11-keymap.nix
|
||||||
../common/optional/gamemode.nix
|
../common/optional/gamemode.nix
|
||||||
../common/optional/wireless.nix
|
../common/optional/wireless.nix
|
||||||
../common/optional/greetd.nix
|
../common/optional/greetd.nix
|
||||||
|
@ -21,6 +23,9 @@
|
||||||
hostName = "loki";
|
hostName = "loki";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Enable networking
|
||||||
|
# networking.networkmanager.enable = true;
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
kernelPackages = pkgs.linuxKernel.packages.linux_zen;
|
kernelPackages = pkgs.linuxKernel.packages.linux_zen;
|
||||||
};
|
};
|
||||||
|
@ -52,5 +57,5 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
system.stateVersion = "22.05";
|
system.stateVersion = "23.05";
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,15 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../common/optional/ephemeral-btrfs.nix
|
|
||||||
../common/optional/encrypted-root.nix
|
../common/optional/encrypted-root.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
initrd = {
|
initrd = {
|
||||||
availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "sd_mod" ];
|
availableKernelModules = [ "ahci" "xhci_pci" "nvme" "thunderbolt" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
|
||||||
kernelModules = [ "kvm-amd" ];
|
luks.devices."luks-fae33851-b8d8-430b-8c6a-cd18675b8252".device = "/dev/disk/by-uuid/fae33851-b8d8-430b-8c6a-cd18675b8252";
|
||||||
};
|
};
|
||||||
|
kernelModules = [ "kvm-intel" ];
|
||||||
|
extraModulePackages = [ ];
|
||||||
loader = {
|
loader = {
|
||||||
systemd-boot = {
|
systemd-boot = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -18,19 +19,21 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems = {
|
fileSystems."/" =
|
||||||
"/boot" = {
|
{ device = "/dev/disk/by-uuid/88c63d59-2b86-4336-b8c7-1a4e6da1b443";
|
||||||
device = "/dev/disk/by-label/ESP";
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/2EF0-3AA5";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [{
|
swapDevices = [{
|
||||||
device = "/swap/swapfile";
|
device = "/dev/disk/by-uuid/e7cc3e9c-2acc-4bbd-bc2f-a67a08a94db7";
|
||||||
size = 8196;
|
|
||||||
}];
|
}];
|
||||||
|
|
||||||
nixpkgs.hostPlatform.system = "x86_64-linux";
|
nixpkgs.hostPlatform.system = "x86_64-linux";
|
||||||
hardware.cpu.amd.updateMicrocode = true;
|
hardware.cpu.intel.updateMicrocode = true;
|
||||||
powerManagement.cpuFreqGovernor = "powersave";
|
powerManagement.cpuFreqGovernor = "powersave";
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINZS9ComqcdupshNC7+FYI/acmswnUcqcV9prNh+wFO5
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICdryaTF2JNA+ZhsH1BrUCE7ehgkGCJoUyFb1DJAgZBH
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQD+sITM0U5OOyBMcOcf8+lHckw/IPSmRyqXmoqIRH8SQmgbuhqIgrCcMd9GPRt5c6nr3uMKj9JAxGTDsvpEoZAuTIln1Dx5LxRwIAlCKMznYfLBfeuU+vDoJ9p34+CkfT3+HJYgfLd2PLC31UKFl+y5PL0keRpbpCj3ooUHECH6jSQShu+4vlc6GVMYg3cYL287i8Z1S/V39x2Pd1tvZiKWt/rkXZbFmCQkncVmzEL8+mEk/4Xig7BLugjg+C7pqvzJ7U8LNjsknp93Kl+EC2aCrIFY2qKPMwiEqAcw+sy1bAH6pn9yRGvLIvn0F/f5JuN0ZF4PiMntK1hg3Jgb/gJxI0CJnGD48nhur2h/qTNoLEV5mPl8GyY7l3on8WO48QxMRnqWW8AtBmjvKPDwCCzJxKRFqqj6p9L52i0pekPXjVJw9mDy8xkWrqiXm9+9qtsi8ZaOJ7Z8XktNGKNjUowfpKOE77qVYQAojibM1Yj1w8gPGvRfxJ9qAi77C1kPghBx6A9GyAAXbRsGXCZJCzMqNJ0N04gs9B/NbnIDNYyTnAFLAS8RZro06cYvxHogpHMNyzzax7W/K3XiAJui5Dcu3oIaGjO0zs+iLYv8y5JVLs7DHjb+zFhBnNZvdPj1fd6oLg/tDRXzrqlqSJhWg1D/5NdLV235WX9GhuXyXETH/Q==
|
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDB2YjDJmsiUtHkPWE/Y6tqwtVcJaa/fIY7wYViUwn7bF4+OhC3Su7bN1C8TA5fhgpZWrzZXBMh74lrSG8RkbldGPyAThaUrTxVzzYdJmOvGNldynf19zrzprNFfjHvtTUosz7VTd0yEB7Ih/+5bNs7bDP0oKKoXvGruNwN0hdrDC299ocBAjmpLDXs8vSQoveuEEv8zyHJaOq1Fs9rw7IkTxk2Lj06MLzVD4ebKblQMnJ2xbJ5OEn/f+ktu+XKHGHYSgg+3mI+TEKVrle7INuiidY5fixhYFGp+T+Etj+TM02iIKG/7E0mNS+BmbUl0iWi6uS5PJaCkgW0s8VrtT/fP1L0yd0SwgGrmQAqzeoCjlEBUbzrc8YjJgg+FU4e6YY37f2dQ+FJigdGGAukH0VDYWrlnD0flfQ0KEVNnTo6CqmX/g7BBf88y6HF1BHL4sN73WHeC9FveEHBchtgfjBYf9GT8lYQnDSEisHU6C4Saz0BD3QufLDsjuvpMB+7IzYEkQrIQppRhvDT/buidwLzyBv6F9nUvlaAF9xSANLaie7iFkf+NeTFlOgEKxTTsBb8DwPGVeqHWrIfCNUjHeVgCr1FUIxnVMzIuT3osF3r+Z1NtEhNLxIHur0x8CF74m7mv5+n+0F185VPZDQCCn+6P1Zq4MWTyc22QslZRj/d8Q==
|
|
@ -1,7 +0,0 @@
|
||||||
# Add your reusable home-manager modules to this directory, on their own file (https://nixos.wiki/wiki/Module).
|
|
||||||
# These should be stuff you would like to share with others, not your personal configurations.
|
|
||||||
|
|
||||||
{
|
|
||||||
# List your module files here
|
|
||||||
# my-module = import ./my-module.nix;
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
# Add your reusable NixOS modules to this directory, on their own file (https://nixos.wiki/wiki/Module).
|
|
||||||
# These should be stuff you would like to share with others, not your personal configurations.
|
|
||||||
|
|
||||||
{
|
|
||||||
# List your module files here
|
|
||||||
# my-module = import ./my-module.nix;
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
# This file defines overlays
|
|
||||||
{ inputs, ... }:
|
|
||||||
{
|
|
||||||
# This one brings our custom packages from the 'pkgs' directory
|
|
||||||
additions = final: _prev: import ../pkgs { pkgs = final; };
|
|
||||||
|
|
||||||
# This one contains whatever you want to overlay
|
|
||||||
# You can change versions, add patches, set compilation flags, anything really.
|
|
||||||
# https://nixos.wiki/wiki/Overlays
|
|
||||||
modifications = final: prev: {
|
|
||||||
# example = prev.example.overrideAttrs (oldAttrs: rec {
|
|
||||||
# ...
|
|
||||||
# });
|
|
||||||
};
|
|
||||||
|
|
||||||
# When applied, the unstable nixpkgs set (declared in the flake inputs) will
|
|
||||||
# be accessible through 'pkgs.unstable'
|
|
||||||
unstable-packages = final: _prev: {
|
|
||||||
unstable = import inputs.nixpkgs-unstable {
|
|
||||||
system = final.system;
|
|
||||||
config.allowUnfree = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -56,22 +56,19 @@ in
|
||||||
patches = (oldAttrs.patches or [ ]) ++ [ ./pfetch.patch ];
|
patches = (oldAttrs.patches or [ ]) ++ [ ./pfetch.patch ];
|
||||||
});
|
});
|
||||||
|
|
||||||
# Sane default values and crash avoidance (https://github.com/k-vernooy/trekscii/pull/1)
|
|
||||||
trekscii = addPatches prev.trekscii [ ./trekscii.patch ];
|
|
||||||
|
|
||||||
qutebrowser = prev.qutebrowser.overrideAttrs (oldAttrs: {
|
qutebrowser = prev.qutebrowser.overrideAttrs (oldAttrs: {
|
||||||
patches = (oldAttrs.patches or [ ]) ++ [ ./qutebrowser-tree-tabs.diff ];
|
patches = (oldAttrs.patches or [ ]) ++ [ ./qutebrowser-tree-tabs.diff ];
|
||||||
});
|
});
|
||||||
|
|
||||||
scgit = prev.cgit-pink.overrideAttrs (_: {
|
# scgit = prev.cgit-pink.overrideAttrs (_: {
|
||||||
pname = "scgit";
|
# pname = "scgit";
|
||||||
version = "0.1";
|
# version = "0.1";
|
||||||
src = final.fetchFromSourcehut {
|
# src = final.fetchFromSourcehut {
|
||||||
owner = "~misterio";
|
# owner = "~misterio";
|
||||||
repo = "scgit";
|
# repo = "scgit";
|
||||||
rev = "2cd05c95827fb94740e876733dc6f7fe88340de2";
|
# rev = "2cd05c95827fb94740e876733dc6f7fe88340de2";
|
||||||
sha256 = "sha256-95mRJ3ZCSkLHqehFQdwM2BY0h+YDhohwpnRiF6/lZtA=";
|
# sha256 = "sha256-95mRJ3ZCSkLHqehFQdwM2BY0h+YDhohwpnRiF6/lZtA=";
|
||||||
};
|
# };
|
||||||
});
|
# });
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,79 +0,0 @@
|
||||||
diff --git a/README.md b/README.md
|
|
||||||
index 103cc78..1e3b32e 100644
|
|
||||||
--- a/README.md
|
|
||||||
+++ b/README.md
|
|
||||||
@@ -17,10 +17,16 @@ $ make
|
|
||||||
```bash
|
|
||||||
trekscii [height] [width]
|
|
||||||
```
|
|
||||||
+
|
|
||||||
+`height` and `width` must be larger than `16` and `46`, respectively. If not
|
|
||||||
+specified, they will default to half the respective terminal dimension.
|
|
||||||
+
|
|
||||||
e.g.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
-trekscii 25 85
|
|
||||||
+trekscii 25 85 # fixed dimensions
|
|
||||||
trekscii 35 $(tput cols) # terminal width, fixed height
|
|
||||||
trekscii $(tput lines) $(tput cols) # full-terminal
|
|
||||||
+trekscii $(tput lines) # full-terminal height, half-terminal width
|
|
||||||
+trekscii # half-terminal height, half-terminal width
|
|
||||||
```
|
|
||||||
diff --git a/src/trekscii.cpp b/src/trekscii.cpp
|
|
||||||
index 1b14d9a..2238ed1 100644
|
|
||||||
--- a/src/trekscii.cpp
|
|
||||||
+++ b/src/trekscii.cpp
|
|
||||||
@@ -1,7 +1,9 @@
|
|
||||||
#include <iostream>
|
|
||||||
+#include <sys/ioctl.h>
|
|
||||||
#include "trekscii.h"
|
|
||||||
|
|
||||||
-
|
|
||||||
+#define MIN_WIDTH 46
|
|
||||||
+#define MIN_HEIGHT 16
|
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
|
||||||
|
|
||||||
@@ -11,12 +13,36 @@ int main(int argc, char** argv) {
|
|
||||||
fread(&seed, 4, 1, devrnd);
|
|
||||||
fclose(devrnd);
|
|
||||||
srand(seed);
|
|
||||||
-
|
|
||||||
|
|
||||||
- int dimY = std::stoi(argv[1]);
|
|
||||||
- int dimX = std::stoi(argv[2]);
|
|
||||||
+ // get window size
|
|
||||||
+ struct winsize w;
|
|
||||||
+ ioctl(0, TIOCGWINSZ, &w);
|
|
||||||
+
|
|
||||||
+ int dimY;
|
|
||||||
+ if (argc >= 2) {
|
|
||||||
+ dimY = std::stoi(argv[1]);
|
|
||||||
+ if (dimY < MIN_HEIGHT) {
|
|
||||||
+ std::cerr << "Error: height must be at least " << MIN_HEIGHT << std::endl;
|
|
||||||
+ return 1;
|
|
||||||
+ }
|
|
||||||
+ } else {
|
|
||||||
+ // default to half terminal height, with MIN_HEIGHT min
|
|
||||||
+ dimY = std::max(w.ws_row / 2, MIN_HEIGHT);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ int dimX;
|
|
||||||
+ if (argc >= 3) {
|
|
||||||
+ dimX = std::stoi(argv[2]);
|
|
||||||
+ if (dimX < MIN_WIDTH) {
|
|
||||||
+ std::cerr << "Error: width must be at least " << MIN_WIDTH << std::endl;
|
|
||||||
+ return 1;
|
|
||||||
+ }
|
|
||||||
+ } else {
|
|
||||||
+ // default to half terminal width, with MIN_WIDTH min
|
|
||||||
+ dimX = std::max(w.ws_col / 2, MIN_WIDTH);
|
|
||||||
+ }
|
|
||||||
|
|
||||||
Canvas canvas = Canvas(dimX, dimY - 2);
|
|
||||||
canvas.generate();
|
|
||||||
canvas.print();
|
|
||||||
-}
|
|
||||||
\ No newline at end of file
|
|
||||||
+}
|
|
|
@ -1,6 +0,0 @@
|
||||||
# Custom packages, that can be defined similarly to ones from nixpkgs
|
|
||||||
# You can build them using 'nix build .#example' or (legacy) 'nix-build -A example'
|
|
||||||
|
|
||||||
{ pkgs ? (import ../nixpkgs.nix) { } }: {
|
|
||||||
# example = pkgs.callPackage ./example { };
|
|
||||||
}
|
|
|
@ -3,12 +3,8 @@
|
||||||
# Packages with an actual source
|
# Packages with an actual source
|
||||||
rgbdaemon = pkgs.callPackage ./rgbdaemon { };
|
rgbdaemon = pkgs.callPackage ./rgbdaemon { };
|
||||||
shellcolord = pkgs.callPackage ./shellcolord { };
|
shellcolord = pkgs.callPackage ./shellcolord { };
|
||||||
trekscii = pkgs.callPackage ./trekscii { };
|
|
||||||
speedtestpp = pkgs.callPackage ./speedtestpp { };
|
speedtestpp = pkgs.callPackage ./speedtestpp { };
|
||||||
lando = pkgs.callPackage ./lando { };
|
|
||||||
tidal-dl = pkgs.python3Packages.callPackage ./tidal-dl { };
|
|
||||||
qt6gtk2 = pkgs.qt6Packages.callPackage ./qt6gtk2 { };
|
qt6gtk2 = pkgs.qt6Packages.callPackage ./qt6gtk2 { };
|
||||||
hdos = pkgs.callPackage ./hdos { };
|
|
||||||
|
|
||||||
# Personal scripts
|
# Personal scripts
|
||||||
nix-inspect = pkgs.callPackage ./nix-inspect { };
|
nix-inspect = pkgs.callPackage ./nix-inspect { };
|
||||||
|
@ -19,8 +15,4 @@
|
||||||
lyrics = pkgs.callPackage ./lyrics { };
|
lyrics = pkgs.callPackage ./lyrics { };
|
||||||
xpo = pkgs.callPackage ./xpo { };
|
xpo = pkgs.callPackage ./xpo { };
|
||||||
tly = pkgs.callPackage ./tly { };
|
tly = pkgs.callPackage ./tly { };
|
||||||
hyprslurp = pkgs.callPackage ./hyprslurp { };
|
|
||||||
|
|
||||||
# My slightly customized plymouth theme, just makes the blue outline white
|
|
||||||
plymouth-spinner-monochrome = pkgs.callPackage ./plymouth-spinner-monochrome { };
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,47 +0,0 @@
|
||||||
{ lib, stdenv, fetchurl, makeWrapper, openjdk11, makeDesktopItem, copyDesktopItems }:
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
|
||||||
pname = "hdos";
|
|
||||||
version = "411";
|
|
||||||
|
|
||||||
src = fetchurl {
|
|
||||||
# TODO find out a stable URL
|
|
||||||
url = "https://cdn.hdos.dev/launcher/latest/hdos-launcher.jar";
|
|
||||||
hash = "sha256-00ddeR+ov6Tjrn+pscXoao4C0ek/iP9Hdlgq946pL8A=";
|
|
||||||
};
|
|
||||||
|
|
||||||
dontUnpack = true;
|
|
||||||
|
|
||||||
desktop = makeDesktopItem {
|
|
||||||
name = "HDOS";
|
|
||||||
type = "Application";
|
|
||||||
exec = "hdos";
|
|
||||||
icon = fetchurl {
|
|
||||||
url = "https://raw.githubusercontent.com/flathub/dev.hdos.HDOS/8e17cbecb06548fde2c023032e89ddf30befeabc/dev.hdos.HDOS.png";
|
|
||||||
hash = "sha256-pqLNJ0g7GCPotgEPfw2ZZOqapaCRAsJxB09INp6Y6gM=";
|
|
||||||
};
|
|
||||||
comment = "HDOS is a client for Old School RuneScape that emulates the era of 2008-2011 RuneScape HD";
|
|
||||||
desktopName = "HDOS";
|
|
||||||
genericName = "Oldschool Runescape";
|
|
||||||
categories = [ "Game" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
nativeBuildInputs = [ makeWrapper copyDesktopItems ];
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
runHook preInstall
|
|
||||||
makeWrapper ${openjdk11}/bin/java $out/bin/hdos --add-flags "-jar $src"
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
|
||||||
|
|
||||||
desktopItems = [ finalAttrs.desktop ];
|
|
||||||
|
|
||||||
meta = {
|
|
||||||
description = "High Detail Old School Runescape Client";
|
|
||||||
homepage = "https://hdos.dev";
|
|
||||||
changelog = "https://hdos.dev/changelog";
|
|
||||||
sourceProvenance = [ lib.sourceTypes.binaryBytecode ];
|
|
||||||
license = lib.licenses.unfreeRedistributable;
|
|
||||||
platforms = openjdk11.meta.platforms;
|
|
||||||
maintainers = [ lib.maintainers.misterio77 ];
|
|
||||||
};
|
|
||||||
})
|
|
|
@ -1,16 +0,0 @@
|
||||||
{ writeShellApplication, hyprland, jq, slurp }:
|
|
||||||
writeShellApplication {
|
|
||||||
name = "hyprslurp";
|
|
||||||
runtimeInputs = [ hyprland jq slurp ];
|
|
||||||
text = ''
|
|
||||||
hyprctl clients -j | \
|
|
||||||
jq -r \
|
|
||||||
--argjson workspaces "$(\
|
|
||||||
hyprctl monitors -j | \
|
|
||||||
jq -r 'map(.activeWorkspace.id)'\
|
|
||||||
)" \
|
|
||||||
'map(select([.workspace.id] | inside($workspaces)))' | \
|
|
||||||
jq -r '.[] | "\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"' | \
|
|
||||||
slurp "$@"
|
|
||||||
'';
|
|
||||||
}
|
|
|
@ -1,43 +0,0 @@
|
||||||
{ lib
|
|
||||||
, stdenv
|
|
||||||
, fetchFromGitHub
|
|
||||||
, buildNpmPackage
|
|
||||||
, makeWrapper
|
|
||||||
, nodejs-16_x
|
|
||||||
, docker-compose_1
|
|
||||||
, docker
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
nodejs = nodejs-16_x;
|
|
||||||
docker-compose = docker-compose_1;
|
|
||||||
in
|
|
||||||
buildNpmPackage.override { inherit nodejs; } rec {
|
|
||||||
pname = "lando";
|
|
||||||
version = "3.14.0";
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "lando";
|
|
||||||
repo = "cli";
|
|
||||||
rev = "v${version}";
|
|
||||||
sha256 = "sha256-BFqCmkAnIxeVgzeMvTXFS/mgU1z1KOe74px03qnOvhM=";
|
|
||||||
};
|
|
||||||
|
|
||||||
npmDepsHash = "sha256-G54gtJ3wClcHrTqMDQbnaDZ2yr8D3Hv8q3Bg1UeC0Tk=";
|
|
||||||
|
|
||||||
makeCacheWritable = true;
|
|
||||||
npmFlags = [ "--legacy-peer-deps" ];
|
|
||||||
dontNpmBuild = true;
|
|
||||||
|
|
||||||
postPatch = ''
|
|
||||||
cp ${./package-lock.json} package-lock.json
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "A development tool for all your projects that is fast, easy, powerful and liberating.";
|
|
||||||
homepage = "https://lando.dev";
|
|
||||||
license = licenses.gpl3;
|
|
||||||
maintainers = with maintainers; [ misterio77 ];
|
|
||||||
platforms = platforms.linux;
|
|
||||||
broken = true; # Not working 100%
|
|
||||||
};
|
|
||||||
}
|
|
29402
pkgs/lando/package-lock.json
generated
|
@ -1,18 +0,0 @@
|
||||||
{ stdenv, logo ? null, lib, ... }: stdenv.mkDerivation {
|
|
||||||
pname = "plymouth-spinner-monochrome";
|
|
||||||
version = "1.0";
|
|
||||||
src = ./src;
|
|
||||||
|
|
||||||
buildPhase = lib.optionalString (logo != null) ''
|
|
||||||
cp $src . -r
|
|
||||||
ln -s ${logo} ./share/plymouth/themes/spinner-monochrome/watermark.png
|
|
||||||
'';
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
cp -r . $out
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = {
|
|
||||||
platforms = lib.platforms.all;
|
|
||||||
};
|
|
||||||
}
|
|
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB |