Compare commits
No commits in common. "main" and "custom_emacs_build" have entirely different histories.
main
...
custom_ema
5
.pre-commit-config.yaml
Normal file
|
@ -0,0 +1,5 @@
|
|||
repos:
|
||||
- repo: https://github.com/gitleaks/gitleaks
|
||||
rev: v8.18.4
|
||||
hooks:
|
||||
- id: gitleaks
|
|
@ -1,3 +0,0 @@
|
|||
indent_type = "Spaces"
|
||||
call_parentheses = "None"
|
||||
collapse_simple_statement = "Always"
|
11
Makefile
|
@ -1,18 +1,11 @@
|
|||
.PHONY: default build server flathub
|
||||
.PHONY: default build flathub
|
||||
|
||||
HOST := $(shell hostname)
|
||||
|
||||
default: build
|
||||
|
||||
build:
|
||||
nix build --no-link --keep-going .#nixosConfigurations.$(HOST).config.system.build.toplevel
|
||||
|
||||
fonts:
|
||||
nix build --no-link --max-jobs 1 .#iosevka-custom-aile .#iosevka-custom-etoile .#iosevka-custom-nerdfont
|
||||
|
||||
server: fonts
|
||||
nixos-rebuild build --flake .#Legion
|
||||
nix copy ./result --to ssh://legion && rm ./result
|
||||
nix build --keep-going .#nixosConfigurations.$(HOST).config.system.build.toplevel
|
||||
|
||||
flathub:
|
||||
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
|
||||
|
|
314
flake.lock
|
@ -5,11 +5,11 @@
|
|||
"fromYaml": "fromYaml"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1732200724,
|
||||
"narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=",
|
||||
"lastModified": 1708890466,
|
||||
"narHash": "sha256-LlrC09LoPi8OPYOGPXegD72v+//VapgAqhbOFS3i8sc=",
|
||||
"owner": "SenchoPens",
|
||||
"repo": "base16.nix",
|
||||
"rev": "153d52373b0fb2d343592871009a286ec8837aec",
|
||||
"rev": "665b3c6748534eb766c777298721cece9453fdae",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -34,14 +34,30 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-foot": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696725948,
|
||||
"narHash": "sha256-65bz2bUL/yzZ1c8/GQASnoiGwaF8DczlxJtzik1c0AU=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-foot",
|
||||
"rev": "eedbcfa30de0a4baa03e99f5e3ceb5535c2755ce",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-foot",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-helix": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1725860795,
|
||||
"narHash": "sha256-Z2o8VBPW3I+KKTSfe25kskz0EUj7MpUh8u355Z1nVsU=",
|
||||
"lastModified": 1696727917,
|
||||
"narHash": "sha256-FVrbPk+NtMra0jtlC5oxyNchbm8FosmvXIatkRbYy1g=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-helix",
|
||||
"rev": "7f795bf75d38e0eea9fed287264067ca187b88a9",
|
||||
"rev": "dbe1480d99fe80f08df7970e471fac24c05f2ddb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -50,18 +66,50 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-vim": {
|
||||
"base16-kitty": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1731949548,
|
||||
"narHash": "sha256-XIDexXM66sSh5j/x70e054BnUsviibUShW7XhbDGhYo=",
|
||||
"lastModified": 1665001328,
|
||||
"narHash": "sha256-aRaizTYPpuWEcvoYE9U+YRX+Wsc8+iG0guQJbvxEdJY=",
|
||||
"owner": "kdrag0n",
|
||||
"repo": "base16-kitty",
|
||||
"rev": "06bb401fa9a0ffb84365905ffbb959ae5bf40805",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "kdrag0n",
|
||||
"repo": "base16-kitty",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-tmux": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696725902,
|
||||
"narHash": "sha256-wDPg5elZPcQpu7Df0lI5O8Jv4A3T6jUQIVg63KDU+3Q=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-vim",
|
||||
"rev": "61165b1632409bd55e530f3dbdd4477f011cadc6",
|
||||
"repo": "base16-tmux",
|
||||
"rev": "c02050bebb60dbb20cb433cd4d8ce668ecc11ba7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-tmux",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-vim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1663659192,
|
||||
"narHash": "sha256-uJvaYYDMXvoo0fhBZUhN8WBXeJ87SRgof6GEK2efFT0=",
|
||||
"owner": "chriskempson",
|
||||
"repo": "base16-vim",
|
||||
"rev": "3be3cd82cd31acfcab9a41bad853d9c68d30478d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "chriskempson",
|
||||
"repo": "base16-vim",
|
||||
"type": "github"
|
||||
}
|
||||
|
@ -69,11 +117,11 @@
|
|||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696426674,
|
||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||
"lastModified": 1673956053,
|
||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -82,35 +130,14 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": [
|
||||
"stylix",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"fromYaml": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1731966426,
|
||||
"narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=",
|
||||
"lastModified": 1689549921,
|
||||
"narHash": "sha256-iX0pk/uB019TdBGlaJEWvBCfydT6sRq+eDcGPifVsCM=",
|
||||
"owner": "SenchoPens",
|
||||
"repo": "fromYaml",
|
||||
"rev": "106af9e2f715e2d828df706c386a685698f3223b",
|
||||
"rev": "11fbbbfb32e3289d3c631e0134a23854e7865c84",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -119,72 +146,19 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"git-hooks": {
|
||||
"inputs": {
|
||||
"flake-compat": [
|
||||
"stylix",
|
||||
"flake-compat"
|
||||
],
|
||||
"gitignore": "gitignore",
|
||||
"nixpkgs": [
|
||||
"stylix",
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-stable": [
|
||||
"stylix",
|
||||
"git-hooks",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731363552,
|
||||
"narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=",
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitignore": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"stylix",
|
||||
"git-hooks",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709087332,
|
||||
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gnome-shell": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1732369855,
|
||||
"narHash": "sha256-JhUWbcYPjHO3Xs3x9/Z9RuqXbcp5yhPluGjwsdE2GMg=",
|
||||
"lastModified": 1713702291,
|
||||
"narHash": "sha256-zYP1ehjtcV8fo+c+JFfkAqktZ384Y+y779fzmR9lQAU=",
|
||||
"owner": "GNOME",
|
||||
"repo": "gnome-shell",
|
||||
"rev": "dadd58f630eeea41d645ee225a63f719390829dc",
|
||||
"rev": "0d0aadf013f78a7f7f1dc984d0d812971864b934",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "GNOME",
|
||||
"ref": "47.2",
|
||||
"ref": "46.1",
|
||||
"repo": "gnome-shell",
|
||||
"type": "github"
|
||||
}
|
||||
|
@ -196,48 +170,66 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1735344290,
|
||||
"narHash": "sha256-oJDtWPH1oJT34RJK1FSWjwX4qcGOBRkcNQPD0EbSfNM=",
|
||||
"lastModified": 1726989464,
|
||||
"narHash": "sha256-Vl+WVTJwutXkimwGprnEtXc/s/s8sMuXzqXaspIGlwM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "613691f285dad87694c2ba1c9e6298d04736292d",
|
||||
"rev": "2f23fa308a7c067e52dfcc30a0758f47043ec176",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-24.11",
|
||||
"ref": "release-24.05",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"iosevka-custom": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1730274547,
|
||||
"narHash": "sha256-34sNwbLNuE6l7jsBkBRUMRahoZc63lCsCa+PoZd/8W8=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "49828459e58b6987d2738b74c085cecb963355ab",
|
||||
"revCount": 19,
|
||||
"type": "git",
|
||||
"url": "https://git.xenia.me.uk/pixelifytica/iosevka.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.xenia.me.uk/pixelifytica/iosevka.git"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1736061677,
|
||||
"narHash": "sha256-DjkQPnkAfd7eB522PwnkGhOMuT9QVCZspDpJJYyOj60=",
|
||||
"lastModified": 1728888510,
|
||||
"narHash": "sha256-nsNdSldaAyu6PE3YUA+YQLqUDJh+gRbBooMMekZJwvI=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "cbd8ec4de4469333c82ff40d057350c30e9f7d36",
|
||||
"rev": "a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-24.11",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1735554305,
|
||||
"narHash": "sha256-zExSA1i/b+1NMRhGGLtNfFGXgLtgo+dcuzHzaWA6w3Q=",
|
||||
"lastModified": 1731386116,
|
||||
"narHash": "sha256-lKA770aUmjPHdTaJWnP3yQ9OI1TigenUqVC3wweqZuI=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "0e82ab234249d8eee3e8c91437802b32c74bb3fd",
|
||||
"rev": "689fed12a013f56d4c4d3f612489634267d86529",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"ref": "nixos-24.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
|
@ -245,129 +237,43 @@
|
|||
"root": {
|
||||
"inputs": {
|
||||
"home-manager": "home-manager",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"stylix": "stylix",
|
||||
"treefmt-nix": "treefmt-nix"
|
||||
"iosevka-custom": "iosevka-custom",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"stylix": "stylix"
|
||||
}
|
||||
},
|
||||
"stylix": {
|
||||
"inputs": {
|
||||
"base16": "base16",
|
||||
"base16-fish": "base16-fish",
|
||||
"base16-foot": "base16-foot",
|
||||
"base16-helix": "base16-helix",
|
||||
"base16-kitty": "base16-kitty",
|
||||
"base16-tmux": "base16-tmux",
|
||||
"base16-vim": "base16-vim",
|
||||
"flake-compat": "flake-compat",
|
||||
"flake-utils": "flake-utils",
|
||||
"git-hooks": "git-hooks",
|
||||
"gnome-shell": "gnome-shell",
|
||||
"home-manager": [
|
||||
"home-manager"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": "systems",
|
||||
"tinted-foot": "tinted-foot",
|
||||
"tinted-kitty": "tinted-kitty",
|
||||
"tinted-tmux": "tinted-tmux"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1736019457,
|
||||
"narHash": "sha256-MWe3RXEV9dov1wFZraWagVAxynPo/VceStIYfNRgqG4=",
|
||||
"lastModified": 1718122552,
|
||||
"narHash": "sha256-A+dBkSwp8ssHKV/WyXb9uqIYrHBqHvtSedU24Lq9lqw=",
|
||||
"owner": "danth",
|
||||
"repo": "stylix",
|
||||
"rev": "5204b085385c0bfaa1eb1bb0f8dc81922012128d",
|
||||
"rev": "e59d2c1725b237c362e4a62f5722f5b268d566c7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "danth",
|
||||
"ref": "release-24.11",
|
||||
"ref": "release-24.05",
|
||||
"repo": "stylix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tinted-foot": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1726913040,
|
||||
"narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-foot",
|
||||
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-foot",
|
||||
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tinted-kitty": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1716423189,
|
||||
"narHash": "sha256-2xF3sH7UIwegn+2gKzMpFi3pk5DlIlM18+vj17Uf82U=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-kitty",
|
||||
"rev": "eb39e141db14baef052893285df9f266df041ff8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-kitty",
|
||||
"rev": "eb39e141db14baef052893285df9f266df041ff8",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tinted-tmux": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1729501581,
|
||||
"narHash": "sha256-1ohEFMC23elnl39kxWnjzH1l2DFWWx4DhFNNYDTYt54=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-tmux",
|
||||
"rev": "f0e7f7974a6441033eb0a172a0342e96722b4f14",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-tmux",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"treefmt-nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1736154270,
|
||||
"narHash": "sha256-p2r8xhQZ3TYIEKBoiEhllKWQqWNJNoT9v64Vmg4q8Zw=",
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"rev": "13c913f5deb3a5c08bb810efd89dc8cb24dd968b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
|
|
45
flake.nix
|
@ -7,14 +7,14 @@
|
|||
};
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
|
||||
treefmt-nix.url = "github:numtide/treefmt-nix";
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
|
||||
iosevka-custom.url = "git+https://git.xenia.me.uk/pixelifytica/iosevka.git";
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager/release-24.11";
|
||||
url = "github:nix-community/home-manager/release-24.05";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
stylix = {
|
||||
url = "github:danth/stylix/release-24.11";
|
||||
url = "github:danth/stylix/release-24.05";
|
||||
inputs = {
|
||||
nixpkgs.follows = "nixpkgs";
|
||||
home-manager.follows = "home-manager";
|
||||
|
@ -23,31 +23,8 @@
|
|||
};
|
||||
|
||||
outputs =
|
||||
inputs@{
|
||||
self,
|
||||
nixpkgs,
|
||||
treefmt-nix,
|
||||
...
|
||||
}:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||
treefmt = treefmt-nix.lib.evalModule pkgs ./treefmt.nix;
|
||||
in
|
||||
inputs@{ nixpkgs, ... }:
|
||||
{
|
||||
packages.x86_64-linux =
|
||||
let
|
||||
fonts = pkgs.callPackage ./system/fonts.nix { };
|
||||
in
|
||||
{
|
||||
inherit (fonts)
|
||||
iosevka-custom
|
||||
iosevka-custom-aile
|
||||
iosevka-custom-etoile
|
||||
iosevka-custom-nerdfont
|
||||
;
|
||||
};
|
||||
formatter.x86_64-linux = treefmt.config.build.wrapper;
|
||||
checks.x86_64-linux.formatting = treefmt.config.build.check self;
|
||||
nixosConfigurations = {
|
||||
## Server
|
||||
Legion = nixpkgs.lib.nixosSystem {
|
||||
|
@ -76,11 +53,19 @@
|
|||
modules = [ ./system/default.nix ];
|
||||
};
|
||||
## Work
|
||||
Monarch = nixpkgs.lib.nixosSystem {
|
||||
Tone = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
username = "elitherl";
|
||||
hostName = "Monarch";
|
||||
hostName = "Tone";
|
||||
};
|
||||
modules = [ ./system/default.nix ];
|
||||
};
|
||||
Ronin = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
username = "elitherl";
|
||||
hostName = "Ronin";
|
||||
};
|
||||
modules = [ ./system/default.nix ];
|
||||
};
|
||||
|
|
|
@ -1,30 +1,25 @@
|
|||
{ lib, username, ... }:
|
||||
{ username, ... }:
|
||||
{
|
||||
imports = [
|
||||
./services/adguardhome.nix
|
||||
./services/caddy.nix
|
||||
./services/forgejo.nix
|
||||
./services/grafana.nix
|
||||
./services/home-assistant.nix
|
||||
./services/minecraft.nix
|
||||
./services/nix-serve.nix
|
||||
./services/satisfactory/default.nix
|
||||
./services/sshd.nix
|
||||
./services/syncthing.nix
|
||||
./services/webdav.nix
|
||||
./services/xandikos.nix
|
||||
# ./services/minecraft.nix
|
||||
# ./services/satisfactory/default.nix
|
||||
];
|
||||
boot.loader = {
|
||||
systemd-boot.enable = true;
|
||||
efi.canTouchEfiVariables = true;
|
||||
};
|
||||
home-manager.users.${username} = {
|
||||
imports = [ ./home/emacs/default.nix ];
|
||||
services.emacs.enable = false;
|
||||
home.stateVersion = "23.05";
|
||||
};
|
||||
system.stateVersion = "23.05";
|
||||
users.mutableUsers = false;
|
||||
hardware.bluetooth.enable = true;
|
||||
networking.nameservers = lib.mkForce [ "0.0.0.0" ];
|
||||
}
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
{ pkgs, username, ... }:
|
||||
{
|
||||
# nixpkgs.config.kodi.enableAdvancedLauncher = true;
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
desktopManager.kodi = {
|
||||
enable = true;
|
||||
package = pkgs.kodi.withPackages (
|
||||
kp: with kp; [
|
||||
jellyfin
|
||||
youtube
|
||||
netflix
|
||||
]
|
||||
);
|
||||
};
|
||||
displayManager = {
|
||||
lightdm.greeter.enable = false;
|
||||
autoLogin = {
|
||||
enable = true;
|
||||
user = username;
|
||||
};
|
||||
};
|
||||
};
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [ 8080 ];
|
||||
allowedUDPPorts = [ 8080 ];
|
||||
};
|
||||
home-manager.users.${username} = {
|
||||
home.stateVersion = null;
|
||||
};
|
||||
system.stateVersion = null;
|
||||
users.mutableUsers = false;
|
||||
}
|
|
@ -5,6 +5,5 @@
|
|||
home.stateVersion = "23.05";
|
||||
wayland.windowManager.hyprland.settings.monitor = [ "eDP-1,preferred,auto,1.25" ];
|
||||
};
|
||||
networking.wg-quick.interfaces.wg0.configFile = "/etc/wireguard/gb-mnc-wg-001.conf";
|
||||
system.stateVersion = "23.05";
|
||||
}
|
||||
|
|
35
system/Tone.nix
Normal file
|
@ -0,0 +1,35 @@
|
|||
{ pkgs, username, ... }:
|
||||
{
|
||||
imports = [
|
||||
./desktop.nix
|
||||
./work.nix
|
||||
];
|
||||
home-manager.users.${username} = {
|
||||
home.stateVersion = "23.05";
|
||||
wayland.windowManager.hyprland.settings.monitor = [
|
||||
"desc:Dell Inc. DELL P3223QE CCG8YN3,preferred,auto,1.5"
|
||||
];
|
||||
};
|
||||
boot = {
|
||||
loader.efi.efiSysMountPoint = "/boot/efi";
|
||||
initrd = {
|
||||
secrets = {
|
||||
"/crypto_keyfile.bin" = null;
|
||||
};
|
||||
luks.devices."luks-47d34268-5100-4eba-b34d-220f4239c1cb" = {
|
||||
device = "/dev/disk/by-uuid/47d34268-5100-4eba-b34d-220f4239c1cb";
|
||||
keyFile = "/crypto_keyfile.bin";
|
||||
};
|
||||
};
|
||||
};
|
||||
system.stateVersion = "23.05";
|
||||
environment = {
|
||||
etc."ppp/options".text = ''
|
||||
ipcp-accept-remote
|
||||
'';
|
||||
systemPackages = with pkgs; [
|
||||
openfortivpn
|
||||
samba
|
||||
];
|
||||
};
|
||||
}
|
|
@ -10,7 +10,6 @@
|
|||
./steam.nix
|
||||
];
|
||||
home-manager.users.${username} = {
|
||||
imports = [ ./home/swww/default.nix ];
|
||||
home = {
|
||||
stateVersion = "23.05";
|
||||
packages = with pkgs; [
|
||||
|
@ -25,53 +24,23 @@
|
|||
lutris
|
||||
cartridges
|
||||
prismlauncher
|
||||
(retroarch.override {
|
||||
cores = with libretro; [
|
||||
mupen64plus
|
||||
dolphin
|
||||
mgba
|
||||
citra
|
||||
pcsx2
|
||||
ppsspp
|
||||
];
|
||||
})
|
||||
];
|
||||
};
|
||||
programs = {
|
||||
btop.package = pkgs.btop-rocm;
|
||||
obs-studio = {
|
||||
enable = true;
|
||||
plugins = with pkgs.obs-studio-plugins; [
|
||||
wlrobs
|
||||
obs-vkcapture
|
||||
obs-pipewire-audio-capture
|
||||
input-overlay
|
||||
];
|
||||
};
|
||||
programs.obs-studio = {
|
||||
enable = true;
|
||||
plugins = with pkgs.obs-studio-plugins; [
|
||||
wlrobs
|
||||
obs-vkcapture
|
||||
obs-pipewire-audio-capture
|
||||
input-overlay
|
||||
];
|
||||
};
|
||||
wayland.windowManager.hyprland.settings =
|
||||
let
|
||||
primary = "Microstep MSI G27CQ4 E2";
|
||||
secondary = "Acer Technologies ED270R TJMEE0043W01";
|
||||
in
|
||||
{
|
||||
monitor = [
|
||||
"desc:${primary},2560x1440@144,1920x0,1.25,vrr,2"
|
||||
"desc:${secondary},1920x1080@144,0x140,1.0,vrr,2"
|
||||
];
|
||||
workspace = [
|
||||
"2, monitor:desc:${secondary}"
|
||||
"3, monitor:desc:${secondary}"
|
||||
"5, monitor:desc:${primary}"
|
||||
"7, monitor:desc:${primary}"
|
||||
];
|
||||
};
|
||||
wayland.windowManager.hyprland.settings.monitor = [
|
||||
"desc:Acer Technologies ED270R TJMEE0043W01,1920x1080@144,0x140,1.0,vrr,2"
|
||||
"desc:Microstep MSI G27CQ4 E2,2560x1440@144,1920x0,1.25,vrr,2"
|
||||
];
|
||||
};
|
||||
boot = {
|
||||
kernel.sysctl = {
|
||||
"vm.max_map_count" = 16777216;
|
||||
"fs.file-max" = 524288;
|
||||
};
|
||||
extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
|
||||
extraModprobeConfig = ''
|
||||
options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1
|
||||
|
@ -82,12 +51,11 @@
|
|||
initrd.enable = true;
|
||||
opencl.enable = true;
|
||||
};
|
||||
graphics = {
|
||||
opengl = {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
driSupport = true;
|
||||
driSupport32Bit = true;
|
||||
};
|
||||
};
|
||||
services.hardware.openrgb.enable = true;
|
||||
networking.wg-quick.interfaces.wg0.configFile = "/etc/wireguard/gb-mnc-wg-001.conf";
|
||||
system.stateVersion = "23.05";
|
||||
}
|
||||
|
|
|
@ -18,20 +18,37 @@
|
|||
enable = true;
|
||||
package = pkgs.nixVersions.latest;
|
||||
settings = {
|
||||
trusted-users = [ username ];
|
||||
cores = 0;
|
||||
max-jobs = "auto";
|
||||
trusted-users = [
|
||||
"root"
|
||||
username
|
||||
];
|
||||
experimental-features = [
|
||||
"nix-command"
|
||||
"flakes"
|
||||
];
|
||||
auto-optimise-store = true;
|
||||
substituters = [ "https://nix.xenia.me.uk" ];
|
||||
trusted-public-keys = [ "nix.xenia.me.uk:tlgwOaG5KMLjQUk2YaErS8mAG69ZCr3PaHXZYi+Y5eI=" ];
|
||||
};
|
||||
nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
|
||||
channel.enable = true;
|
||||
gc = {
|
||||
automatic = true;
|
||||
options = "--delete-older-than 3d";
|
||||
options = "--delete-older-than 7d";
|
||||
};
|
||||
optimise.automatic = true;
|
||||
registry.my-nixos = {
|
||||
from = {
|
||||
type = "indirect";
|
||||
id = "my-nixos";
|
||||
};
|
||||
to = {
|
||||
type = "git";
|
||||
url = "https://git.xenia.me.uk/pixelifytica/nixos.git?ref=main";
|
||||
};
|
||||
};
|
||||
extraOptions = ''
|
||||
keep-outputs = false
|
||||
keep-derivations = false
|
||||
|
@ -50,11 +67,13 @@
|
|||
"nomachine-client"
|
||||
];
|
||||
system.autoUpgrade = {
|
||||
enable = false; # TEMP disable until server is back up
|
||||
enable = true;
|
||||
persistent = true;
|
||||
allowReboot = false;
|
||||
flake = "git+${config.nix.registry.my-nixos.to.url}";
|
||||
dates = "02:00";
|
||||
randomizedDelaySec = "5min";
|
||||
fixedRandomDelay = true;
|
||||
flags = [
|
||||
"--option"
|
||||
"extra-binary-caches"
|
||||
|
@ -74,6 +93,7 @@
|
|||
};
|
||||
networking = {
|
||||
inherit hostName;
|
||||
networkmanager.enable = true;
|
||||
firewall.enable = true;
|
||||
nameservers = [ "9.9.9.9" ];
|
||||
};
|
||||
|
@ -93,7 +113,6 @@
|
|||
isNormalUser = true;
|
||||
group = "users";
|
||||
description = "Evie Litherland-Smith";
|
||||
shell = pkgs.zsh;
|
||||
extraGroups = [
|
||||
"networkmanager"
|
||||
"wheel"
|
||||
|
@ -101,8 +120,6 @@
|
|||
"input"
|
||||
"uinput"
|
||||
"dialout"
|
||||
"podman"
|
||||
"gamemode"
|
||||
];
|
||||
initialHashedPassword = "$y$j9T$tHIPQt09Kf3KH2eIRze3g/$2mwSlcq27DTGvHNPJ5EP9/1CfL3bXP0F6oS/Vuffmn3";
|
||||
openssh = {
|
||||
|
@ -118,7 +135,8 @@
|
|||
imports = [
|
||||
./home/shell/default.nix
|
||||
./home/scripts/default.nix
|
||||
./home/gpg/default.nix
|
||||
./home/password-store/default.nix
|
||||
./home/emacs/default.nix
|
||||
];
|
||||
home = {
|
||||
inherit username;
|
||||
|
@ -149,15 +167,12 @@
|
|||
wget
|
||||
dig
|
||||
wireguard-tools
|
||||
librespeed-cli
|
||||
dust
|
||||
quickemu
|
||||
distrobox
|
||||
];
|
||||
localBinInPath = true;
|
||||
};
|
||||
programs = {
|
||||
zsh.enable = true;
|
||||
command-not-found.enable = false;
|
||||
ssh.startAgent = true;
|
||||
nano = {
|
||||
|
@ -179,14 +194,7 @@
|
|||
};
|
||||
};
|
||||
security.rtkit.enable = true;
|
||||
virtualisation = {
|
||||
containers.enable = true;
|
||||
podman = {
|
||||
enable = true;
|
||||
dockerCompat = true;
|
||||
defaultNetwork.settings.dns_enabled = true;
|
||||
};
|
||||
};
|
||||
virtualisation.podman.enable = true;
|
||||
location = {
|
||||
latitude = 51.7;
|
||||
longitude = -1.2;
|
||||
|
@ -197,47 +205,38 @@
|
|||
console.useXkbConfig = true;
|
||||
stylix = {
|
||||
enable = true;
|
||||
image = ./wallpapers/default.png;
|
||||
base16Scheme = lib.mkDefault "${pkgs.base16-schemes}/share/themes/one-light.yaml";
|
||||
polarity = config.lib.stylix.scheme.variant;
|
||||
opacity = {
|
||||
applications = 1.0;
|
||||
terminal = 0.8125; # 0x0.D
|
||||
desktop = 0.75; # 0x0.C
|
||||
popups = 0.6875; # 0x0.B
|
||||
};
|
||||
image = ./wallpapers/tropic_island_day.jpg;
|
||||
base16Scheme = ./one-light.yaml; # Base24 scheme
|
||||
polarity = "light";
|
||||
opacity.popups = 0.8;
|
||||
cursor = {
|
||||
package = pkgs.volantes-cursors;
|
||||
name = "volantes_cursors";
|
||||
size = 32;
|
||||
};
|
||||
fonts =
|
||||
let
|
||||
fpkgs = pkgs.callPackage ./fonts.nix { };
|
||||
in
|
||||
{
|
||||
serif = {
|
||||
package = fpkgs.iosevka-custom-etoile;
|
||||
name = "Iosevka Custom Etoile";
|
||||
};
|
||||
sansSerif = {
|
||||
package = fpkgs.iosevka-custom-aile;
|
||||
name = "Iosevka Custom Aile";
|
||||
};
|
||||
monospace = {
|
||||
package = fpkgs.iosevka-custom-nerdfont;
|
||||
name = "IosevkaCustom Nerd Font Propo";
|
||||
};
|
||||
sizes = {
|
||||
applications = 12;
|
||||
desktop = 14;
|
||||
popups = 16;
|
||||
terminal = 12;
|
||||
};
|
||||
fonts = {
|
||||
serif = {
|
||||
package = inputs.iosevka-custom.outputs.packages.${pkgs.system}.iosevka-custom-etoile;
|
||||
name = inputs.iosevka-custom.outputs.names.iosevka-custom-etoile;
|
||||
};
|
||||
sansSerif = {
|
||||
package = inputs.iosevka-custom.outputs.packages.${pkgs.system}.iosevka-custom-aile;
|
||||
name = inputs.iosevka-custom.outputs.names.iosevka-custom-aile;
|
||||
};
|
||||
monospace = {
|
||||
package = pkgs.nerdfonts.override { fonts = [ "Iosevka" ]; };
|
||||
name = "Iosevka Nerd Font";
|
||||
};
|
||||
sizes = {
|
||||
applications = 12;
|
||||
desktop = 14;
|
||||
popups = 16;
|
||||
terminal = 12;
|
||||
};
|
||||
};
|
||||
};
|
||||
fonts.packages = with pkgs; [
|
||||
dejavu_fonts # Compatibility
|
||||
dejavu_fonts # General compatibility
|
||||
liberation_ttf # Documents
|
||||
lmodern # LaTeX
|
||||
(nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; })
|
||||
|
|
|
@ -1,47 +1,36 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
username,
|
||||
...
|
||||
}:
|
||||
{ pkgs, username, ... }:
|
||||
{
|
||||
nixpkgs.config.chromium.commandLineArgs = "--password-store='gnome-libsecret' --enable-features=UseOzonePlatform --ozone-platform=wayland";
|
||||
hardware.bluetooth.enable = true;
|
||||
networking.networkmanager.enable = true;
|
||||
environment = {
|
||||
sessionVariables = {
|
||||
NIXOS_OZONE_WL = "1";
|
||||
MOZ_ENABLE_WAYLAND = "1";
|
||||
WEBKIT_DISABLE_COMPOSITING_MODE = "1";
|
||||
MPLBACKEND = "TkAgg";
|
||||
GDK_BACKEND = "wayland,x11";
|
||||
XDG_SESSION_TYPE = "wayland";
|
||||
QT_QPA_PLATFORM = "wayland";
|
||||
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
|
||||
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
||||
};
|
||||
systemPackages = with pkgs; [
|
||||
libsecret
|
||||
libnotify
|
||||
libarchive
|
||||
xdg-utils
|
||||
imagemagick
|
||||
ffmpeg
|
||||
wl-clipboard
|
||||
hunspell
|
||||
hunspellDicts.en_GB-large
|
||||
wl-clipboard
|
||||
hyprpicker
|
||||
grim
|
||||
slurp
|
||||
swappy
|
||||
xfce.ristretto
|
||||
g4music
|
||||
picard
|
||||
zotero
|
||||
gnome.nautilus
|
||||
libreoffice-fresh
|
||||
evince
|
||||
libreoffice
|
||||
image-roll
|
||||
clapper
|
||||
g4music
|
||||
ffmpeg
|
||||
remmina
|
||||
fractal
|
||||
webcord
|
||||
signal-desktop
|
||||
zapzap
|
||||
teams-for-linux
|
||||
twinkle
|
||||
nomachine-client
|
||||
];
|
||||
};
|
||||
|
@ -58,39 +47,29 @@
|
|||
};
|
||||
programs = {
|
||||
dconf.enable = true;
|
||||
xfconf.enable = true;
|
||||
noisetorch.enable = true;
|
||||
seahorse.enable = true;
|
||||
file-roller.enable = true;
|
||||
thunar = {
|
||||
enable = true;
|
||||
plugins = with pkgs.xfce; [
|
||||
thunar-archive-plugin
|
||||
thunar-volman
|
||||
];
|
||||
};
|
||||
hyprland = {
|
||||
enable = true;
|
||||
xwayland.enable = true;
|
||||
};
|
||||
kdeconnect.enable = true;
|
||||
hyprland.enable = true;
|
||||
xwayland.enable = true;
|
||||
};
|
||||
gtk.iconCache.enable = true;
|
||||
qt = {
|
||||
enable = true;
|
||||
style = "adwaita";
|
||||
platformTheme = "gnome";
|
||||
style = if config.lib.stylix.scheme.variant == "light" then "adwaita" else "adwaita-dark";
|
||||
};
|
||||
services = {
|
||||
xserver.xkb.layout = "gb";
|
||||
gnome.gnome-keyring.enable = true;
|
||||
flatpak.enable = true;
|
||||
printing.enable = true;
|
||||
tumbler.enable = true;
|
||||
udisks2.enable = true;
|
||||
blueman.enable = config.hardware.bluetooth.enable;
|
||||
gnome.sushi.enable = true;
|
||||
gvfs = {
|
||||
enable = true;
|
||||
package = pkgs.gnome.gvfs;
|
||||
package = pkgs.gnome3.gvfs;
|
||||
};
|
||||
kanata = {
|
||||
enable = true;
|
||||
|
@ -121,6 +100,10 @@
|
|||
};
|
||||
};
|
||||
};
|
||||
xserver = {
|
||||
enable = true;
|
||||
xkb.layout = "gb";
|
||||
};
|
||||
};
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
|
@ -137,29 +120,26 @@
|
|||
{
|
||||
imports = [
|
||||
./home/hyprland.nix
|
||||
./home/terminal.nix
|
||||
./home/browser/firefox.nix
|
||||
./home/emacs/default.nix
|
||||
./home/terminal/default.nix
|
||||
./home/browser/default.nix
|
||||
./home/email/default.nix
|
||||
./home/calendar/default.nix
|
||||
./home/password-store/default.nix
|
||||
];
|
||||
home.file.${config.gtk.gtk2.configLocation}.force = true;
|
||||
programs.mpv.enable = true;
|
||||
services = {
|
||||
syncthing.enable = true;
|
||||
gammastep = {
|
||||
inherit (osConfig.location) latitude longitude provider;
|
||||
enable = true;
|
||||
tray = false;
|
||||
tray = true;
|
||||
};
|
||||
};
|
||||
gtk = {
|
||||
enable = true;
|
||||
gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
|
||||
iconTheme = {
|
||||
package = (pkgs.papirus-icon-theme.override { color = "violet"; });
|
||||
name = if config.lib.stylix.scheme.variant == "light" then "Papirus-Light" else "Papirus-Dark";
|
||||
package = (pkgs.papirus-icon-theme.override { color = "magenta"; });
|
||||
name = "Papirus-Light";
|
||||
};
|
||||
};
|
||||
stylix.targets.gtk.extraCss = with config.lib.stylix.scheme.withHashtag; ''
|
||||
|
@ -192,37 +172,17 @@
|
|||
"gtk-3.0/settings.ini".force = true;
|
||||
"gtk-4.0/gtk.css".force = true;
|
||||
"gtk-4.0/settings.ini".force = true;
|
||||
# Set Swappy config so that it saves to Screenshots directory
|
||||
"swappy/config".text = ''
|
||||
[Default]
|
||||
save_dir=${config.xdg.userDirs.pictures}/Screenshots/
|
||||
save_filename_format=swappy-%Y%m%d-%H%M%S.png
|
||||
show_panel=false
|
||||
line_size=5
|
||||
text_size=${toString config.stylix.fonts.sizes.desktop}
|
||||
text_font=${config.stylix.fonts.sansSerif.name}
|
||||
paint_mode=brush
|
||||
early_exit=false
|
||||
fill_shape=false
|
||||
'';
|
||||
# Matplotlib default figure sizes and font settings
|
||||
"matplotlib/matplotlibrc".text =
|
||||
let
|
||||
inherit (config.stylix) fonts;
|
||||
in
|
||||
''
|
||||
font.family: sans-serif
|
||||
font.serif: ${fonts.serif.name}, DejaVu Serif
|
||||
font.sans-serif: ${fonts.sansSerif.name}, DejaVu Sans
|
||||
font.monospace: ${fonts.monospace.name}, DejaVu Sans Mono
|
||||
figure.figsize: 8, 6
|
||||
figure.dpi: 150
|
||||
figure.autolayout: True
|
||||
savefig.dpi: 300
|
||||
'';
|
||||
# Autostart some programs
|
||||
"autostart/signal-desktop.desktop".source =
|
||||
"${pkgs.signal-desktop}/share/applications/signal-desktop.desktop";
|
||||
"autostart/signal-desktop.desktop".source = "${pkgs.signal-desktop}/share/applications/signal-desktop.desktop";
|
||||
"autostart/com.rtosta.zapzap.desktop".source = "${pkgs.zapzap}/share/applications/com.rtosta.zapzap.desktop";
|
||||
"teams-for-linux/config.json".text = builtins.toJSON {
|
||||
awayOnSystemIdle = true;
|
||||
closeAppOnCross = false;
|
||||
followSystemTheme = true;
|
||||
notificationMethod = "electron";
|
||||
optInTeamsV2 = true;
|
||||
spellCheckerLanguages = [ "en_GB" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
139
system/fonts.nix
|
@ -1,139 +0,0 @@
|
|||
{
|
||||
stdenv,
|
||||
findutils,
|
||||
iosevka,
|
||||
nerd-font-patcher,
|
||||
}:
|
||||
let
|
||||
custom-build-plan = {
|
||||
noCvSs = false;
|
||||
exportGlyphNames = false;
|
||||
widths.Normal = {
|
||||
shape = 500;
|
||||
menu = 5;
|
||||
css = "normal";
|
||||
};
|
||||
weights = {
|
||||
Regular = {
|
||||
shape = 400;
|
||||
menu = 400;
|
||||
css = 400;
|
||||
};
|
||||
Bold = {
|
||||
shape = 700;
|
||||
menu = 700;
|
||||
css = 700;
|
||||
};
|
||||
};
|
||||
slopes = {
|
||||
Upright = {
|
||||
angle = 0;
|
||||
shape = "upright";
|
||||
menu = "upright";
|
||||
css = "normal";
|
||||
};
|
||||
Italic = {
|
||||
angle = 9.4;
|
||||
shape = "italic";
|
||||
menu = "italic";
|
||||
css = "italic";
|
||||
};
|
||||
};
|
||||
variants.design = {
|
||||
capital-g = "toothless-corner-serifless-hooked";
|
||||
capital-j = "serifed-both-sides";
|
||||
capital-k = "curly-serifless";
|
||||
capital-p = "closed-motion-serifed";
|
||||
capital-q = "crossing";
|
||||
capital-r = "curly-serifless";
|
||||
capital-u = "tailed-serifless";
|
||||
capital-z = "straight-serifless-with-horizontal-crossbar";
|
||||
a = "double-storey-tailed";
|
||||
d = "tailed-serifless";
|
||||
e = "rounded";
|
||||
f = "tailed-crossbar-at-x-height";
|
||||
g = "double-storey-open";
|
||||
h = "tailed-serifless";
|
||||
i = "tailed-serifed";
|
||||
j = "serifed";
|
||||
k = "cursive-serifless";
|
||||
l = "tailed-serifed";
|
||||
m = "tailed-serifless";
|
||||
n = "tailed-serifless";
|
||||
q = "diagonal-tailed-serifless";
|
||||
u = "tailed-serifless";
|
||||
y = "cursive-serifless";
|
||||
z = "straight-serifless-with-horizontal-crossbar";
|
||||
lower-delta = "flat-top";
|
||||
lower-lambda = "tailed-turn";
|
||||
lower-xi = "flat-top";
|
||||
lower-chi = "semi-chancery-straight-serifless";
|
||||
zero = "tall-slashed";
|
||||
one = "no-base";
|
||||
two = "straight-neck-serifless";
|
||||
three = "flat-top-serifless";
|
||||
four = "semi-open-serifless";
|
||||
five = "oblique-arched-serifless";
|
||||
six = "open-contour";
|
||||
seven = "bend-serifless-crossbar";
|
||||
eight = "two-circles";
|
||||
nine = "open-contour";
|
||||
asterisk = "hex-low";
|
||||
underscore = "high";
|
||||
caret = "high";
|
||||
paren = "normal";
|
||||
brace = "straight";
|
||||
number-sign = "slanted";
|
||||
ampersand = "closed";
|
||||
at = "fourfold";
|
||||
percent = "dots";
|
||||
question = "corner";
|
||||
lig-ltgteq = "flat";
|
||||
lig-neq = "more-slanted";
|
||||
lig-equal-chain = "without-notch";
|
||||
lig-hyphen-chain = "without-notch";
|
||||
lig-double-arrow-bar = "without-notch";
|
||||
lig-single-arrow-bar = "without-notch";
|
||||
};
|
||||
};
|
||||
in
|
||||
rec {
|
||||
iosevka-custom = iosevka.override {
|
||||
set = "Custom";
|
||||
privateBuildPlan = custom-build-plan // {
|
||||
family = "Iosevka Custom";
|
||||
spacing = "normal";
|
||||
serifs = "sans";
|
||||
};
|
||||
};
|
||||
iosevka-custom-aile = iosevka.override {
|
||||
set = "CustomAile";
|
||||
privateBuildPlan = custom-build-plan // {
|
||||
family = "Iosevka Custom Aile";
|
||||
spacing = "quasi-proportional";
|
||||
serifs = "sans";
|
||||
};
|
||||
};
|
||||
iosevka-custom-etoile = iosevka.override {
|
||||
set = "CustomEtoile";
|
||||
privateBuildPlan = custom-build-plan // {
|
||||
family = "Iosevka Custom Etoile";
|
||||
spacing = "quasi-proportional";
|
||||
serifs = "slab";
|
||||
};
|
||||
};
|
||||
iosevka-custom-nerdfont = stdenv.mkDerivation {
|
||||
name = "${iosevka-custom.name}-nerd-font-patched";
|
||||
src = iosevka-custom;
|
||||
nativeBuildInputs = [
|
||||
findutils
|
||||
nerd-font-patcher
|
||||
];
|
||||
buildPhase = ''
|
||||
find \( -name \*.ttf -o -name \*.otf \) -execdir nerd-font-patcher --variable-width-glyphs --careful --complete --boxdrawing --no-progressbars {} \;
|
||||
'';
|
||||
installPhase = ''
|
||||
cp -a . $out
|
||||
'';
|
||||
};
|
||||
}
|
|
@ -26,8 +26,7 @@
|
|||
fsType = "ext4";
|
||||
};
|
||||
|
||||
boot.initrd.luks.devices."luks-d1062931-ee58-4848-adf9-09452daeb6eb".device =
|
||||
"/dev/disk/by-uuid/d1062931-ee58-4848-adf9-09452daeb6eb";
|
||||
boot.initrd.luks.devices."luks-d1062931-ee58-4848-adf9-09452daeb6eb".device = "/dev/disk/by-uuid/d1062931-ee58-4848-adf9-09452daeb6eb";
|
||||
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-uuid/ABE3-88E7";
|
||||
|
|
|
@ -31,8 +31,7 @@
|
|||
fsType = "ext4";
|
||||
};
|
||||
|
||||
boot.initrd.luks.devices."luks-bf1eab3a-6d92-430d-a282-8dd4c9efe2c7".device =
|
||||
"/dev/disk/by-uuid/bf1eab3a-6d92-430d-a282-8dd4c9efe2c7";
|
||||
boot.initrd.luks.devices."luks-bf1eab3a-6d92-430d-a282-8dd4c9efe2c7".device = "/dev/disk/by-uuid/bf1eab3a-6d92-430d-a282-8dd4c9efe2c7";
|
||||
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-uuid/85D5-B6EC";
|
50
system/hardware-configuration/Tone.nix
Normal file
|
@ -0,0 +1,50 @@
|
|||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
modulesPath,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||
|
||||
boot.initrd.availableKernelModules = [
|
||||
"xhci_pci"
|
||||
"ahci"
|
||||
"usb_storage"
|
||||
"usbhid"
|
||||
"sd_mod"
|
||||
];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-uuid/0c6931d0-50c3-47b0-98c8-d295ddeb2004";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
boot.initrd.luks.devices."luks-08822b9c-e9d6-424c-bc75-373f8667526d".device = "/dev/disk/by-uuid/08822b9c-e9d6-424c-bc75-373f8667526d";
|
||||
|
||||
fileSystems."/boot/efi" = {
|
||||
device = "/dev/disk/by-uuid/6009-89FC";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
swapDevices = [ { device = "/dev/disk/by-uuid/ff9627a7-820c-4628-a040-2b665688b893"; } ];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
|
@ -29,8 +29,7 @@
|
|||
fsType = "ext4";
|
||||
};
|
||||
|
||||
boot.initrd.luks.devices."luks-0d50df5f-9456-4296-9156-f5b818e11552".device =
|
||||
"/dev/disk/by-uuid/0d50df5f-9456-4296-9156-f5b818e11552";
|
||||
boot.initrd.luks.devices."luks-0d50df5f-9456-4296-9156-f5b818e11552".device = "/dev/disk/by-uuid/0d50df5f-9456-4296-9156-f5b818e11552";
|
||||
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-uuid/3297-A70D";
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
{ config, lib, ... }:
|
||||
{
|
||||
services.avizo = {
|
||||
enable = true;
|
||||
settings.default = {
|
||||
image-opacity = lib.mkForce "1.0";
|
||||
border-color =
|
||||
let
|
||||
scheme = config.lib.stylix.scheme;
|
||||
in
|
||||
lib.mkForce "rgba(${scheme.base0E-rgb-r}, ${scheme.base0E-rgb-g}, ${scheme.base0E-rgb-b}, 1.0)";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -76,7 +76,7 @@
|
|||
},
|
||||
{
|
||||
"name": "Awesome Wayland",
|
||||
"url": "https://github.com/rcalixte/awesome-wayland",
|
||||
"url": "https://github.com/natpen/awesome-wayland",
|
||||
"tags": ["Software", "Repositories"]
|
||||
},
|
||||
{
|
||||
|
@ -89,11 +89,6 @@
|
|||
"url": "https://github.com/reHackable/awesome-reMarkable",
|
||||
"tags": ["Software", "Repositories"]
|
||||
},
|
||||
{
|
||||
"name": "We Are Wayland Now!",
|
||||
"url": "https://wearewaylandnow.com/",
|
||||
"tags": ["Software"]
|
||||
},
|
||||
{
|
||||
"name": "NixOS Wiki",
|
||||
"url": "https://nixos.wiki",
|
||||
|
@ -201,7 +196,7 @@
|
|||
},
|
||||
{
|
||||
"name": "Robin",
|
||||
"url": "https://dashboard.robinpowered.com/UKAEA/",
|
||||
"url": "https://dashboard.robinpowered.com/",
|
||||
"tags": ["Work", "Room Booking"]
|
||||
},
|
||||
{
|
||||
|
@ -209,11 +204,6 @@
|
|||
"url": "https://pinboard.ukaea.uk/",
|
||||
"tags": ["Work"]
|
||||
},
|
||||
{
|
||||
"name": "EUROFusion Pinboard",
|
||||
"url": "https://users.euro-fusion.org/webapps/pinboard/EFDA-JET/",
|
||||
"tags": ["Work"]
|
||||
},
|
||||
{
|
||||
"name": "OPEN-ADAS",
|
||||
"url": "https://open.adas.ac.uk/",
|
||||
|
@ -299,11 +289,6 @@
|
|||
"url": "https://ukaeauk.sharepoint.com/sites/Plasma",
|
||||
"tags": ["Work", "Office"]
|
||||
},
|
||||
{
|
||||
"name": "Spectroscopy and Imaging Sharepoint",
|
||||
"url": "https://ukaeauk.sharepoint.com/sites/Plasma/Team_Areas/SitePages/Spectroscopy-and-Imaging---Team-Area.aspx",
|
||||
"tags": ["Work", "Office"]
|
||||
},
|
||||
{
|
||||
"name": "Culham Canteen Menus",
|
||||
"url": "https://nucleus.ukaea.uk/Interact/Pages/Section/Default.aspx?section=10112",
|
||||
|
|
|
@ -2,9 +2,7 @@
|
|||
((default-modes
|
||||
(pushnew 'nyxt/mode/emacs:emacs-mode %slot-value%))
|
||||
(default-modes
|
||||
(pushnew 'nyxt/mode/blocker:blocker-mode %slot-value%))
|
||||
(default-modes
|
||||
(pushnew 'nyxt/mode/reduce-tracking:reduce-tracking-mode %slot-value%))))
|
||||
(pushnew 'nyxt/mode/blocker:blocker-mode %slot-value%))))
|
||||
|
||||
(define-configuration status-buffer
|
||||
((glyph-mode-presentation-p t)
|
||||
|
@ -48,9 +46,8 @@
|
|||
'("crates" "https://crates.io/search?q=~a" "https://crates.io/")
|
||||
'("py" "https://docs.python.org/3/search.html?q=~a" "https://docs.python.org/3")
|
||||
'("pypi" "https://pypi.org/search/?q=~a" "https://pypi.org/")
|
||||
'("nixpkgs" "https://search.nixos.org/packages?type=packages&query=~a" "https://search.nixos.org/packages")
|
||||
'("nixwiki" "https://nixos.wiki/index.php?search=~a&go=Go" "https://nixos.wiki/")
|
||||
'("archwiki" "https://wiki.archlinux.org/index.php?search=~a" "https://wiki.archlinux.org/")
|
||||
'("nixwiki" "https://wiki.nixos.org/w/index.php?search=~a" "https://wiki.nixos.org")
|
||||
'("github" "https://github.com/search?utf8=✓&q=~a&type=repositories" "https://github.com/")
|
||||
'("flathub" "https://flathub.org/apps/search?q=~a" "https://flathub.org/")
|
||||
'("doi" "https://dx.doi.org/~a" "https://dx.doi.org/")
|
||||
|
@ -61,7 +58,10 @@
|
|||
(define-configuration context-buffer
|
||||
"Go through the search engines above and make-search-engine out of them."
|
||||
((search-engines
|
||||
(mapcar (lambda (engine) (apply 'make-search-engine engine)) *my-search-engines*))))
|
||||
(mapcar (lambda (engine) (apply 'make-search-engine engine))
|
||||
*my-search-engines*))))
|
||||
|
||||
(define-configuration browser
|
||||
((restore-session-on-startup-p t)))
|
||||
((restore-session-on-startup-p nil)))
|
||||
|
||||
(setf (uiop/os:getenv "GTK_THEME") "Adwaita:light")
|
||||
|
|
8
system/home/browser/default.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
./firefox.nix
|
||||
./nyxt.nix
|
||||
./qutebrowser.nix
|
||||
];
|
||||
}
|
|
@ -1,9 +1,4 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
stylix.targets.firefox.enable = false;
|
||||
programs = {
|
||||
|
@ -34,6 +29,7 @@
|
|||
DisplayMenuBar = "default-off";
|
||||
DontCheckDefaultBrowser = true;
|
||||
EnableTrackingProtection = {
|
||||
Value = true;
|
||||
Locked = true;
|
||||
Cryptomining = true;
|
||||
Fingerprinting = true;
|
||||
|
@ -118,7 +114,6 @@
|
|||
bookmarks = builtins.fromJSON (builtins.readFile ./bookmarks.json);
|
||||
settings = {
|
||||
"app.shield.optoutstudies.enabled" = false;
|
||||
"browser.startup.homepage" = lib.mkDefault "about:home";
|
||||
"browser.tabs.inTitlebar" = 0;
|
||||
"browser.bookmarks.addedImportButton" = false;
|
||||
"browser.bookmarks.showMobileBookmarks" = false;
|
||||
|
@ -138,8 +133,6 @@
|
|||
"intl.locale.requested" = "en-gb,en";
|
||||
"intl.regional_prefs.use_os_locales" = true;
|
||||
"media.eme.enabled" = true;
|
||||
"privacy.globalprivacycontrol.enabled" = true;
|
||||
"privacy.donottrackheader.enabled" = true;
|
||||
"privacy.webrtc.legacyGlobalIndicator" = false;
|
||||
"signon.management.page.breach-alerts.enabled" = false;
|
||||
"signon.rememberSignons" = false;
|
||||
|
|
|
@ -5,46 +5,36 @@
|
|||
configFile = {
|
||||
"nyxt/config.lisp".text =
|
||||
let
|
||||
inherit (config.lib.stylix.scheme) variant;
|
||||
fonts = config.stylix.fonts;
|
||||
scheme = config.lib.stylix.scheme.withHashtag;
|
||||
accent = scheme.base0E;
|
||||
in
|
||||
''
|
||||
;; Import custom configuration
|
||||
(nyxt::load-lisp "${./config.lisp}")
|
||||
;; Set theme variant from GTK_THEME if available
|
||||
(setf (uiop/os:getenv "GTK_THEME") "Adwaita:${variant}")
|
||||
;; Define custom theme
|
||||
(define-configuration browser
|
||||
((theme (make-instance 'theme:theme
|
||||
:dark-p nil
|
||||
:font-family "${fonts.sansSerif.name}"
|
||||
:monospace-font-family "${fonts.monospace.name}"
|
||||
:text-color "${scheme.base05}"
|
||||
:contrast-text-color "${scheme.base01}"
|
||||
:background-color "${scheme.base00}"
|
||||
:primary-color "${scheme.base04}"
|
||||
:secondary-color "${scheme.base03}"
|
||||
:tertiary-color "${scheme.base02}"
|
||||
:quaternary-color "${scheme.base02}"
|
||||
:accent-color "${accent}"
|
||||
:action-color "${scheme.cyan}"
|
||||
:success-color "${scheme.green}"
|
||||
:warning-color "${scheme.yellow}"
|
||||
:highlight-color "${scheme.base04}"
|
||||
:codeblock-color "${scheme.base01}"
|
||||
:on-background-color "${scheme.base05}"
|
||||
:on-primary-color "${scheme.base00}"
|
||||
:on-secondary-color "${scheme.base01}"
|
||||
:on-tertiary-color "${scheme.base04}"
|
||||
:on-quaternary-color "${scheme.base04}"
|
||||
:primary-color "${scheme.base02}"
|
||||
:on-primary-color "${scheme.base05}"
|
||||
:secondary-color "${scheme.base03}"
|
||||
:on-secondary-color "${scheme.base05}"
|
||||
:accent-color "${scheme.magenta}"
|
||||
:on-accent-color "${scheme.base01}"
|
||||
:action-color "${scheme.cyan}"
|
||||
:on-action-color "${scheme.base01}"
|
||||
:success-color "${scheme.green}"
|
||||
:on-success-color "${scheme.base01}"
|
||||
:on-warning-color "${scheme.base01}"
|
||||
:highlight-color "${scheme.magenta}"
|
||||
:on-highlight-color "${scheme.base01}"
|
||||
:on-codeblock-color "${scheme.base05}"
|
||||
))))
|
||||
:warning-color "${scheme.yellow}"
|
||||
:on-warning-color "${scheme.base01}"
|
||||
:codeblock-color "${scheme.base02}"
|
||||
:on-codeblock-color "${scheme.base05}"))))
|
||||
'';
|
||||
};
|
||||
dataFile."nyxt/bookmarks.lisp".text =
|
||||
|
@ -52,8 +42,8 @@
|
|||
# Make a string of lisp-style list of strings, from nix-style
|
||||
# list
|
||||
convertTags = tags: "(" + (builtins.foldl' (x: y: x + " \"" + y + "\"") "" tags) + " )";
|
||||
# Take bookmarks as returned from JSON file and convert to
|
||||
# NYXT expected format
|
||||
# Take bookmarks as returned from JSON file and convert to NYXT
|
||||
# expected format
|
||||
convertBookmark =
|
||||
{
|
||||
name,
|
||||
|
@ -63,10 +53,10 @@
|
|||
"(:url \"${url}\" :title \"${name}\" :tags ${convertTags tags})\n";
|
||||
in
|
||||
(
|
||||
# Fold all entries in bookmarks.json into single string of
|
||||
# NYXT format bookmarks, each entry on a new line and with 2
|
||||
# space indentation, just for visual clarity if reading the
|
||||
# outputted file
|
||||
# Fold all entries in bookmarks.json into single string of NYXT
|
||||
# format bookmarks, each entry on a new line and with 2 space
|
||||
# indentation, just for visual clarity if reading the outputted
|
||||
# file
|
||||
"(\n"
|
||||
+ (builtins.foldl' (x: y: x + " " + convertBookmark y) "" (
|
||||
builtins.fromJSON (builtins.readFile ./bookmarks.json)
|
||||
|
|
|
@ -1,35 +1,138 @@
|
|||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
../shell/default.nix
|
||||
../shell/git.nix
|
||||
../gpg/default.nix
|
||||
../texlive/default.nix
|
||||
../programming/default.nix
|
||||
];
|
||||
home.sessionVariables.EDITOR = "emacs";
|
||||
programs.emacs = {
|
||||
stylix.targets.emacs.enable = false;
|
||||
services.emacs = {
|
||||
enable = true;
|
||||
package = pkgs.emacs30.override {
|
||||
package = config.programs.emacs.finalPackage;
|
||||
defaultEditor = true;
|
||||
client.enable = true;
|
||||
socketActivation.enable = true;
|
||||
startWithUserSession = false;
|
||||
};
|
||||
programs.emacs = {
|
||||
# Clone emacs config from https://git.xenia.me.uk/pixelifytica/emacs.git
|
||||
enable = true;
|
||||
package = pkgs.emacs29.override {
|
||||
withImageMagick = true;
|
||||
withPgtk = true;
|
||||
};
|
||||
extraPackages = epkgs: import ./packages.nix { inherit epkgs; };
|
||||
extraConfig =
|
||||
let
|
||||
fixed-font-family = "${config.stylix.fonts.monospace.name}";
|
||||
variable-font-family = "${config.stylix.fonts.sansSerif.name}";
|
||||
font-height = builtins.toString (
|
||||
builtins.floor (builtins.mul config.stylix.fonts.sizes.applications 10)
|
||||
);
|
||||
custom-theme-name = "nix";
|
||||
custom-theme = pkgs.writeTextFile {
|
||||
name = "custom-emacs-theme";
|
||||
destination = "/${custom-theme-name}-theme.el";
|
||||
text = ''
|
||||
(deftheme ${custom-theme-name}
|
||||
"Use Nix customised fonts for main faces")
|
||||
|
||||
(custom-theme-set-variables
|
||||
'${custom-theme-name}
|
||||
'(menu-bar-mode nil))
|
||||
|
||||
(custom-theme-set-faces
|
||||
'${custom-theme-name}
|
||||
'(default ((t (:family "${fixed-font-family}" :height ${font-height}))))
|
||||
'(fixed-pitch ((t (:family "${fixed-font-family}"))))
|
||||
'(fixed-pitch-serif ((t (:family "${fixed-font-family}"))))
|
||||
'(variable-pitch ((t (:family "${variable-font-family}")))))
|
||||
|
||||
(provide-theme '${custom-theme-name})
|
||||
'';
|
||||
};
|
||||
custom-theme-hash = builtins.hashFile "sha256" "${custom-theme}/${custom-theme-name}-theme.el";
|
||||
in
|
||||
''
|
||||
(add-to-list 'custom-theme-load-path "${custom-theme}")
|
||||
(add-to-list 'custom-safe-themes "${custom-theme-hash}")
|
||||
(load-theme '${custom-theme-name})
|
||||
'';
|
||||
extraPackages =
|
||||
epkgs: with epkgs; [
|
||||
treesit-grammars.with-all-grammars
|
||||
mu4e
|
||||
emacsql-sqlite
|
||||
];
|
||||
};
|
||||
home.packages = with pkgs; [
|
||||
# External requirements
|
||||
# Plugin requirements
|
||||
gcc
|
||||
sqlite
|
||||
languagetool
|
||||
wordnet
|
||||
pandoc
|
||||
ghostscript
|
||||
mupdf-headless
|
||||
poppler_utils
|
||||
graphviz-nox
|
||||
|
||||
toolbox
|
||||
# Customised LaTeX install
|
||||
(texlive.combine {
|
||||
inherit (texlive)
|
||||
scheme-medium
|
||||
dvisvgm
|
||||
dvipng
|
||||
wrapfig
|
||||
amsmath
|
||||
ulem
|
||||
hyperref
|
||||
capt-of
|
||||
listings
|
||||
bera
|
||||
;
|
||||
latex-beamer-ukaea.pkgs = [ (callPackage ./texlive/latex-beamer-ukaea/default.nix { }) ];
|
||||
})
|
||||
|
||||
# Development tools
|
||||
## Code screenshots
|
||||
silicon
|
||||
|
||||
## Python Environments
|
||||
poetry
|
||||
|
||||
## Linters
|
||||
shellcheck
|
||||
yamllint
|
||||
ruff
|
||||
|
||||
## Formatters
|
||||
nixfmt-rfc-style
|
||||
shfmt
|
||||
stylua
|
||||
nodePackages.prettier
|
||||
nodePackages.prettier-plugin-toml
|
||||
|
||||
## Language servers
|
||||
nixd
|
||||
lua-language-server
|
||||
|
||||
## Interpreters
|
||||
(python3.withPackages (
|
||||
ps: with ps; [
|
||||
tkinter
|
||||
python-lsp-server
|
||||
pylsp-rope
|
||||
rope
|
||||
mypy
|
||||
numpy
|
||||
scipy
|
||||
xarray
|
||||
matplotlib
|
||||
]
|
||||
))
|
||||
(luajit.withPackages (ps: [ (ps.callPackage ./luarocks/scilua.nix { }) ]))
|
||||
];
|
||||
xdg.configFile = {
|
||||
"ruff/pyproject.toml".source = ./ruff.toml;
|
||||
"pypoetry/config.toml".source = ./pypoetry.toml;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,48 +1,60 @@
|
|||
{ epkgs }:
|
||||
with epkgs;
|
||||
[
|
||||
# EViL Mode
|
||||
evil
|
||||
# UI and Appearance
|
||||
epkgs: with epkgs; [
|
||||
# UI
|
||||
base16-theme
|
||||
all-the-icons
|
||||
nerd-icons
|
||||
nerd-icons-completion
|
||||
nerd-icons-corfu
|
||||
nerd-icons-dired
|
||||
nerd-icons-ibuffer
|
||||
nerd-icons-corfu
|
||||
doom-modeline
|
||||
visual-fill-column
|
||||
# Email and Calendar
|
||||
khalel
|
||||
mu4e
|
||||
# Other (TODO sort)
|
||||
minions
|
||||
ligature
|
||||
which-key
|
||||
diff-hl
|
||||
org-roam
|
||||
org-journal
|
||||
org-noter
|
||||
citar
|
||||
|
||||
# Completion
|
||||
vertico
|
||||
marginalia
|
||||
orderless
|
||||
marginalia
|
||||
cape
|
||||
corfu
|
||||
corfu-terminal
|
||||
cape
|
||||
consult
|
||||
consult-eglot
|
||||
flyspell-correct
|
||||
tempel
|
||||
tempel-collection
|
||||
rainbow-delimiters
|
||||
envrc
|
||||
treesit-grammars.with-all-grammars
|
||||
|
||||
# IDE
|
||||
treesit-auto
|
||||
apheleia
|
||||
flymake-shellcheck
|
||||
flymake-clippy
|
||||
magit
|
||||
nix-mode
|
||||
nix-ts-mode
|
||||
nushell-ts-mode
|
||||
python-docstring
|
||||
python-pytest
|
||||
engrave-faces
|
||||
auctex
|
||||
forge
|
||||
apheleia
|
||||
envrc
|
||||
rainbow-delimiters
|
||||
flymake-shellcheck
|
||||
flymake-yamllint
|
||||
flymake-clippy
|
||||
flymake-eslint
|
||||
markdown-mode
|
||||
pandoc-mode
|
||||
python-docstring
|
||||
nix-mode
|
||||
lua-mode
|
||||
|
||||
# Org + LaTeX
|
||||
org-roam
|
||||
org-noter
|
||||
citar
|
||||
auctex
|
||||
htmlize
|
||||
|
||||
# Other
|
||||
password-store
|
||||
emms
|
||||
bbdb
|
||||
ement
|
||||
elfeed
|
||||
elfeed-org
|
||||
elfeed-tube
|
||||
scad-mode
|
||||
]
|
|
@ -1,84 +0,0 @@
|
|||
#+TITLE: Font Showcase
|
||||
#+AUTHOR: Evie Litherland-Smith
|
||||
This is a showcase of various font and UI features to act as a
|
||||
standard candle.
|
||||
* Font emphasis
|
||||
Examples of:
|
||||
- *Bold text*
|
||||
- /Italic text/
|
||||
- _Underscored text_
|
||||
- =Literal text=
|
||||
- ~Code~
|
||||
- +Strike-through+
|
||||
* Character showcase
|
||||
#+begin_example
|
||||
ABC.DEF.GHI.JKL.MNO.PQRS.TUV.WXYZ abc.def.ghi.jkl.mno.pqrs.tuv.wxyz
|
||||
!iIlL17|¦ ¢coO08BbDQ $5SZ2zs 96µm float il1[]={1-2/3.4,5+6=7/8%90};
|
||||
1234567890 ,._-+= >< «¯-¬_» ~–÷+× {*}[]()<>`+-=$/#_%^@\&|~?'" !,.;:
|
||||
E3CGQ g9q¶ uvw ſßðþ ΓΔΛαδιλμξπτχ∂ ЖЗКУЯжзклмнруфчьыя <= != == => ->
|
||||
#+end_example
|
||||
** Legibility test
|
||||
Can I tell the difference between: 1,i,I,l,L,|
|
||||
How about: 0,O,o
|
||||
* Tables
|
||||
| Heading 1 | Heading 2 | Plot |
|
||||
|-----------+-----------+--------------|
|
||||
| 1 | 1 | |
|
||||
| 2 | 4 | c |
|
||||
| 3 | 9 | W |
|
||||
| 4 | 16 | WV |
|
||||
| 5 | 25 | WWH |
|
||||
| 6 | 36 | WWWW: |
|
||||
| 7 | 49 | WWWWWV |
|
||||
| 8 | 64 | WWWWWWWl |
|
||||
| 9 | 81 | WWWWWWWWWh |
|
||||
| 10 | 100 | WWWWWWWWWWWW |
|
||||
#+TBLFM: $2=$1**2::$3='(orgtbl-ascii-draw $2 1 100 12)
|
||||
* Source blocks
|
||||
#+begin_src python
|
||||
def main(*args, **kwargs) -> None:
|
||||
"""
|
||||
Example docstring for function
|
||||
"""
|
||||
return
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
#+end_src
|
||||
* Example prose
|
||||
#+begin_quote
|
||||
AMONG the many valuable contributions of William Dwight Whitney to
|
||||
linguistic science is one especially important and fundamental
|
||||
principle. It may be stated in these words. In explaining the
|
||||
prehistoric phenomena of language we must assume no other factors than
|
||||
those which we are able to observe and estimate in the historical
|
||||
period of language development. The factors that produced changes in
|
||||
human speech five thousand or ten thousand years ago cannot have been
|
||||
essentially different from those which are now operating to transform
|
||||
living languages. On the basis of this principle we look to-day at a
|
||||
much-discussed problem of Indo-European philology with views very
|
||||
different from the views held by the founders of Comparative Philology
|
||||
and their immediate successors. I refer to the problem, how the
|
||||
Indo-European people came to assign gender to nouns, to distinguish
|
||||
between masculine, feminine, and neuter. This question is of interest
|
||||
to others besides philologists. What man of culture who has learned
|
||||
languages such as the Greek, Latin, or French has not at times
|
||||
wondered that objects which have no possible connection with the
|
||||
natural gender of animals appear constantly in the language as male or
|
||||
female? In German, for example, it is der fuss, but die hand; der
|
||||
geist, but die seele; in Latin, hīc hortus, hīc animus, hīc amor, but
|
||||
haec planta, haec anima, haec felicitas; in Greek, ὁ πλοῦτος, ὁ οἶκος,
|
||||
but ἡ πενία, ἡ οἰκία.
|
||||
|
||||
This gender distinction pervades all the older Indo-European
|
||||
languages, and must therefore be regarded as having its origin in the
|
||||
time of the pro-ethnic Indo-European community. Not only is the
|
||||
subject itself full of interest, but also the treatment it has
|
||||
received from the philological research of our century. The various
|
||||
efforts made to solve the problem may very aptly illustrate an
|
||||
essential difference which exists between the theories of language
|
||||
development held in the beginning and middle of this century and those
|
||||
which prevail to-day, — a difference of method existing not in
|
||||
comparative linguistics alone, but also in other fields of
|
||||
philological and historical research that border on it.
|
||||
#+end_quote
|
9
system/home/emacs/pypoetry.toml
Normal file
|
@ -0,0 +1,9 @@
|
|||
[virtualenvs]
|
||||
create = true
|
||||
in-project = true
|
||||
|
||||
[virtualenvs.options]
|
||||
always-copy = true
|
||||
no-pip = true
|
||||
no-setuptools = true
|
||||
system-site-packages = true
|
|
@ -50,7 +50,7 @@
|
|||
\node (q3) at (0,0) {};
|
||||
\node (q4) at (\the\paperwidth,0) {};
|
||||
\fill[fill=bg] (q1.center)--(q2.center)--(q4.center)--(q3.center);
|
||||
\node[anchor=north west,text width=0.8\paperwidth] (titletext) at (0.4,0.42\paperheight) {
|
||||
\node[anchor=north west,text width=0.9\paperwidth] (titletext) at (0.4,0.44\paperheight) {
|
||||
\usebeamerfont{institute}{\usebeamercolor[fg]{institute}\insertinstitute}\par
|
||||
\smallskip
|
||||
\usebeamerfont{title}{\usebeamercolor[fg]{title}\inserttitle}\par
|
Before Width: | Height: | Size: 244 KiB After Width: | Height: | Size: 244 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
@ -4,19 +4,20 @@
|
|||
enable = true;
|
||||
settings = {
|
||||
main = {
|
||||
use-bold = true;
|
||||
icon-theme = config.gtk.iconTheme.name;
|
||||
icons-enabled = true;
|
||||
fields = "filename,name,generic,exec";
|
||||
fields = "filename,name,generic,categories";
|
||||
fuzzy = true;
|
||||
filter-desktop = true;
|
||||
terminal = "${config.programs.alacritty.package}/bin/alacritty -e";
|
||||
anchor = "center";
|
||||
lines = 24;
|
||||
width = 80;
|
||||
tabs = 4;
|
||||
layer = "overlay";
|
||||
};
|
||||
border = {
|
||||
width = 2;
|
||||
radius = 10;
|
||||
width = 1;
|
||||
radius = 5;
|
||||
};
|
||||
colors.border = lib.mkForce "${config.lib.stylix.scheme.base0E}ff";
|
||||
};
|
||||
|
|
|
@ -7,12 +7,9 @@
|
|||
}:
|
||||
{
|
||||
imports = [
|
||||
./udiskie.nix
|
||||
./waybar.nix
|
||||
./fuzzel.nix
|
||||
./mako.nix
|
||||
./avizo.nix
|
||||
./wlogout.nix
|
||||
];
|
||||
home.packages = [
|
||||
(pkgs.writeShellScriptBin "protonmail-setup-bridge" ''
|
||||
|
@ -21,10 +18,31 @@
|
|||
${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl dispatch exec "PASSWORD_STORE_DIR=/dev/null ${pkgs.protonmail-bridge}/bin/protonmail-bridge -n"
|
||||
'')
|
||||
];
|
||||
stylix.targets.hyprlock.enable = false; # TODO maybe re-enable once I've checked what it does
|
||||
services = {
|
||||
hyprpaper.enable = true;
|
||||
kanshi.systemdTarget = "hyprland-session.target";
|
||||
gpg-agent.pinentryPackage = pkgs.pinentry-gnome3;
|
||||
avizo = {
|
||||
enable = true;
|
||||
settings.default = {
|
||||
image-opacity = lib.mkForce "1.0";
|
||||
border-color =
|
||||
let
|
||||
scheme = config.lib.stylix.scheme;
|
||||
in
|
||||
lib.mkForce "rgba(${scheme.base0E-rgb-r}, ${scheme.base0E-rgb-g}, ${scheme.base0E-rgb-b}, 1.0)";
|
||||
};
|
||||
};
|
||||
kdeconnect = {
|
||||
enable = true;
|
||||
indicator = true;
|
||||
};
|
||||
udiskie = {
|
||||
enable = true;
|
||||
notify = true;
|
||||
automount = true;
|
||||
tray = "never";
|
||||
};
|
||||
hypridle = {
|
||||
enable = true;
|
||||
settings =
|
||||
|
@ -57,6 +75,7 @@
|
|||
waybar.systemd.target = "hyprland-session.target";
|
||||
hyprlock =
|
||||
let
|
||||
font = config.stylix.fonts.sansSerif.name;
|
||||
scheme = config.lib.stylix.scheme;
|
||||
accent = scheme.base0E;
|
||||
in
|
||||
|
@ -64,10 +83,9 @@
|
|||
enable = true;
|
||||
settings = {
|
||||
general = {
|
||||
disable_loading_bar = false;
|
||||
hide_cursor = true;
|
||||
grace = 3;
|
||||
ignore_empty_input = true;
|
||||
grace = 5;
|
||||
ignore_emptry_input = true;
|
||||
};
|
||||
background = [
|
||||
{
|
||||
|
@ -77,45 +95,28 @@
|
|||
blur_size = 8;
|
||||
}
|
||||
];
|
||||
shape = [
|
||||
label = [
|
||||
{
|
||||
monitor = "";
|
||||
size = "395, 185";
|
||||
text = "cmd[update:30000] echo \"$(date +\"%R\")\"";
|
||||
color = "0xff${scheme.base00}";
|
||||
rounding = 10;
|
||||
border_size = 2;
|
||||
border_color = "0xff${accent}";
|
||||
position = "-10, -10";
|
||||
font_size = 90;
|
||||
font_family = font;
|
||||
position = "-30, 0";
|
||||
halign = "right";
|
||||
valign = "top";
|
||||
}
|
||||
{
|
||||
monitor = "";
|
||||
text = "cmd[update:43200000] echo \"$(date +\"%A,%e %B %Y\")\"";
|
||||
color = "0xff${scheme.base00}";
|
||||
font_size = 25;
|
||||
font_family = font;
|
||||
position = "-30, -150";
|
||||
halign = "right";
|
||||
valign = "top";
|
||||
}
|
||||
];
|
||||
label =
|
||||
let
|
||||
font = config.stylix.fonts.monospace.name;
|
||||
in
|
||||
[
|
||||
{
|
||||
monitor = "";
|
||||
text = "cmd[update:30000] echo \"$(date +\"%R\")\"";
|
||||
color = "0xff${scheme.base05}";
|
||||
font_size = 90;
|
||||
font_family = font;
|
||||
position = "-30, 0";
|
||||
halign = "right";
|
||||
valign = "top";
|
||||
}
|
||||
{
|
||||
monitor = "";
|
||||
text = "cmd[update:43200000] echo \"$(date +\"%F\")\"";
|
||||
color = "0xff${scheme.base05}";
|
||||
font_size = 25;
|
||||
font_family = font;
|
||||
position = "-40, -150";
|
||||
halign = "right";
|
||||
valign = "top";
|
||||
}
|
||||
];
|
||||
image = [
|
||||
{
|
||||
monitor = "";
|
||||
|
@ -159,29 +160,32 @@
|
|||
systemd.enable = true;
|
||||
settings = {
|
||||
monitor = [ ",preferred,auto,auto" ];
|
||||
env = [
|
||||
"XDG_CURRENT_DESKTOP=Hyprland"
|
||||
"XDG_SESSION_DESKTOP=Hyprland"
|
||||
"GDK_BACKEND=wayland,x11"
|
||||
"QT_AUTO_SCREEN_SCALE_FACTOR,1"
|
||||
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
|
||||
"GRIM_DEFAULT_DIR,${config.xdg.userDirs.pictures}/Screenshots"
|
||||
];
|
||||
exec-once = [
|
||||
"systemctl --user import-environment WAYLAND_DISPLAY QT_QPA_PLATFORMTHEME"
|
||||
"${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl setcursor ${config.gtk.cursorTheme.name} ${toString config.gtk.cursorTheme.size}"
|
||||
"${pkgs.libsForQt5.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1"
|
||||
"PASSWORD_STORE_DIR=/dev/null ${pkgs.protonmail-bridge}/bin/protonmail-bridge -n"
|
||||
"${pkgs.dex}/bin/dex -a"
|
||||
"sleep 5; ${pkgs.dex}/bin/dex -a"
|
||||
];
|
||||
gestures.workspace_swipe = true;
|
||||
general = {
|
||||
layout = "master";
|
||||
gaps_in = 3;
|
||||
layout = "dwindle";
|
||||
gaps_in = 2.5;
|
||||
gaps_out = 5;
|
||||
"col.active_border" = lib.mkForce "rgb(${config.lib.stylix.scheme.base0E})";
|
||||
"col.active_border" = lib.mkForce "rgb(${config.lib.stylix.scheme.magenta})";
|
||||
};
|
||||
master = {
|
||||
allow_small_split = true;
|
||||
special_scale_factor = 0.95;
|
||||
mfact = 0.5;
|
||||
new_on_top = false;
|
||||
orientation = "left";
|
||||
inherit_fullscreen = false;
|
||||
dwindle = {
|
||||
force_split = 2;
|
||||
smart_resizing = false;
|
||||
drop_at_cursor = true;
|
||||
special_scale_factor = 0.95;
|
||||
};
|
||||
input = {
|
||||
kb_layout = osConfig.services.xserver.xkb.layout;
|
||||
|
@ -189,7 +193,12 @@
|
|||
touchpad.natural_scroll = "yes";
|
||||
};
|
||||
decoration = {
|
||||
rounding = 10;
|
||||
rounding = 5;
|
||||
"col.shadow" = lib.mkForce "rgba(${config.lib.stylix.scheme.base00}0d)";
|
||||
drop_shadow = "yes";
|
||||
shadow_ignore_window = true;
|
||||
shadow_range = 4;
|
||||
shadow_render_power = 3;
|
||||
blur = {
|
||||
enabled = true;
|
||||
size = 5;
|
||||
|
@ -198,13 +207,6 @@
|
|||
brightness = 1.0;
|
||||
noise = 2.0e-2;
|
||||
};
|
||||
shadow = {
|
||||
enabled = true;
|
||||
range = 4;
|
||||
render_power = 3;
|
||||
ignore_window = true;
|
||||
color = lib.mkForce "rgba(${config.lib.stylix.scheme.base00}0d)";
|
||||
};
|
||||
};
|
||||
animations = {
|
||||
enabled = true;
|
||||
|
@ -248,24 +250,21 @@
|
|||
"pin, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
||||
"dimaround, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
||||
"stayfocused, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
||||
# PulseAudio, Network and Bluetooth control panels
|
||||
"float, pavucontrol|nm-connection-editor|.blueman-manager-wrapped"
|
||||
"size 800 600, pavucontrol|nm-connection-editor|.blueman-manager-wrapped"
|
||||
"move onscreen 50 100%-615,pavucontrol|nm-connection-editor|.blueman-manager-wrapped"
|
||||
# Network and Bluetooth control panels
|
||||
"float, pavucontrol|.blueman-manager-wrapped|nm-connection-editor"
|
||||
"size 800 600, pavucontrol|.blueman-manager-wrapped|nm-connection-editor"
|
||||
"move onscreen 100%-820 50,pavucontrol|.blueman-manager-wrapped|nm-connection-editor"
|
||||
# File picker dialog
|
||||
"float, xdg-desktop-portal-gtk"
|
||||
"size 800 600, xdg-desktop-portal-gtk"
|
||||
"center, xdg-desktop-portal-gtk"
|
||||
# Matplotlib plots
|
||||
"float, Matplotlib"
|
||||
|
||||
# Workspace rules
|
||||
"workspace 2, (firefox)" # Browser
|
||||
"workspace 3, (signal|WebCord|teams-for-linux|twinkle)" # Messaging
|
||||
"workspace 4, (Zotero|libreoffice|soffice|org.musicbrainz.Picard)(.*)" # Files
|
||||
"workspace 5, (Nxplayer.bin)" # Remote Desktop
|
||||
"workspace 6, (PrusaSlicer)" # 3D Printing
|
||||
"workspace 7, (steam_app|steam|lutris|page.kramo.Cartridges|org.prismlauncher.PrismLauncher|explorer.exe|gw2-64.exe|rsi launcher.exe)" # Gaming
|
||||
"workspace 2, (firefox|nyxt|org.qutebrowser.qutebrowser)" # Browser
|
||||
"workspace 3, (libreoffice|soffice)(.*)" # Documents
|
||||
"workspace 4, (signal|com.rtosta.zapzap|WebCord|teams-for-linux|twinkle)" # Messaging
|
||||
"workspace 5, (org.remmina.Remmina|Nxplayer.bin)" # Remote Desktop
|
||||
"workspace 6, (steam|steam_app|lutris|page.kramo.Cartridges|org.prismlauncher.PrismLauncher)" # Gaming
|
||||
|
||||
# PrismLauncher / Minecraft
|
||||
"float, org.prismlauncher.PrismLauncher"
|
||||
|
@ -281,16 +280,15 @@
|
|||
"center, title:Library,class:firefox"
|
||||
"pin, title:Picture-in-Picture,class:firefox"
|
||||
|
||||
# NautilusPreviewer (Sushi)
|
||||
"float, class:org.gnome.NautilusPreviewer"
|
||||
"center, class:org.gnome.NautilusPreviewer"
|
||||
|
||||
# Electron file picker dialog
|
||||
"float, title:Open Files,class:electron"
|
||||
"size 800 600, title:Open Files,class:electron"
|
||||
"center, title:Open Files,class:electron"
|
||||
|
||||
# Zotero settings window
|
||||
"float, title:(Zotero Settings|Progress),class:Zotero"
|
||||
"size 800 600, title:(Zotero Settings|Progress),class:Zotero"
|
||||
"center, title:(Zotero Settings|Progress),class:Zotero"
|
||||
|
||||
# Inhibit idle when watching videos
|
||||
"idleinhibit fullscreen, class:firefox|com.github.rafostar.Clapper"
|
||||
|
||||
|
@ -302,22 +300,30 @@
|
|||
"float, title:Open,class:(libreoffice|soffice)(.*)"
|
||||
|
||||
# Steam
|
||||
"workspace 7 silent, title:(notification)(.*),class:steam"
|
||||
"float, title:Friends List,class:steam"
|
||||
"size 400 600, title:Friends List,class:steam"
|
||||
"center, title:Friends List,class:steam"
|
||||
"float, title:(.*)(Chat),class:steam"
|
||||
"size 800 600, title:(.*)(Chat),class:steam"
|
||||
"float, title:Steam Settings,class:steam"
|
||||
"size 800 600, title:Steam Settings,class:steam"
|
||||
"center, title:Steam Settings,class:steam"
|
||||
"float, title:(.*)(Controller Layout),class:steam"
|
||||
"size 1200 800, title:(.*)(Controller Layout),class:steam"
|
||||
"center, title:(.*)(Controller Layout),class:steam"
|
||||
|
||||
# NoMachine
|
||||
"suppressevent fullscreen maximize, class:Nxplayer.bin"
|
||||
# Remmina / NoMachine
|
||||
"suppressevent fullscreen maximize, class:org.remmina.Remmina|Nxplayer.bin"
|
||||
"float, title:Remmina Remote Desktop Client, class:org.remmina.Remmina"
|
||||
"center, title:Remmina Remote Desktop Client, class:org.remmina.Remmina"
|
||||
];
|
||||
bind =
|
||||
let
|
||||
withTerm =
|
||||
{
|
||||
term ? "alacritty",
|
||||
package ? config.programs.${term}.package,
|
||||
progname,
|
||||
args ? "",
|
||||
}:
|
||||
"${package}/bin/${term} -T ${progname} -e ${progname} ${args}";
|
||||
workspace = w: [
|
||||
"SUPER, ${toString w}, moveworkspacetomonitor, ${toString w} current"
|
||||
"SUPER, ${toString w}, workspace, ${toString w}"
|
||||
|
@ -325,61 +331,81 @@
|
|||
];
|
||||
in
|
||||
lib.lists.flatten (lib.lists.forEach (lib.lists.range 1 9) workspace)
|
||||
++ [
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||
# Open Hyprland wiki at correct version number
|
||||
"CTRL_SHIFT, H, exec, xdg-open \"https://wiki.hyprland.org/$(${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl version -j | ${pkgs.jq}/bin/jq $args.tag | ${pkgs.gnused}/bin/sed s/v// | ${pkgs.gnused}/bin/sed s/\\\"//g | ${pkgs.gnugrep}/bin/grep -Po \"[0-9]+\.[0-9]+\").0\""
|
||||
++ (
|
||||
let
|
||||
btm_args = "--autohide_time --battery --celsius --enable_cache_memory --enable_gpu_memory --group --hide_avg_cpu --hide_table_gap --retention=3m --show_table_scroll_position";
|
||||
in
|
||||
[
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||
# Open Hyprland wiki at correct version number
|
||||
"CTRL_SHIFT, H, exec, xdg-open \"https://wiki.hyprland.org/$(${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl version -j | ${pkgs.jq}/bin/jq $args.tag | ${pkgs.gnused}/bin/sed s/v// | ${pkgs.gnused}/bin/sed s/\\\"//g)\""
|
||||
|
||||
"SUPER, F1, exec, ${config.programs.hyprlock.package}/bin/hyprlock"
|
||||
"SUPER, P, exec, ${config.programs.wlogout.package}/bin/wlogout"
|
||||
"SUPER, Q, killactive,"
|
||||
"SUPER, V, togglefloating"
|
||||
# "SUPER SHIFT, V, setfloating" ## TODO setfloating exists
|
||||
# in newer version of Hyprland than mine
|
||||
"SUPER SHIFT, V, moveactive, exact 1% 4%"
|
||||
"SUPER SHIFT, V, resizeactive, exact 800 600"
|
||||
"SUPER SHIFT, V, pin"
|
||||
"SUPER, M, fullscreen, 1" # Maximise window
|
||||
"SUPER SHIFT, M, fullscreen, 0" # Actual fullscreen
|
||||
"SUPER, Z, exec, ${config.services.mako.package}/bin/makoctl restore"
|
||||
"SUPER SHIFT, Z, exec, exec ${config.services.mako.package}/bin/makoctl dismiss -a"
|
||||
"SUPER, F1, exec, ${config.programs.hyprlock.package}/bin/hyprlock"
|
||||
# "SUPER, F1, exec, ${config.programs.swaylock.package}/bin/swaylock --screenshots --clock --indicator --grace-no-mouse"
|
||||
"SUPER, Q, killactive,"
|
||||
"SUPER, V, togglefloating"
|
||||
# "SUPER SHIFT, V, setfloating" ## TODO setfloating exists
|
||||
# in newer version of Hyprland than mine
|
||||
"SUPER SHIFT, V, moveactive, exact 1% 4%"
|
||||
"SUPER SHIFT, V, resizeactive, exact 800 600"
|
||||
"SUPER SHIFT, V, pin"
|
||||
"SUPER, M, fullscreen, 1" # Maximise window
|
||||
"SUPER SHIFT, M, fullscreen, 0" # Actual fullscreen
|
||||
"SUPER, Z, exec, ${config.services.mako.package}/bin/makoctl restore"
|
||||
"SUPER SHIFT, Z, exec, exec ${config.services.mako.package}/bin/makoctl dismiss -a"
|
||||
|
||||
# Common program shortcuts
|
||||
"SUPER, D, exec, ${config.programs.fuzzel.package}/bin/fuzzel"
|
||||
"SUPER, C, exec, ${config.programs.alacritty.package}/bin/alacritty"
|
||||
"SUPER, E, exec, ${config.programs.emacs.finalPackage}/bin/emacs"
|
||||
"SUPER, W, exec, ${config.programs.firefox.finalPackage}/bin/firefox"
|
||||
"SUPER, F, exec, thunar"
|
||||
# Common program shortcuts
|
||||
"SUPER, Space, exec, ${config.programs.fuzzel.package}/bin/fuzzel"
|
||||
"SUPER, Return, exec, ${config.programs.alacritty.package}/bin/alacritty"
|
||||
"SUPER SHIFT, Return, exec, ${config.programs.emacs.finalPackage}/bin/emacsclient -c"
|
||||
"SUPER, W, exec, ${config.programs.firefox.finalPackage}/bin/firefox"
|
||||
"SUPER, F, exec, ${pkgs.gnome.nautilus}/bin/nautilus"
|
||||
|
||||
# Misc useful binds
|
||||
",Print,exec,${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.swappy}/bin/swappy -f -"
|
||||
# ",XF86Calculator,exec,pkill rofi || ${config.programs.rofi.finalPackage}/bin/rofi -show calc"
|
||||
# Terminal utilities
|
||||
"SUPER, S, exec, ${
|
||||
withTerm {
|
||||
progname = "${config.programs.bottom.package}/bin/btm";
|
||||
args = btm_args;
|
||||
}
|
||||
}"
|
||||
"SUPER SHIFT, S, exec, ${
|
||||
withTerm {
|
||||
progname = "${config.programs.bottom.package}/bin/btm";
|
||||
args = btm_args + " --basic";
|
||||
}
|
||||
}"
|
||||
"SUPER, C, exec, ${withTerm { progname = "${config.programs.cava.package}/bin/cava"; }}"
|
||||
|
||||
# Movement binds
|
||||
"SUPER, H, movefocus, l"
|
||||
"SUPER, L, movefocus, r"
|
||||
"SUPER, K, movefocus, u"
|
||||
"SUPER, J, movefocus, d"
|
||||
"SUPER SHIFT, H, movewindow, l"
|
||||
"SUPER SHIFT, L, movewindow, r"
|
||||
"SUPER SHIFT, K, movewindow, u"
|
||||
"SUPER SHIFT, J, movewindow, d"
|
||||
# Misc useful binds
|
||||
",Print,exec,${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.swappy}/bin/swappy -f -"
|
||||
# ",XF86Calculator,exec,pkill rofi || ${config.programs.rofi.finalPackage}/bin/rofi -show calc"
|
||||
|
||||
# Special workspaces
|
||||
"SUPER, comma, workspace, m-1"
|
||||
"SUPER SHIFT, comma, movetoworkspace, r-1"
|
||||
"SUPER, period, workspace, m+1"
|
||||
"SUPER SHIFT, period, movetoworkspace, r+1"
|
||||
"SUPER, N, workspace, empty"
|
||||
"SUPER SHIFT, N, movetoworkspace, empty"
|
||||
"SUPER, minus, togglespecialworkspace"
|
||||
"SUPER SHIFT, minus, movetoworkspace, special"
|
||||
"SUPER, bracketright, focusmonitor, +1"
|
||||
"SUPER SHIFT, bracketright, movecurrentworkspacetomonitor, +1"
|
||||
"SUPER, bracketleft, focusmonitor, -1"
|
||||
"SUPER SHIFT, bracketleft, movecurrentworkspacetomonitor, -1"
|
||||
"SUPER, O, focusurgentorlast"
|
||||
];
|
||||
# Movement binds
|
||||
"SUPER, H, movefocus, l"
|
||||
"SUPER, L, movefocus, r"
|
||||
"SUPER, K, movefocus, u"
|
||||
"SUPER, J, movefocus, d"
|
||||
"SUPER SHIFT, H, movewindow, l"
|
||||
"SUPER SHIFT, L, movewindow, r"
|
||||
"SUPER SHIFT, K, movewindow, u"
|
||||
"SUPER SHIFT, J, movewindow, d"
|
||||
|
||||
# Special workspaces
|
||||
"SUPER, comma, workspace, m-1"
|
||||
"SUPER SHIFT, comma, movetoworkspace, r-1"
|
||||
"SUPER, period, workspace, m+1"
|
||||
"SUPER SHIFT, period, movetoworkspace, r+1"
|
||||
"SUPER, N, workspace, empty"
|
||||
"SUPER SHIFT, N, movetoworkspace, empty"
|
||||
"SUPER, minus, togglespecialworkspace"
|
||||
"SUPER SHIFT, minus, movetoworkspace, special"
|
||||
"SUPER, bracketright, focusmonitor, +1"
|
||||
"SUPER SHIFT, bracketright, movecurrentworkspacetomonitor, +1"
|
||||
"SUPER, bracketleft, focusmonitor, -1"
|
||||
"SUPER SHIFT, bracketleft, movecurrentworkspacetomonitor, -1"
|
||||
"SUPER, O, focusurgentorlast"
|
||||
]
|
||||
);
|
||||
bindl = [
|
||||
# Sound
|
||||
",XF86AudioMute,exec,${config.services.avizo.package}/bin/volumectl %"
|
||||
|
@ -407,5 +433,9 @@
|
|||
];
|
||||
};
|
||||
};
|
||||
xdg.configFile."hypr/hyprpaper.conf".text = ''
|
||||
preload = ${config.stylix.image}
|
||||
wallpaper = ,${config.stylix.image}
|
||||
'';
|
||||
|
||||
}
|
||||
|
|
|
@ -10,8 +10,8 @@
|
|||
maxVisible = 10;
|
||||
icons = true;
|
||||
iconPath = with config.gtk.iconTheme; "${package}/share/icons/${name}";
|
||||
borderRadius = 10;
|
||||
borderSize = 2;
|
||||
borderRadius = 5;
|
||||
borderSize = 1;
|
||||
borderColor = lib.mkForce config.lib.stylix.scheme.withHashtag.base0E;
|
||||
defaultTimeout = (builtins.mul 5 1000); # 5s timeout
|
||||
};
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
{
|
||||
home.packages = [
|
||||
(pkgs.writeShellScriptBin "ukaea-vpn-connect" ''
|
||||
sudo ${pkgs.openfortivpn}/bin/openfortivpn --config=${./ukaea-vpn.conf}
|
||||
sudo ${pkgs.openfortivpn}/bin/openfortivpn -c ${./ukaea-vpn.conf} -p $(${pkgs.pass}/bin/pass show work/microsoftonline.com | head -n1)
|
||||
'')
|
||||
(pkgs.writeShellScriptBin "jetdata-vpn-connect" ''
|
||||
sudo ${pkgs.openfortivpn}/bin/openfortivpn --config=${./jetdata-vpn.conf}
|
||||
sudo ${pkgs.openfortivpn}/bin/openfortivpn -c ${./jetdata-vpn.conf} -p $(${pkgs.pass}/bin/pass show work/microsoftonline.com | head -n1)
|
||||
'')
|
||||
];
|
||||
}
|
||||
|
|
360
system/home/plasma.nix
Normal file
|
@ -0,0 +1,360 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
inputs,
|
||||
osConfig,
|
||||
...
|
||||
}:
|
||||
{
|
||||
stylix.targets.kde.enable = false;
|
||||
imports = [ inputs.plasma-manager.homeManagerModules.plasma-manager ];
|
||||
home.packages = with pkgs; [
|
||||
protonmail-bridge-gui
|
||||
libreoffice-qt-fresh
|
||||
rc2nix
|
||||
wl-clipboard
|
||||
];
|
||||
services.gpg-agent.pinentryPackage = pkgs.pinentry-qt;
|
||||
programs.plasma = {
|
||||
enable = true;
|
||||
overrideConfig = true;
|
||||
|
||||
workspace = {
|
||||
iconTheme = config.gtk.iconTheme.name;
|
||||
cursor = {
|
||||
inherit (config.home.pointerCursor) size;
|
||||
theme = config.home.pointerCursor.name;
|
||||
};
|
||||
wallpaper = config.stylix.image;
|
||||
};
|
||||
|
||||
fonts =
|
||||
let
|
||||
general = {
|
||||
family = config.stylix.fonts.sansSerif.name;
|
||||
pointSize = 12;
|
||||
};
|
||||
small = {
|
||||
inherit (general) family;
|
||||
pointSize = general.pointSize - 2;
|
||||
};
|
||||
fixedWidth = {
|
||||
family = config.stylix.fonts.monospace.name;
|
||||
pointSize = 12;
|
||||
};
|
||||
in
|
||||
{
|
||||
inherit general small fixedWidth;
|
||||
menu = general;
|
||||
toolbar = general;
|
||||
windowTitle = small;
|
||||
};
|
||||
|
||||
hotkeys.commands = {
|
||||
"launch-alacritty" = {
|
||||
name = "Launch Alacritty terminal emulator";
|
||||
key = "Ctrl+Alt+T";
|
||||
command = "alacritty";
|
||||
};
|
||||
"launch-emacs" = {
|
||||
name = "Launch Emacs Client Window";
|
||||
key = "Meta+Alt+X";
|
||||
command = "emacsclient -c";
|
||||
};
|
||||
};
|
||||
|
||||
panels = [
|
||||
{
|
||||
height = 32;
|
||||
lengthMode = "fill";
|
||||
location = "bottom";
|
||||
alignment = "center";
|
||||
hiding = "normalpanel";
|
||||
floating = true;
|
||||
screen = "all";
|
||||
widgets = [
|
||||
{
|
||||
name = "org.kde.plasma.kicker";
|
||||
config.General = {
|
||||
icon = "nix-snowflake";
|
||||
appNameFormat = 0;
|
||||
limitDepth = true;
|
||||
alphaSort = true;
|
||||
recentOrdering = 0;
|
||||
showRecentApps = true;
|
||||
showRecentDocs = true;
|
||||
showIconsRootLevel = true;
|
||||
};
|
||||
}
|
||||
"org.kde.plasma.marginsseparator"
|
||||
{
|
||||
name = "org.kde.plasma.pager";
|
||||
config.General = {
|
||||
showWindowIcons = "true";
|
||||
showOnlyCurrentScreen = "false";
|
||||
wrapPage = "true";
|
||||
};
|
||||
}
|
||||
"org.kde.plasma.panelspacer"
|
||||
{
|
||||
name = "org.kde.plasma.icontasks";
|
||||
config.General = {
|
||||
maxStripes = "1";
|
||||
showToolTips = "true";
|
||||
launchers = [
|
||||
"preferred://filemanager"
|
||||
"preferred://browser"
|
||||
"applications:emacs.desktop"
|
||||
"applications:Alacritty.desktop"
|
||||
"applications:writer.desktop"
|
||||
"applications:calc.desktop"
|
||||
"applications:impress.desktop"
|
||||
"applications:org.kde.okular.desktop"
|
||||
"applications:org.kde.elisa.desktop"
|
||||
"applications:org.kde.plasma-systemmonitor.desktop"
|
||||
"applications:systemsettings.desktop"
|
||||
];
|
||||
};
|
||||
}
|
||||
"org.kde.plasma.panelspacer"
|
||||
"org.kde.plasma.marginsseparator"
|
||||
"org.kde.plasma.keyboardindicator"
|
||||
"org.kde.plasma.cameraindicator"
|
||||
{
|
||||
systemTray = {
|
||||
icons = {
|
||||
spacing = "small";
|
||||
scaleToFit = false;
|
||||
};
|
||||
};
|
||||
}
|
||||
{
|
||||
digitalClock = {
|
||||
date = {
|
||||
enable = true;
|
||||
format = "isoDate";
|
||||
position = "besideTime";
|
||||
};
|
||||
time = {
|
||||
format = "24h";
|
||||
showSeconds = "onlyInTooltip";
|
||||
};
|
||||
calendar.showWeekNumbers = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "org.kde.plasma.userswitcher";
|
||||
config.General = {
|
||||
showFace = "true";
|
||||
showName = "false";
|
||||
showFullName = "true";
|
||||
showTechnicalInfo = "true";
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
|
||||
shortcuts = {
|
||||
ksmserver = {
|
||||
"Lock Session" = [
|
||||
"Screensaver"
|
||||
"Meta+Alt+L"
|
||||
];
|
||||
};
|
||||
kwin = {
|
||||
"Walk Through Windows of Current Application" = "Alt+`";
|
||||
"Walk Through Windows of Current Application (Reverse)" = "Alt+¬";
|
||||
"ToggleMouseClick" = "Meta+*";
|
||||
"Expose" = "Meta+,";
|
||||
"Switch Window Down" = "Meta+J";
|
||||
"Switch Window Left" = "Meta+H";
|
||||
"Switch Window Right" = "Meta+L";
|
||||
"Switch Window Up" = "Meta+K";
|
||||
"Invert" = "Meta+Ctrl+I";
|
||||
"InvertWindow" = "Meta+Ctrl+U";
|
||||
"Invert Screen Colors" = [ ];
|
||||
};
|
||||
"services/org.kde.konsole.desktop"."_launch" = [ ];
|
||||
"services/org.kde.krunner.desktop"."_launch" = [
|
||||
"Meta+Space"
|
||||
"Search"
|
||||
"Alt+F2"
|
||||
];
|
||||
};
|
||||
|
||||
kwin = {
|
||||
virtualDesktops = {
|
||||
rows = 1;
|
||||
number = 4;
|
||||
};
|
||||
effects = {
|
||||
translucency.enable = true;
|
||||
blur.enable = true;
|
||||
cube.enable = true;
|
||||
dimAdminMode.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
powerdevil =
|
||||
let
|
||||
powerButtonAction = "turnOffScreen";
|
||||
whenSleepingEnter = "standbyThenHibernate";
|
||||
whenLaptopLidClosed = "sleep";
|
||||
in
|
||||
{
|
||||
AC = {
|
||||
inherit powerButtonAction whenSleepingEnter whenLaptopLidClosed;
|
||||
autoSuspend = {
|
||||
action = "sleep";
|
||||
idleTimeout = 7200;
|
||||
};
|
||||
dimDisplay = {
|
||||
enable = true;
|
||||
# idleTimeOut = 300;
|
||||
};
|
||||
turnOffDisplay = {
|
||||
idleTimeout = 1800;
|
||||
idleTimeoutWhenLocked = 120;
|
||||
};
|
||||
};
|
||||
battery = {
|
||||
inherit powerButtonAction whenSleepingEnter whenLaptopLidClosed;
|
||||
autoSuspend = {
|
||||
action = "sleep";
|
||||
idleTimeout = 900;
|
||||
};
|
||||
dimDisplay = {
|
||||
enable = true;
|
||||
# idleTimeOut = 120;
|
||||
};
|
||||
turnOffDisplay = {
|
||||
idleTimeout = 300;
|
||||
idleTimeoutWhenLocked = 60;
|
||||
};
|
||||
};
|
||||
lowBattery = {
|
||||
inherit powerButtonAction whenSleepingEnter whenLaptopLidClosed;
|
||||
autoSuspend = {
|
||||
action = "hibernate";
|
||||
idleTimeout = 300;
|
||||
};
|
||||
dimDisplay = {
|
||||
enable = true;
|
||||
# idleTimeOut = 60;
|
||||
};
|
||||
turnOffDisplay = {
|
||||
idleTimeout = 120;
|
||||
idleTimeoutWhenLocked = "immediately";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
configFile = {
|
||||
baloofilerc."Basic Settings"."Indexing-Enabled" = false;
|
||||
kwalletrc."org.freedesktop.secrets".apiEnabled = true;
|
||||
kcminputrc.Keyboard.NumLock = 1;
|
||||
plasmanotifyrc = {
|
||||
Notifications = {
|
||||
NormalAlwaysOnTop = true;
|
||||
};
|
||||
};
|
||||
krunnerrc = {
|
||||
General = {
|
||||
ActivateWhenTypingOnDesktop = false;
|
||||
FreeFloating = true;
|
||||
};
|
||||
};
|
||||
kscreenlockerrc = {
|
||||
Daemon.Timeout = 15;
|
||||
Greeter.WallpaperPlugin = "org.kde.potd";
|
||||
};
|
||||
klipperrc = {
|
||||
General = {
|
||||
SyncClipboards = true;
|
||||
MaxClipItems = 5;
|
||||
IgnoreImages = false;
|
||||
KeepClipboardContents = false;
|
||||
};
|
||||
};
|
||||
kdeglobals = {
|
||||
General =
|
||||
let
|
||||
AccentColor =
|
||||
let
|
||||
r = config.lib.stylix.scheme."base0E-rgb-r";
|
||||
g = config.lib.stylix.scheme."base0E-rgb-g";
|
||||
b = config.lib.stylix.scheme."base0E-rgb-b";
|
||||
in
|
||||
"${r}, ${g}, ${b}";
|
||||
in
|
||||
{
|
||||
inherit AccentColor;
|
||||
LastUsedCustomAccentColor = AccentColor;
|
||||
TerminalApplication = "alacritty";
|
||||
TerminalService = "Alacritty.desktop";
|
||||
};
|
||||
WM = {
|
||||
# TODO convert to base16 colours at some point
|
||||
activeBackground = "227,229,231";
|
||||
activeBlend = "227,229,231";
|
||||
activeForeground = "35,38,41";
|
||||
inactiveBackground = "239,240,241";
|
||||
inactiveBlend = "239,240,241";
|
||||
inactiveForeground = "112,125,138";
|
||||
};
|
||||
};
|
||||
breezerc = {
|
||||
Common = {
|
||||
OutlineClassButton = true;
|
||||
OutlineCloseButtone = true;
|
||||
ShadowSize = "ShadowVeryLarge";
|
||||
ShadowStrength = "128";
|
||||
};
|
||||
Style = {
|
||||
MenuOpacity = "100";
|
||||
};
|
||||
};
|
||||
dolphinrc = {
|
||||
ContentDisplay = {
|
||||
UsePermissionsFormat = "CombinedFormat";
|
||||
};
|
||||
General = {
|
||||
BrowseThroughArchives = true;
|
||||
OpenNewTabAfterLastTab = true;
|
||||
RememberOpenedTabs = false;
|
||||
};
|
||||
};
|
||||
kwinrc = {
|
||||
Plugins = {
|
||||
frozenappEnabled = false;
|
||||
mouseclickEnabled = true;
|
||||
shakecursorEnabled = false;
|
||||
invertEnabled = true;
|
||||
};
|
||||
Windows = {
|
||||
FocusPolicy = "FocusFollowsMouse";
|
||||
RollOverDesktops = true;
|
||||
};
|
||||
NightColor = {
|
||||
Active = true;
|
||||
Mode = "Location";
|
||||
LatitudeFixed = "${osConfig.location.latitude}";
|
||||
LongitudeFixed = "${osConfig.location.longitude}";
|
||||
};
|
||||
"Effect-translucency" = {
|
||||
Inactive = 100;
|
||||
MoveResize = 100;
|
||||
Dialogs = 100;
|
||||
ComboboxPopups = 100;
|
||||
Menus = 100;
|
||||
};
|
||||
"org.kde.kdecoration2" = {
|
||||
BorderSize = "None";
|
||||
BorderSizeAuto = "false";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
xdg.configFile."autostart/proton-bridge-gui.desktop".source = "${pkgs.protonmail-bridge-gui}/share/applications/proton-bridge-gui.desktop";
|
||||
}
|
|
@ -1,46 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages =
|
||||
let
|
||||
pythonEnv = (
|
||||
pkgs.python312.withPackages (
|
||||
ps: with ps; [
|
||||
ipython
|
||||
python-lsp-server
|
||||
pyflakes
|
||||
isort
|
||||
numpy
|
||||
scipy
|
||||
astropy
|
||||
xarray
|
||||
netcdf4
|
||||
matplotlib
|
||||
]
|
||||
)
|
||||
);
|
||||
luaEnv = (pkgs.luajit.withPackages (ps: [ (ps.callPackage ./luarocks/scilua.nix { }) ]));
|
||||
in
|
||||
with pkgs;
|
||||
[
|
||||
## Language Environments
|
||||
pythonEnv
|
||||
luaEnv
|
||||
|
||||
## Linters
|
||||
shellcheck
|
||||
ruff
|
||||
|
||||
## Formatters
|
||||
nixfmt-rfc-style
|
||||
shfmt
|
||||
stylua
|
||||
nodePackages.prettier
|
||||
|
||||
## Language servers
|
||||
nixd
|
||||
lua-language-server
|
||||
rust-analyzer
|
||||
];
|
||||
home.file.".ipython/profile_default/ipython_config.json".source = ./ipython_config.json;
|
||||
xdg.configFile."ruff/pyproject.toml".source = ./ruff.toml;
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
{
|
||||
"Application": { "log_datefmt": "%Y-%m-%d %H:%M:%S" },
|
||||
"InteractiveShell": {
|
||||
"color_info": true
|
||||
},
|
||||
"InteractiveShellApp": {
|
||||
"exec_PYTHONSTARTUP": false,
|
||||
"exec_lines": ["%load_ext autoreload", "%autoreload 2 --print"]
|
||||
},
|
||||
"TerminalInteractiveShell": {
|
||||
"editing_mode": "emacs",
|
||||
"mouse_support": false,
|
||||
"true_color": true
|
||||
}
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
{
|
||||
pkgs ? import <nixpkgs> { },
|
||||
python3 ? pkgs.python3Full,
|
||||
extraPackages ? [ ],
|
||||
extraLibs ? [ ],
|
||||
}:
|
||||
let
|
||||
inherit (pkgs) lib;
|
||||
ldlibs = lib.makeLibraryPath (
|
||||
(with pkgs; [
|
||||
stdenv.cc.cc
|
||||
glib
|
||||
glibc
|
||||
zlib
|
||||
zstd
|
||||
])
|
||||
++ extraLibs
|
||||
);
|
||||
pythonWrapped = pkgs.symlinkJoin {
|
||||
name = "python";
|
||||
paths = [ python3 ];
|
||||
buildInputs = [ pkgs.makeWrapper ];
|
||||
postBuild = ''
|
||||
for file in $out/bin/*; do wrapProgram "$file" --prefix LD_LIBRARY_PATH : "${ldlibs}"; done
|
||||
'';
|
||||
};
|
||||
in
|
||||
pkgs.mkShellNoCC {
|
||||
packages = [
|
||||
pythonWrapped
|
||||
pkgs.uv
|
||||
] ++ extraPackages;
|
||||
shellHook = ''
|
||||
[ ! -d .venv ] && ${pythonWrapped}/bin/python3 -m venv .venv
|
||||
[ -f .venv/bin/activate ] && source .venv/bin/activate
|
||||
'';
|
||||
}
|
|
@ -2,11 +2,10 @@
|
|||
{
|
||||
home.packages = [
|
||||
(pkgs.writeShellScriptBin "sync-git" (builtins.readFile ./shell/sync-git.sh))
|
||||
(pkgs.writeShellScriptBin "sync-emacs" (builtins.readFile ./shell/sync-emacs.sh))
|
||||
(pkgs.writeShellScriptBin "ensure-pass" (builtins.readFile ./shell/ensure-pass.sh))
|
||||
(pkgs.writeShellScriptBin "clean-config" (builtins.readFile ./shell/clean-config.sh))
|
||||
(pkgs.writeShellScriptBin "rsync-local-config" (builtins.readFile ./shell/rsync-local-config.sh))
|
||||
(pkgs.writeShellScriptBin "xdg-query-program" (builtins.readFile ./shell/xdg-query-program.sh))
|
||||
(pkgs.writeShellScriptBin "animate-wallpaper" (builtins.readFile ./shell/animate-wallpaper.sh))
|
||||
(pkgs.writeShellScriptBin "mount-onedrive" (builtins.readFile ./shell/mount-onedrive.sh))
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
WALLPAPER_FILE="$HOME/.wallpaper.gif"
|
||||
|
||||
if [ ! -f "$WALLPAPER_FILE" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
systemctl --user start swww-daemon.service &&
|
||||
sleep 5 &&
|
||||
swww img "$WALLPAPER_FILE" &&
|
||||
systemctl --user stop hyprpaper.service
|
|
@ -1,2 +1,2 @@
|
|||
shopt -s extglob
|
||||
rm -rf ~/.config/!(dconf|protonmail|Signal|whatsapp-for-linux)
|
||||
rm -rf ~/.config/!(dconf|kdeconnect|protonmail|Signal|WebCord)
|
||||
|
|
|
@ -1,32 +1,38 @@
|
|||
# Email
|
||||
EMAIL="e.litherlandsmith@proton.me"
|
||||
secret-tool lookup email "$EMAIL" >/dev/null || (
|
||||
echo "Insert pass from protonmail-bridge"
|
||||
secret-tool store --label="Proton Mail mbsync" email "$EMAIL"
|
||||
echo "Insert pass from protonmail-bridge"
|
||||
secret-tool store --label="Proton Mail mbsync" email "$EMAIL"
|
||||
)
|
||||
|
||||
EMAIL="e.litherlandsmith@icloud.com"
|
||||
secret-tool lookup clear "$EMAIL"
|
||||
pass show identity/apple.com/mbsync | head -n1 | secret-tool store --label="iCloud mbsync" email "$EMAIL"
|
||||
secret-tool lookup email "$EMAIL" >/dev/null || (
|
||||
pass show identity/apple.com/mbsync |
|
||||
head -n1 |
|
||||
secret-tool store --label="iCloud mbsync" email "$EMAIL"
|
||||
)
|
||||
|
||||
EMAIL="evie.litherland-smith@ukaea.uk"
|
||||
secret-tool clear email "$EMAIL"
|
||||
pass show work/microsoftonline.com | head -n1 | secret-tool store --label="Outlook mbsync" email "$EMAIL"
|
||||
secret-tool lookup email "$EMAIL" >/dev/null || (
|
||||
pass show work/microsoftonline.com |
|
||||
head -n1 |
|
||||
secret-tool store --label="Outlook mbsync" email "$EMAIL"
|
||||
)
|
||||
|
||||
# Calendar
|
||||
URL="dav.xenia.me.uk"
|
||||
USER="pixelifytica"
|
||||
secret-tool clear url "$URL" user "$USER"
|
||||
pass show "server/xenia.me.uk/$URL" | head -n1 | secret-tool store --label="Personal calendar vdirsyncer" url "$URL" user "$USER"
|
||||
secret-tool lookup url "$URL" user "$USER" >/dev/null || (
|
||||
pass show "server/xenia.me.uk/$URL" |
|
||||
head -n1 |
|
||||
secret-tool store --label="Personal calendar vdirsyncer" url "$URL" user "$USER"
|
||||
)
|
||||
|
||||
# GitHub API token
|
||||
HOST="api.github.com"
|
||||
USER="pixelifytica^forge"
|
||||
secret-tool clear host "$HOST" user "$USER"
|
||||
pass show "api/$HOST" | head -n1 | secret-tool store --label="Forge GitHub Token" host "$HOST" user "$USER"
|
||||
|
||||
# IRC
|
||||
HOST="irc.libera.chat"
|
||||
USER="xenia3"
|
||||
secret-tool clear host "$HOST" user "$USER"
|
||||
pass show "social/$HOST" | head -n1 | secret-tool store --label="IRC libera.chat" host "$HOST" user "$USER"
|
||||
secret-tool lookup host "$HOST" user "$USER" >/dev/null || (
|
||||
pass show "api/$HOST" |
|
||||
head -n1 |
|
||||
secret-tool store --label="Forge GitHub Token" host "$HOST" user "$USER"
|
||||
)
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
ONEDRIVE="$HOME/OneDrive"
|
||||
[ -d "$ONEDRIVE" ] || mkdir -p "$ONEDRIVE"
|
||||
[ -z "$(ls -A "$ONEDRIVE")" ] && rclone --vfs-cache-mode writes mount --daemon OneDrive: "$ONEDRIVE"
|
38
system/home/scripts/shell/rsync-local-config.sh
Normal file → Executable file
|
@ -1,23 +1,23 @@
|
|||
HOSTS=("$@")
|
||||
# Config files
|
||||
for TARGET in ".inputrc" ".config/starship.toml" ".ipython/profile_default/ipython_config.json"; do
|
||||
SOURCE="$HOME/$TARGET"
|
||||
echo "--- $SOURCE ---"
|
||||
TMP_TARGET=/tmp/rsync-local-config
|
||||
TMP_SOURCE=$TMP_TARGET
|
||||
NIX_SED="sed -i 's|/nix/.*/bin/||g'"
|
||||
NIX_REPLACE="$NIX_SED $TMP_TARGET"
|
||||
if [[ -e $SOURCE ]]; then
|
||||
if [[ -d $SOURCE ]]; then
|
||||
SOURCE=$SOURCE/
|
||||
TMP_SOURCE=$TMP_SOURCE/
|
||||
NIX_REPLACE="fd -g '**' $TMP_TARGET -tfile -x $NIX_SED {};"
|
||||
for TARGET in ".inputrc" ".config/starship.toml"; do
|
||||
SOURCE="$HOME/$TARGET"
|
||||
echo "--- $SOURCE ---"
|
||||
TMP_TARGET=/tmp/rsync-local-config
|
||||
TMP_SOURCE=$TMP_TARGET
|
||||
NIX_SED="sed -i 's|/nix/.*/bin/||g'"
|
||||
NIX_REPLACE="$NIX_SED $TMP_TARGET"
|
||||
if [[ -e $SOURCE ]]; then
|
||||
if [[ -d $SOURCE ]]; then
|
||||
SOURCE=$SOURCE/
|
||||
TMP_SOURCE=$TMP_SOURCE/
|
||||
NIX_REPLACE="fd -g '**' $TMP_TARGET -tfile -x $NIX_SED {};"
|
||||
fi
|
||||
rsync -avzL --exclude=".git*" --chmod=Du=rwx,Dg=rx,Do=rx,Fu=rw,Fg=r,Fo=r "$SOURCE" $TMP_TARGET
|
||||
sh -c "$NIX_REPLACE"
|
||||
for HOST in "${HOSTS[@]}"; do
|
||||
rsync -avzL --delete --exclude=".git*" $TMP_SOURCE "$HOST:$TARGET"
|
||||
done
|
||||
rm -rf $TMP_SOURCE
|
||||
fi
|
||||
rsync -avzL --exclude=".git*" --chmod=Du=rwx,Dg=rx,Do=rx,Fu=rw,Fg=r,Fo=r "$SOURCE" $TMP_TARGET
|
||||
sh -c "$NIX_REPLACE"
|
||||
for HOST in "${HOSTS[@]}"; do
|
||||
rsync -avzL --delete --exclude=".git*" $TMP_SOURCE "$HOST:$TARGET"
|
||||
done
|
||||
rm -rf $TMP_SOURCE
|
||||
fi
|
||||
done
|
||||
|
|
14
system/home/scripts/shell/sync-emacs.sh
Executable file
|
@ -0,0 +1,14 @@
|
|||
# Clone ~/.config/emacs/ if it doesn't exist
|
||||
EMACS_DIR="$HOME/.emacs.d"
|
||||
if [ ! -d "$EMACS_DIR" ]; then
|
||||
git clone "https://git.xenia.me.uk/pixelifytica/emacs.git" "$EMACS_DIR"
|
||||
fi
|
||||
(
|
||||
cd "$EMACS_DIR" || exit 1
|
||||
# Pull changes by fast-forwarding only
|
||||
git pull --ff --ff-only
|
||||
# Update submodules for local packages
|
||||
git submodule update --init --recursive
|
||||
# Install and update extensions
|
||||
make install
|
||||
)
|
58
system/home/scripts/shell/sync-git.sh
Normal file → Executable file
|
@ -1,45 +1,31 @@
|
|||
# Clone ~/.config/emacs/ if it doesn't exist, pull otherwise
|
||||
EMACS_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/emacs"
|
||||
EMACS_URL="https://git.xenia.me.uk/pixelifytica/emacs.git"
|
||||
if [ -d "$EMACS_DIR" ]; then
|
||||
git -C "$EMACS_DIR" remote set-url origin "$EMACS_URL"
|
||||
git -C "$EMACS_DIR" pull --ff --ff-only
|
||||
else
|
||||
git clone "$EMACS_URL" "$EMACS_DIR"
|
||||
fi
|
||||
|
||||
# Cleanup legacy Emacs config file/directory
|
||||
[ -f "$HOME/.emacs" ] && rm "$HOME/.emacs"
|
||||
[ -d "$HOME/.emacs.d" ] && rm -r "$HOME/.emacs.d"
|
||||
|
||||
# Sync common directories, setting url to ensure it's up-to-date first
|
||||
SYNC_DIRS=(
|
||||
"$HOME/.password-store/"
|
||||
"$HOME/Documents/org/"
|
||||
"$HOME/Documents/notebooks/"
|
||||
"$HOME/.password-store/"
|
||||
"$HOME/Documents/org/"
|
||||
"$HOME/Documents/library/"
|
||||
)
|
||||
SYNC_URLS=(
|
||||
"https://git.xenia.me.uk/pixelifytica/pass.git"
|
||||
"https://git.xenia.me.uk/pixelifytica/org.git"
|
||||
"git@git.ccfe.ac.uk:elitherl/notebooks.git"
|
||||
"https://git.xenia.me.uk/pixelifytica/pass.git"
|
||||
"https://git.xenia.me.uk/pixelifytica/org.git"
|
||||
"https://git.xenia.me.uk/pixelifytica/library.git"
|
||||
)
|
||||
|
||||
for i in "${!SYNC_DIRS[@]}"; do
|
||||
DIRECTORY="${SYNC_DIRS[$i]}"
|
||||
URL="${SYNC_URLS[$i]}"
|
||||
echo "--- sync: $DIRECTORY ---"
|
||||
if [ ! -d "$DIRECTORY" ]; then
|
||||
git clone "$URL" "$DIRECTORY"
|
||||
fi
|
||||
(
|
||||
cd "$DIRECTORY" || exit
|
||||
git remote set-url origin "$URL"
|
||||
if [ "$(git branch --show-current)" = "main" ]; then
|
||||
git branch --set-upstream-to=origin/main main
|
||||
DIRECTORY="${SYNC_DIRS[$i]}"
|
||||
URL="${SYNC_URLS[$i]}"
|
||||
echo "--- sync: $DIRECTORY ---"
|
||||
if [ ! -d "$DIRECTORY" ]; then
|
||||
git clone "$URL" "$DIRECTORY"
|
||||
fi
|
||||
git pull --ff --ff-only
|
||||
git submodule update --remote --recursive
|
||||
git-sync -ns
|
||||
git status --porcelain
|
||||
)
|
||||
(
|
||||
cd "$DIRECTORY" || exit
|
||||
git remote set-url origin "$URL"
|
||||
if [ "$(git branch --show-current)" = "main" ]; then
|
||||
git branch --set-upstream-to=origin/main main
|
||||
fi
|
||||
git pull --ff --ff-only
|
||||
git submodule update --remote --recursive
|
||||
git-sync -ns
|
||||
git status --porcelain
|
||||
)
|
||||
done
|
||||
|
|
0
system/home/scripts/shell/xdg-query-program.sh
Normal file → Executable file
31
system/home/shell/bottom.nix
Normal file
|
@ -0,0 +1,31 @@
|
|||
{ config, ... }:
|
||||
{
|
||||
programs.bottom = {
|
||||
enable = true;
|
||||
settings = {
|
||||
flags = {
|
||||
group_processes = true;
|
||||
temperature_type = "celsius";
|
||||
battery = true;
|
||||
enable_gpu = true;
|
||||
enable_cache_memory = true;
|
||||
};
|
||||
colors =
|
||||
let
|
||||
scheme = config.lib.stylix.scheme.withHashtag;
|
||||
rainbow = with scheme; [
|
||||
red
|
||||
yellow
|
||||
green
|
||||
cyan
|
||||
blue
|
||||
magenta
|
||||
];
|
||||
in
|
||||
{
|
||||
cpu_core_colors = rainbow;
|
||||
gpu_core_colors = rainbow;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
18
system/home/shell/cava.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{ config, ... }:
|
||||
{
|
||||
programs.cava = {
|
||||
enable = true;
|
||||
settings = {
|
||||
color = with config.lib.stylix.colors.withHashtag; {
|
||||
gradient = 1;
|
||||
gradient_count = 6;
|
||||
gradient_color_1 = "'${red}'";
|
||||
gradient_color_2 = "'${yellow}'";
|
||||
gradient_color_3 = "'${green}'";
|
||||
gradient_color_4 = "'${cyan}'";
|
||||
gradient_color_5 = "'${blue}'";
|
||||
gradient_color_6 = "'${magenta}'";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
$env.config.show_banner = false
|
|
@ -1,32 +1,72 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
./git.nix
|
||||
./ssh.nix
|
||||
./starship.nix
|
||||
./bottom.nix
|
||||
./cava.nix
|
||||
];
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
asciiquarium-transparent
|
||||
pipes
|
||||
cbonsai
|
||||
];
|
||||
shellAliases = {
|
||||
sync-all = "sync-git; vdirsyncer sync; mbsync -a";
|
||||
sync-and-shutdown = "sync-all && shutdown now";
|
||||
};
|
||||
home.shellAliases = {
|
||||
sync-all = "sync-git; vdirsyncer sync; mbsync -a";
|
||||
sync-and-shutdown = "sync-all && shutdown now";
|
||||
protonup = "sudo wg-quick up protonvpn && sudo wg";
|
||||
protondown = "sudo wg-quick down protonvpn";
|
||||
};
|
||||
programs = {
|
||||
# Shells
|
||||
bash.enable = true;
|
||||
nushell = {
|
||||
carapace.enable = true;
|
||||
fd.enable = true;
|
||||
jq.enable = true;
|
||||
ripgrep.enable = true;
|
||||
bat = {
|
||||
enable = true;
|
||||
configFile.source = ./config.nu;
|
||||
config.style = "plain,numbers,changes";
|
||||
};
|
||||
direnv = {
|
||||
enable = true;
|
||||
nix-direnv.enable = true;
|
||||
};
|
||||
eza = {
|
||||
enable = true;
|
||||
git = true;
|
||||
icons = true;
|
||||
extraOptions = [ "--octal-permissions" ];
|
||||
};
|
||||
fzf = {
|
||||
enable = true;
|
||||
defaultCommand = "${pkgs.fd}/bin/fd --type f";
|
||||
changeDirWidgetCommand = "${pkgs.fd}/bin/fd --type d";
|
||||
fileWidgetCommand = "${pkgs.fd}/bin/fd --type f";
|
||||
};
|
||||
hyfetch = {
|
||||
enable = true;
|
||||
settings = {
|
||||
preset = "rainbow";
|
||||
mode = "rgb";
|
||||
light_dark = config.stylix.polarity;
|
||||
lightness = 0.4;
|
||||
color_align = {
|
||||
mode = "horizontal";
|
||||
};
|
||||
};
|
||||
};
|
||||
readline = {
|
||||
enable = true;
|
||||
variables = {
|
||||
bell-style = "visible";
|
||||
blink-matching-paren = "On";
|
||||
colored-completion-prefix = "On";
|
||||
colored-stats = "On";
|
||||
completion-ignore-case = "On";
|
||||
completion-map-case = "On";
|
||||
editing-mode = "emacs";
|
||||
expand-tilde = "On";
|
||||
horizontal-scroll-mode = "On";
|
||||
mark-directories = "On";
|
||||
mark-symlinked-directories = "On";
|
||||
visible-stats = "On";
|
||||
};
|
||||
};
|
||||
zsh = {
|
||||
enable = true;
|
||||
|
@ -59,83 +99,5 @@
|
|||
source ${./transient.zsh}
|
||||
'';
|
||||
};
|
||||
# CLI programs and utilities
|
||||
btop.enable = true;
|
||||
carapace.enable = true;
|
||||
fd.enable = true;
|
||||
jq.enable = true;
|
||||
ripgrep.enable = true;
|
||||
bat = {
|
||||
enable = true;
|
||||
config.style = "plain,numbers,changes";
|
||||
};
|
||||
cava = {
|
||||
enable = true;
|
||||
settings = {
|
||||
color = with config.lib.stylix.colors.withHashtag; {
|
||||
gradient = 1;
|
||||
gradient_count = 6;
|
||||
gradient_color_1 = "'${red}'";
|
||||
gradient_color_2 = "'${yellow}'";
|
||||
gradient_color_3 = "'${green}'";
|
||||
gradient_color_4 = "'${cyan}'";
|
||||
gradient_color_5 = "'${blue}'";
|
||||
gradient_color_6 = "'${magenta}'";
|
||||
};
|
||||
};
|
||||
};
|
||||
direnv = {
|
||||
enable = true;
|
||||
nix-direnv.enable = true;
|
||||
};
|
||||
eza = {
|
||||
enable = true;
|
||||
git = true;
|
||||
icons = "auto";
|
||||
extraOptions = [
|
||||
"--header"
|
||||
"--time-style=iso"
|
||||
];
|
||||
};
|
||||
fzf = {
|
||||
enable = true;
|
||||
defaultCommand = "${pkgs.fd}/bin/fd --type f";
|
||||
changeDirWidgetCommand = "${pkgs.fd}/bin/fd --type d";
|
||||
changeDirWidgetOptions = [ "--preview '${pkgs.tree}/bin/tree -C {} | head -200'" ];
|
||||
fileWidgetCommand = "${pkgs.fd}/bin/fd --type f";
|
||||
fileWidgetOptions = [ "--preview '${pkgs.bat}/bin/bat -f {}'" ];
|
||||
colors = {
|
||||
bg = lib.mkForce "-1";
|
||||
"bg+" = lib.mkForce "-1";
|
||||
};
|
||||
};
|
||||
hyfetch = {
|
||||
enable = true;
|
||||
settings = rec {
|
||||
preset = if light_dark == "dark" then "transgender" else "rainbow";
|
||||
mode = "rgb";
|
||||
light_dark = config.lib.stylix.scheme.variant;
|
||||
lightness = 0.4;
|
||||
color_align = {
|
||||
mode = "horizontal";
|
||||
};
|
||||
};
|
||||
};
|
||||
readline = {
|
||||
enable = true;
|
||||
variables = {
|
||||
bell-style = "visible";
|
||||
blink-matching-paren = "On";
|
||||
colored-completion-prefix = "On";
|
||||
colored-stats = "On";
|
||||
completion-ignore-case = "On";
|
||||
completion-map-case = "On";
|
||||
editing-mode = "emacs";
|
||||
expand-tilde = "On";
|
||||
mark-directories = "On";
|
||||
mark-symlinked-directories = "On";
|
||||
visible-stats = "On";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
forwardAgent = true;
|
||||
compression = true;
|
||||
serverAliveInterval = 15;
|
||||
serverAliveCountMax = 5;
|
||||
serverAliveCountMax = 3;
|
||||
controlMaster = "auto";
|
||||
controlPersist = "10s";
|
||||
extraConfig = ''
|
||||
|
@ -21,7 +21,11 @@
|
|||
"git*".user = "git";
|
||||
"legion" = {
|
||||
user = "pixelifytica";
|
||||
hostname = "192.168.1.225";
|
||||
hostname = "192.168.0.31";
|
||||
};
|
||||
"vanguard" = {
|
||||
user = "pixelifytica";
|
||||
hostname = "192.168.0.90";
|
||||
};
|
||||
"ionos" = {
|
||||
user = "root";
|
||||
|
@ -34,7 +38,7 @@
|
|||
};
|
||||
"heimdall" = {
|
||||
user = "elitherl";
|
||||
hostname = "heimdall003.jet.uk";
|
||||
hostname = "10.40.4.115"; # heimdall115.jetdata.eu
|
||||
compression = true;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -5,11 +5,18 @@
|
|||
enableTransience = true;
|
||||
settings = {
|
||||
add_newline = false;
|
||||
aws.symbol = " ";
|
||||
buf.symbol = " ";
|
||||
c.symbol = " ";
|
||||
character = {
|
||||
success_symbol = "[λ](bold green)";
|
||||
error_symbol = "[λ](bold red)";
|
||||
success_symbol = "[>](bold green)";
|
||||
error_symbol = "[>](bold red)";
|
||||
};
|
||||
command_timeout = 2000;
|
||||
conda.symbol = " ";
|
||||
container.symbol = " ";
|
||||
crystal.symbol = " ";
|
||||
dart.symbol = " ";
|
||||
directory = {
|
||||
read_only = " ";
|
||||
truncation_length = 2;
|
||||
|
@ -17,6 +24,10 @@
|
|||
truncate_to_repo = false;
|
||||
};
|
||||
direnv.disabled = false;
|
||||
docker_context.symbol = " ";
|
||||
elixir.symbol = " ";
|
||||
elm.symbol = " ";
|
||||
fennel.symbol = " ";
|
||||
fossil_branch.symbol = " ";
|
||||
git_branch = {
|
||||
symbol = " ";
|
||||
|
@ -46,20 +57,97 @@
|
|||
untracked = " ";
|
||||
typechanged = " ";
|
||||
};
|
||||
golang.symbol = " ";
|
||||
guix_shell.symbol = " ";
|
||||
haskell.symbol = " ";
|
||||
haxe.symbol = " ";
|
||||
hg_branch.symbol = " ";
|
||||
hostname.ssh_symbol = " ";
|
||||
hostname = {
|
||||
ssh_only = false;
|
||||
ssh_symbol = " ";
|
||||
};
|
||||
java.symbol = " ";
|
||||
jobs.symbol = " ";
|
||||
julia.symbol = " ";
|
||||
kotlin.symbol = " ";
|
||||
line_break.disabled = false;
|
||||
memory_usage.disabled = false;
|
||||
localip.disabled = false;
|
||||
lua.symbol = " ";
|
||||
memory_usage = {
|
||||
disabled = false;
|
||||
symbol = " ";
|
||||
};
|
||||
meson.symbol = " ";
|
||||
nim.symbol = " ";
|
||||
nix_shell.symbol = " ";
|
||||
nodejs.symbol = " ";
|
||||
ocaml.symbol = " ";
|
||||
os = {
|
||||
disabled = false;
|
||||
format = "on [$symbol]($style) ";
|
||||
symbols = {
|
||||
Alpaquita = " ";
|
||||
Alpine = " ";
|
||||
Amazon = " ";
|
||||
Android = " ";
|
||||
Arch = " ";
|
||||
Artix = " ";
|
||||
CentOS = " ";
|
||||
Debian = " ";
|
||||
DragonFly = " ";
|
||||
Emscripten = " ";
|
||||
EndeavourOS = " ";
|
||||
Fedora = " ";
|
||||
FreeBSD = " ";
|
||||
Garuda = " ";
|
||||
Gentoo = " ";
|
||||
HardenedBSD = " ";
|
||||
Illumos = " ";
|
||||
Linux = " ";
|
||||
Mabox = " ";
|
||||
Macos = " ";
|
||||
Manjaro = " ";
|
||||
Mariner = " ";
|
||||
MidnightBSD = " ";
|
||||
Mint = " ";
|
||||
NetBSD = " ";
|
||||
NixOS = " ";
|
||||
OpenBSD = " ";
|
||||
openSUSE = " ";
|
||||
OracleLinux = " ";
|
||||
Pop = " ";
|
||||
Raspbian = " ";
|
||||
Redhat = " ";
|
||||
RedHatEnterprise = " ";
|
||||
Redox = " ";
|
||||
Solus = " ";
|
||||
SUSE = " ";
|
||||
Ubuntu = " ";
|
||||
Unknown = " ";
|
||||
Windows = " ";
|
||||
};
|
||||
};
|
||||
python.python_binary = "python3";
|
||||
package.symbol = " ";
|
||||
perl.symbol = " ";
|
||||
php.symbol = " ";
|
||||
pijul_channel.symbol = " ";
|
||||
python = {
|
||||
python_binary = "python3";
|
||||
symbol = " ";
|
||||
};
|
||||
rlang.symbol = " ";
|
||||
ruby.symbol = " ";
|
||||
rust.symbol = " ";
|
||||
scala.symbol = " ";
|
||||
shell = {
|
||||
disabled = false;
|
||||
format = "using [$indicator]($style) ";
|
||||
nu_indicator = "ν";
|
||||
format = "using [$indicator]($style)";
|
||||
bash_indicator = " ";
|
||||
zsh_indicator = " ";
|
||||
fish_indicator = " ";
|
||||
powershell_indicator = " ";
|
||||
cmd_indicator = " ";
|
||||
unknown_indicator = " ";
|
||||
};
|
||||
status = {
|
||||
disabled = false;
|
||||
|
@ -72,7 +160,12 @@
|
|||
sigint_symbol = " ";
|
||||
signal_symbol = " ";
|
||||
};
|
||||
sudo.disabled = false;
|
||||
sudo = {
|
||||
disabled = false;
|
||||
symbol = " ";
|
||||
};
|
||||
swift.symbol = " ";
|
||||
zig.symbol = " ";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ zle-line-init() {
|
|||
|
||||
local saved_prompt=$PROMPT
|
||||
local saved_rprompt=$RPROMPT
|
||||
PROMPT='λ '
|
||||
PROMPT=' '
|
||||
RPROMPT=''
|
||||
zle .reset-prompt
|
||||
PROMPT=$saved_prompt
|
||||
|
|
202
system/home/sway.nix
Normal file
|
@ -0,0 +1,202 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
osConfig,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
./waybar.nix
|
||||
./fuzzel.nix
|
||||
./mako.nix
|
||||
];
|
||||
stylix.targets.swaylock.useImage = false; # Using swaylock-effects instead
|
||||
home.packages = with pkgs; [
|
||||
libreoffice-fresh
|
||||
ffmpeg
|
||||
grim
|
||||
slurp
|
||||
swappy
|
||||
wl-clipboard
|
||||
swayimg
|
||||
swaybg
|
||||
(writeShellScriptBin "swaylockfx" ''
|
||||
${swaylock-effects}/bin/swaylock --screenshots --clock --indicator --effect-blur 7x5 --effect-vignette 0.5:0.5
|
||||
'')
|
||||
(writeShellScriptBin "protonmail-setup-bridge" ''
|
||||
pkill -9 -f protonmail-bridge
|
||||
${protonmail-bridge}/bin/protonmail-bridge -c
|
||||
swaymsg exec "${protonmail-bridge}/bin/protonmail-bridge -n"
|
||||
'')
|
||||
];
|
||||
programs = {
|
||||
waybar.systemd.target = "sway-session.target";
|
||||
swaylock = {
|
||||
enable = true;
|
||||
package = pkgs.swaylock-effects;
|
||||
};
|
||||
};
|
||||
services = {
|
||||
kanshi.systemdTarget = "sway-session.target";
|
||||
gpg-agent.pinentryPackage = pkgs.pinentry-gnome3;
|
||||
avizo = {
|
||||
enable = true;
|
||||
settings.default.image-opacity = lib.mkForce "1.0";
|
||||
};
|
||||
kdeconnect = {
|
||||
enable = true;
|
||||
indicator = true;
|
||||
};
|
||||
swayidle = {
|
||||
enable = true;
|
||||
timeouts = [
|
||||
{
|
||||
timeout = 60 * 15; # 15 minutes
|
||||
command = "swaylockfx";
|
||||
}
|
||||
];
|
||||
};
|
||||
udiskie = {
|
||||
enable = true;
|
||||
notify = true;
|
||||
automount = true;
|
||||
tray = "never";
|
||||
};
|
||||
};
|
||||
wayland.windowManager.sway = {
|
||||
enable = true;
|
||||
package = pkgs.swayfx.overrideAttrs (old: {
|
||||
passthru.providedSessions = [ "sway" ];
|
||||
});
|
||||
swaynag.enable = true;
|
||||
systemd.enable = true;
|
||||
xwayland = true;
|
||||
checkConfig = false;
|
||||
config = {
|
||||
input = {
|
||||
"*" = {
|
||||
xkb_layout = osConfig.services.xserver.xkb.layout;
|
||||
};
|
||||
"type:touchpad" = {
|
||||
tap = "enabled";
|
||||
natural_scroll = "enabled";
|
||||
};
|
||||
};
|
||||
seat = {
|
||||
"seat0" = {
|
||||
xcursor_theme = "${config.gtk.cursorTheme.name} ${toString config.gtk.cursorTheme.size}";
|
||||
};
|
||||
};
|
||||
modifier = "Mod4";
|
||||
terminal = "${config.programs.alacritty.package}/bin/alacritty";
|
||||
menu = "${config.programs.fuzzel.package}/bin/fuzzel";
|
||||
workspaceAutoBackAndForth = true;
|
||||
bars = [ ];
|
||||
gaps = {
|
||||
inner = 5;
|
||||
outer = 0;
|
||||
};
|
||||
startup = [
|
||||
{ command = "${pkgs.libsForQt5.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1"; }
|
||||
{ command = "${pkgs.protonmail-bridge}/bin/protonmail-bridge -n"; }
|
||||
{ command = "${pkgs.dex}/bin/dex -a"; }
|
||||
{ command = "${config.services.mako.package}/bin/mako"; }
|
||||
];
|
||||
window = {
|
||||
border = 1;
|
||||
titlebar = false;
|
||||
commands = [
|
||||
{
|
||||
criteria.window_role = "(?:pop-up|bubble|dialog)";
|
||||
command = "floating enable";
|
||||
}
|
||||
{
|
||||
criteria.app_id = "(?:org\.kde\.polkit-kde-authentication-agent-1|Pinentry|pavucontrol|\.blueman-manager-wrapped|nm-connection-editor)";
|
||||
command = "floating enable";
|
||||
}
|
||||
{
|
||||
criteria.class = "(?:[Mm]atplotlib|.*\.py|Idl)";
|
||||
command = "floating enable";
|
||||
}
|
||||
{
|
||||
# Catch-all for file dialog windows
|
||||
criteria.title = "(?:Open|Save) (?:File|Folder|As)";
|
||||
command = "floating enable, resize set width 1030 height 710";
|
||||
}
|
||||
{
|
||||
# Inhibit idle when watching vidoes
|
||||
criteria.app_id = "(?:firefox|mpv)";
|
||||
command = "inhibit_idle fullscreen";
|
||||
}
|
||||
{
|
||||
# Window rules for game sessions.
|
||||
# Note: controllers don't reset idle timer
|
||||
criteria.class = "(?:steam_app|Minecraft).*";
|
||||
command = "floating enable, fullscreen enable, inhibit_idle focus";
|
||||
}
|
||||
];
|
||||
};
|
||||
floating.border = 1;
|
||||
keybindings =
|
||||
let
|
||||
modifier = config.wayland.windowManager.sway.config.modifier;
|
||||
in
|
||||
lib.mkOptionDefault {
|
||||
# Movement
|
||||
"${modifier}+comma" = "workspace prev";
|
||||
"${modifier}+period" = "workspace next";
|
||||
"${modifier}+shift+comma" = "move workspace prev";
|
||||
"${modifier}+shift+period" = "move workspace next";
|
||||
"${modifier}+bracketleft" = "move workspace to output left";
|
||||
"${modifier}+bracketright" = "move workspace to output right";
|
||||
|
||||
# Function keys
|
||||
## Screenshot
|
||||
"Print" = "exec ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.swappy}/bin/swappy -f -";
|
||||
|
||||
## Sound
|
||||
"XF86AudioMute" = "exec ${config.services.avizo.package}/bin/volumectl %";
|
||||
"XF86AudioMicMute" = "exec ${config.services.avizo.package}/bin/volumectl -m %";
|
||||
"XF86AudioRaiseVolume" = "exec ${config.services.avizo.package}/bin/volumectl -u + 5";
|
||||
"XF86AudioLowerVolume" = "exec ${config.services.avizo.package}/bin/volumectl -u - 5";
|
||||
|
||||
## Playback
|
||||
"XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
||||
"XF86AudioStop" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
||||
"XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl previous";
|
||||
"XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl next";
|
||||
|
||||
## Brightness
|
||||
"XF86MonBrightnessUp" = "exec ${config.services.avizo.package}/bin/lightctl + 5";
|
||||
"XF86MonBrightnessDown" = "exec ${config.services.avizo.package}/bin/lightctl - 5";
|
||||
|
||||
# System utilities
|
||||
"Mod4+Mod1+l" = "exec swaylockfx";
|
||||
"${modifier}+z" = "exec ${config.services.mako.package}/bin/makoctl restore";
|
||||
"${modifier}+Shift+z" = "exec ${config.services.mako.package}/bin/makoctl dismiss -a";
|
||||
"${modifier}+Shift+Return" = "exec ${config.programs.emacs.finalPackage}/bin/emacsclient -c";
|
||||
};
|
||||
};
|
||||
extraConfig = ''
|
||||
bindgesture swipe:right workspace prev
|
||||
bindgesture swipe:left workspace next
|
||||
corner_radius 5
|
||||
blur enable
|
||||
blur_xray disable
|
||||
blur_passes 3
|
||||
blur_radius 5
|
||||
shadows enable
|
||||
shadow_blur_radius 5
|
||||
layer_effects "system-menu" blur enable; blur_ignore_transparent enable; shadows enable
|
||||
layer_effects "gtk-layer-shell" blur enable; blur_ignore_transparent enable; shadows enable
|
||||
layer_effects "notifications" blur enable; blur_ignore_transparent enable; shadows enable
|
||||
layer_effects "launcher" blur enable; blur_ignore_transparent enable; shadows enable
|
||||
layer_effects "logout_dialog" blur enable; blur_ignore_transparent enable; shadows enable
|
||||
layer_effects "waybar" blur enable; blur_ignore_transparent enable; shadows enable
|
||||
layer_effects "avizo" blur enable; blur_ignore_transparent enable; shadows enable
|
||||
titlebar_separator enable
|
||||
'';
|
||||
};
|
||||
xdg.configFile."swappy/config".source = ./swappy.conf;
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [ swww ];
|
||||
systemd.user.services.swww-daemon = {
|
||||
Unit = {
|
||||
Description = "SWWW Daemon";
|
||||
Wants = [ "graphical-session.target" ];
|
||||
After = [ "graphical-session.target" ];
|
||||
};
|
||||
Service.ExecStart = "${pkgs.swww}/bin/swww-daemon";
|
||||
};
|
||||
}
|
|
@ -1,45 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
let
|
||||
swwwMorning = "${pkgs.swww}/bin/swww img ${../wallpapers/tropic_island_morning.jpg}";
|
||||
swwwDay = "${pkgs.swww}/bin/swww img ${../wallpapers/tropic_island_day.jpg}";
|
||||
swwwEvening = "${pkgs.swww}/bin/swww img ${../wallpapers/tropic_island_evening.jpg}";
|
||||
swwwNight = "${pkgs.swww}/bin/swww img ${../wallpapers/tropic_island_night.jpg}";
|
||||
dynamicWallpaper = pkgs.writeShellScriptBin "dynamic-wallpaper" ''
|
||||
swww query || exit 1 # Check SWWW daemon is actually running
|
||||
case $(date +%H) in
|
||||
06 | 07 | 08) # Morning
|
||||
${swwwMorning}
|
||||
;;
|
||||
09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17) # Day
|
||||
${swwwDay}
|
||||
;;
|
||||
18 | 19 | 20) # Evening
|
||||
${swwwEvening}
|
||||
;;
|
||||
21 | 22 | 23 | 00 | 01 | 02 | 03 | 04 | 05) # Night
|
||||
${swwwNight}
|
||||
;;
|
||||
esac
|
||||
|
||||
'';
|
||||
in
|
||||
{
|
||||
imports = [ ./default.nix ];
|
||||
systemd.user = {
|
||||
services.dynamic-wallpaper = {
|
||||
Unit = {
|
||||
Description = "Change wallpaper based on time of day";
|
||||
Wants = [ "swww-daemon.service" ];
|
||||
After = [ "swww-daemon.service" ];
|
||||
};
|
||||
Service = {
|
||||
Type = "oneshot";
|
||||
ExecStart = "${dynamicWallpaper}/bin/dynamic-wallpaper";
|
||||
};
|
||||
};
|
||||
timers.dynamic-wallpaper.Timer = {
|
||||
OnCalendar = "*:0";
|
||||
Unit = "dynamic-wallpaper.service";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,8 +1,9 @@
|
|||
{ ... }:
|
||||
{ config, ... }:
|
||||
{
|
||||
programs.alacritty = {
|
||||
enable = true;
|
||||
settings = {
|
||||
shell = "${config.programs.zsh.package}/bin/zsh";
|
||||
window = {
|
||||
dynamic_title = true;
|
||||
padding = {
|
||||
|
@ -10,7 +11,7 @@
|
|||
y = 5;
|
||||
};
|
||||
};
|
||||
general.live_config_reload = true;
|
||||
live_config_reload = true;
|
||||
selection.save_to_clipboard = true;
|
||||
mouse.hide_when_typing = true;
|
||||
};
|
4
system/home/terminal/default.nix
Normal file
|
@ -0,0 +1,4 @@
|
|||
{ ... }:
|
||||
{
|
||||
imports = [ ./alacritty.nix ];
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
(texlive.combine {
|
||||
inherit (texlive) scheme-full;
|
||||
latex-beamer-ukaea.pkgs = [ (callPackage ./latex-beamer-ukaea/default.nix { }) ];
|
||||
})
|
||||
];
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
{ ... }:
|
||||
{
|
||||
services.udiskie = {
|
||||
enable = true;
|
||||
notify = true;
|
||||
automount = true;
|
||||
tray = "never";
|
||||
};
|
||||
}
|
|
@ -1,6 +1,5 @@
|
|||
{ config, pkgs, ... }:
|
||||
{
|
||||
imports = [ ./avizo.nix ];
|
||||
stylix.targets.waybar.enable = false;
|
||||
systemd.user.targets.tray.Unit = {
|
||||
Description = "Home Manager System Tray";
|
||||
|
@ -13,22 +12,19 @@
|
|||
settings.main = {
|
||||
name = "main";
|
||||
layer = "top";
|
||||
position = "left";
|
||||
position = "top";
|
||||
# Layout
|
||||
"modules-left" = [
|
||||
"hyprland/workspaces"
|
||||
"mpris"
|
||||
"hyprland/window"
|
||||
];
|
||||
"modules-center" = [ ];
|
||||
"modules-center" = [ "mpris" ];
|
||||
"modules-right" = [
|
||||
"custom/notification"
|
||||
"pulseaudio#source"
|
||||
"pulseaudio#sink"
|
||||
"pulseaudio"
|
||||
"network"
|
||||
"bluetooth"
|
||||
"custom/calendar-icon"
|
||||
"clock#calendar"
|
||||
"custom/clock-icon"
|
||||
"clock"
|
||||
"backlight"
|
||||
"battery"
|
||||
|
@ -40,14 +36,13 @@
|
|||
"hyprland/workspaces" = {
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
"1" = "";
|
||||
"2" = "";
|
||||
"3" = "";
|
||||
"4" = "";
|
||||
"5" = "";
|
||||
"6" = "";
|
||||
"7" = "";
|
||||
default = "";
|
||||
"1" = " ";
|
||||
"2" = " ";
|
||||
"3" = " ";
|
||||
"4" = " ";
|
||||
"5" = " ";
|
||||
"6" = " ";
|
||||
default = " ";
|
||||
};
|
||||
all-outputs = false;
|
||||
persistent-workspaces = {
|
||||
|
@ -57,12 +52,41 @@
|
|||
"4" = [ ];
|
||||
"5" = [ ];
|
||||
"6" = [ ];
|
||||
"7" = [ ];
|
||||
};
|
||||
};
|
||||
"hyprland/window" = {
|
||||
"format" = "{title}";
|
||||
"max-length" = 50;
|
||||
"rewrite" = {
|
||||
"(.*) - GNU Emacs at (.*)" = " $1 [$2]";
|
||||
"(alacritty.*)" = " $1";
|
||||
"(.*) - mpv" = " $1";
|
||||
"swayimg: (.*)" = " $1";
|
||||
"swappy" = " swappy";
|
||||
"(?:/nix/.*)(btm)" = " Resource Usage [$1]";
|
||||
"(?:/nix/.*)(cava)" = " Music Visualiser [$1]";
|
||||
"Mozilla Firefox" = " $1";
|
||||
"(.*) — Mozilla Firefox" = " $1";
|
||||
"Nyxt - (.*)" = " $1";
|
||||
"(.*) - Chromium" = " $1";
|
||||
"(Signal.*)" = " $1";
|
||||
"(ZapZap.*)" = " $1";
|
||||
"((?:.*)WebCord.*)" = " $1";
|
||||
"(Cartridges.*)" = " $1";
|
||||
"([Ss]team.*)" = " $1";
|
||||
"(Prism Launcher.*)" = " Minecraft ($1)";
|
||||
"(.*)(?: *)PrusaSlicer-(.*)" = " $1 PrusaSlicer ($2)";
|
||||
"(.*)(?: *)PrusaSlicer G-code Viewer-(.*)" = " $1 G-code Viewer ($2)";
|
||||
"FreeCAD (.*)" = " FreeCAD $1";
|
||||
"(.*) - Blender.* " = " $1";
|
||||
"(Remmina Remote Desktop Client)" = " $1";
|
||||
"(NoMachine|Nxplayer.bin)(?: *)(.*)" = " $1 $2";
|
||||
};
|
||||
};
|
||||
mpris = {
|
||||
"format" = "{player_icon}\n{status_icon}";
|
||||
"tooltip-format" = "{player_icon} ({player}) {status_icon}\n{title}\n{album}\n{artist}";
|
||||
"format" = "{player_icon} {status_icon} | {album} - {artist} - {title}";
|
||||
"tooltip-format" = "{player_icon} ({player}) {status_icon} {dynamic}";
|
||||
"title-len" = 64;
|
||||
"interval" = 1;
|
||||
"dynamic-order" = [
|
||||
"album"
|
||||
|
@ -72,65 +96,70 @@
|
|||
"length"
|
||||
];
|
||||
"player-icons" = {
|
||||
"default" = "";
|
||||
"default" = " ";
|
||||
};
|
||||
"status-icons" = {
|
||||
"playing" = "";
|
||||
"paused" = "";
|
||||
"stopped" = "";
|
||||
};
|
||||
"ignored-players" = [
|
||||
"com"
|
||||
"firefox"
|
||||
];
|
||||
"ignored-players" = [ "firefox" ];
|
||||
};
|
||||
"pulseaudio#source" = {
|
||||
pulseaudio = {
|
||||
scroll-step = 5;
|
||||
format = "{format_source}";
|
||||
format-source = "";
|
||||
format-source-muted = "";
|
||||
tooltip = true;
|
||||
tooltip-format = "{desc} ({volume}%)";
|
||||
on-click = "${pkgs.pavucontrol}/bin/pavucontrol";
|
||||
on-click-right = "${config.services.avizo.package}/bin/volumectl %";
|
||||
on-scroll-up = "${config.services.avizo.package}/bin/volumectl -u + 5";
|
||||
on-scroll-down = "${config.services.avizo.package}/bin/volumectl -u - 5";
|
||||
};
|
||||
"pulseaudio#sink" = {
|
||||
scroll-step = 5;
|
||||
format = "{icon}";
|
||||
format = "{format_source}{icon}{volume}%";
|
||||
format-muted = "{format_source} ";
|
||||
format-source = " ";
|
||||
format-source-muted = " ";
|
||||
format-icons = {
|
||||
car = "";
|
||||
car = " ";
|
||||
default = [
|
||||
""
|
||||
""
|
||||
""
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
];
|
||||
default-muted = "";
|
||||
hands-free = "";
|
||||
headset = "";
|
||||
phone = "";
|
||||
portable = "";
|
||||
headphone = "";
|
||||
hands-free = " ";
|
||||
headset = " ";
|
||||
phone = " ";
|
||||
portable = " ";
|
||||
headphone = " ";
|
||||
};
|
||||
tooltip = true;
|
||||
tooltip-format = "{desc} ({volume}%)";
|
||||
on-click = "${pkgs.pavucontrol}/bin/pavucontrol";
|
||||
on-click-right = "${config.services.avizo.package}/bin/volumectl %";
|
||||
on-scroll-up = "${config.services.avizo.package}/bin/volumectl -u + 5";
|
||||
on-scroll-down = "${config.services.avizo.package}/bin/volumectl -u - 5";
|
||||
on-click-right = "${pkgs.pamixer}/bin/pamixer -t";
|
||||
on-scroll-up = "${pkgs.pamixer}/bin/pamixer -i 5";
|
||||
on-scroll-down = "${pkgs.pamixer}/bin/pamixer -d 5";
|
||||
};
|
||||
disk = {
|
||||
format = " {percentage_used}%";
|
||||
path = config.home.homeDirectory;
|
||||
};
|
||||
cpu = {
|
||||
format = " {usage}%";
|
||||
tooltip = false;
|
||||
};
|
||||
memory = {
|
||||
format = " {}%";
|
||||
};
|
||||
temperature = {
|
||||
critical-threshold = 80;
|
||||
format = "{icon} {temperatureC}°C";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
};
|
||||
network = {
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
];
|
||||
format-wifi = "{icon}";
|
||||
format-ethernet = "";
|
||||
format-linked = "";
|
||||
format-disconnected = "";
|
||||
format-linked = " ";
|
||||
format-disconnected = " ";
|
||||
tooltip-format = "{essid} ({signalStrength}%)";
|
||||
on-click = "${pkgs.networkmanagerapplet}/bin/nm-connection-editor";
|
||||
};
|
||||
|
@ -143,16 +172,12 @@
|
|||
tooltip-format = "{status} | {device_alias}";
|
||||
on-click = "${pkgs.blueman}/bin/blueman-manager";
|
||||
};
|
||||
"custom/calendar-icon" = {
|
||||
format = "";
|
||||
tooltip = false;
|
||||
};
|
||||
"clock#calendar" =
|
||||
let
|
||||
size = "${toString config.stylix.fonts.sizes.popups}pt";
|
||||
in
|
||||
{
|
||||
format = "{:%d\n%m}";
|
||||
format = " {:%Y-%m-%d}";
|
||||
tooltip-format = "<span size='${size}'>{calendar}</span>";
|
||||
calendar = {
|
||||
mode = "month";
|
||||
|
@ -175,27 +200,20 @@
|
|||
on-scroll-down = "shift_down";
|
||||
};
|
||||
};
|
||||
"custom/clock-icon" = {
|
||||
format = "";
|
||||
tooltip = false;
|
||||
};
|
||||
clock = {
|
||||
format = "{:%H\n%M}";
|
||||
tooltip = false;
|
||||
};
|
||||
clock.format = " {:%R}";
|
||||
backlight = {
|
||||
format = "{icon}";
|
||||
tooltip-format = "{percent}%";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
];
|
||||
};
|
||||
battery = {
|
||||
|
@ -205,28 +223,31 @@
|
|||
};
|
||||
format = "{icon}";
|
||||
format-time = "{H}:{m}";
|
||||
format-charging = "";
|
||||
format-plugged = "";
|
||||
format-charging = " ({time})";
|
||||
format-plugged = " ";
|
||||
format-warning = "{icon}{capacity}%";
|
||||
format-critical = "{icon}{capacity}% ({time})";
|
||||
tooltip-format = "{capacity}% | {power}W | {time}";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
];
|
||||
};
|
||||
"systemd-failed-units" = {
|
||||
hide-on-ok = true;
|
||||
format = "";
|
||||
hide-on-ok = false;
|
||||
format = " S:{nr_failed_system} U:{nr_failed_user}";
|
||||
format-ok = " ";
|
||||
system = true;
|
||||
user = false;
|
||||
user = true;
|
||||
};
|
||||
"custom/notification" =
|
||||
let
|
||||
|
@ -234,16 +255,15 @@
|
|||
jq = "${pkgs.jq}/bin/jq";
|
||||
in
|
||||
{
|
||||
exec = "( ${makoctl} list | ${jq} -e '.data[] | length > 0' >/dev/null && echo '' ) || echo '' ";
|
||||
exec = "( ${makoctl} list | ${jq} -e '.data[] | length > 0' >/dev/null && echo ' ' ) || echo ' ' ";
|
||||
format = "{}";
|
||||
tooltip = false;
|
||||
on-click = "${makoctl} dismiss -a";
|
||||
interval = 3;
|
||||
};
|
||||
"custom/weather" =
|
||||
let
|
||||
date-format = "%Y-%m-%d";
|
||||
custom-indicator = "{ICON}"; # "{temp_C}°C({FeelsLikeC}°C)";
|
||||
custom-indicator = "{ICON}{temp_C}°C({FeelsLikeC}°C)";
|
||||
in
|
||||
{
|
||||
format = "{}";
|
||||
|
@ -261,13 +281,12 @@
|
|||
style =
|
||||
let
|
||||
scheme = config.lib.stylix.scheme.withHashtag;
|
||||
opacity = config.stylix.opacity.desktop;
|
||||
in
|
||||
''
|
||||
* {
|
||||
all: unset;
|
||||
font-family: ${config.stylix.fonts.monospace.name};
|
||||
font-size: ${toString config.stylix.fonts.sizes.desktop}pt;
|
||||
font-size: ${toString config.stylix.fonts.sizes.popups}px;
|
||||
}
|
||||
|
||||
window {
|
||||
|
@ -278,19 +297,18 @@
|
|||
|
||||
window > box {
|
||||
color: ${scheme.base05};
|
||||
background: alpha(${scheme.base00}, ${toString opacity});
|
||||
margin: 5px 0px 5px 6px;
|
||||
padding: 2px;
|
||||
border: 1px solid ${scheme.base04};
|
||||
border-radius: 10px;
|
||||
background: ${scheme.base00};
|
||||
margin: 5px 5px 0px;
|
||||
padding: 0px;
|
||||
border-top: 1px solid ${scheme.base04};
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
tooltip {
|
||||
background: ${scheme.base00};
|
||||
border: 2px solid ${scheme.base0E};
|
||||
border-radius: 10px;
|
||||
border: 1px solid ${scheme.base0E};
|
||||
border-radius: 5px;
|
||||
box-shadow: none;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
tooltip label {
|
||||
|
@ -300,13 +318,37 @@
|
|||
margin: 0px;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
background: ${scheme.base00};
|
||||
border-radius: 5px;
|
||||
margin: 3px 2px;
|
||||
padding: 2px 3px;
|
||||
#workspaces,
|
||||
#window,
|
||||
#mpris,
|
||||
#pulseaudio,
|
||||
#network,
|
||||
#bluetooth,
|
||||
#backlight,
|
||||
#battery,
|
||||
#clock,
|
||||
#custom-notification,
|
||||
#custom-weather,
|
||||
#tray {
|
||||
margin: 0px;
|
||||
padding: 1px 5px;
|
||||
}
|
||||
|
||||
#workspaces,
|
||||
#window,
|
||||
#tray,
|
||||
#backlight,
|
||||
#battery,
|
||||
#custom-weather {
|
||||
color: ${scheme.base05};
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
background: transparent;
|
||||
color: ${scheme.base05};
|
||||
margin: 0px;
|
||||
padding: 0px 5px;
|
||||
}
|
||||
#workspaces button.empty {
|
||||
color: ${scheme.base03};
|
||||
}
|
||||
|
@ -324,28 +366,20 @@
|
|||
#custom-notification {
|
||||
color: ${scheme.base08};
|
||||
}
|
||||
#pulseaudio.source {
|
||||
#pulseaudio {
|
||||
color: ${scheme.base09};
|
||||
}
|
||||
#pulseaudio.sink {
|
||||
#network {
|
||||
color: ${scheme.base0A};
|
||||
}
|
||||
#network {
|
||||
#bluetooth {
|
||||
color: ${scheme.base0B};
|
||||
}
|
||||
#bluetooth {
|
||||
#clock.calendar {
|
||||
color: ${scheme.base0C};
|
||||
}
|
||||
#custom-calendar-icon,
|
||||
#clock.calendar {
|
||||
color: ${scheme.base0D};
|
||||
}
|
||||
#custom-clock-icon,
|
||||
#clock {
|
||||
color: ${scheme.base0E};
|
||||
}
|
||||
#backlight {
|
||||
color: ${scheme.base0F};
|
||||
color: ${scheme.base0D};
|
||||
}
|
||||
|
||||
#battery.warning {
|
||||
|
@ -365,11 +399,6 @@
|
|||
#systemd-failed-units.degraded {
|
||||
color: ${scheme.base08}
|
||||
}
|
||||
|
||||
#custom-weather,
|
||||
#tray {
|
||||
padding: 2px 2px 2px 3px;
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,86 +0,0 @@
|
|||
{ config, ... }:
|
||||
{
|
||||
programs.wlogout = {
|
||||
enable = true;
|
||||
layout = [
|
||||
{
|
||||
label = "reboot";
|
||||
action = "systemctl reboot";
|
||||
text = "Reboot";
|
||||
keybind = "r";
|
||||
}
|
||||
{
|
||||
label = "shutdown";
|
||||
action = "systemctl poweroff";
|
||||
text = "Shutdown";
|
||||
keybind = "s";
|
||||
}
|
||||
{
|
||||
label = "lock";
|
||||
action = "${config.programs.hyprlock.package}/bin/hyprlock";
|
||||
text = "Lock Screen";
|
||||
keybind = "l";
|
||||
}
|
||||
];
|
||||
style =
|
||||
let
|
||||
scheme = config.lib.stylix.scheme;
|
||||
opacity = config.stylix.opacity.popups;
|
||||
icons = "${config.programs.wlogout.package}/share/wlogout/icons";
|
||||
in
|
||||
''
|
||||
* {
|
||||
background-image: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
window {
|
||||
background-color: rgba(${scheme.base00-rgb-r}, ${scheme.base00-rgb-g}, ${scheme.base00-rgb-b}, ${toString opacity});
|
||||
}
|
||||
|
||||
button {
|
||||
border-radius: 0;
|
||||
border-color: ${scheme.withHashtag.base03};
|
||||
text-decoration-color: ${scheme.withHashtag.base05};
|
||||
color: ${scheme.withHashtag.base05};
|
||||
background-color: ${scheme.withHashtag.base00};
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 25%;
|
||||
}
|
||||
|
||||
button:focus, button:active, button:hover {
|
||||
text-decoration-color: ${scheme.withHashtag.base00};
|
||||
color: ${scheme.withHashtag.base00};
|
||||
background-color: ${scheme.withHashtag.base0E};
|
||||
outline-style: none;
|
||||
}
|
||||
|
||||
#lock {
|
||||
background-image: image(url("${icons}/lock.png"));
|
||||
}
|
||||
|
||||
#logout {
|
||||
background-image: image(url("${icons}/logout.png"));
|
||||
}
|
||||
|
||||
#suspend {
|
||||
background-image: image(url("${icons}/suspend.png"));
|
||||
}
|
||||
|
||||
#hibernate {
|
||||
background-image: image(url("${icons}/hibernate.png"));
|
||||
}
|
||||
|
||||
#shutdown {
|
||||
background-image: image(url("${icons}/shutdown.png"));
|
||||
}
|
||||
|
||||
#reboot {
|
||||
background-image: image(url("${icons}/reboot.png"));
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
15
system/home/zathura/default.nix
Normal file
|
@ -0,0 +1,15 @@
|
|||
{ ... }:
|
||||
{
|
||||
# TODO add emacs keybinds
|
||||
programs.zathura = {
|
||||
enable = true;
|
||||
options = {
|
||||
adjust-open = "best-fit";
|
||||
database = "null";
|
||||
dbus-service = true;
|
||||
sandbox = "normal";
|
||||
scroll-page-aware = true;
|
||||
synctex = true;
|
||||
};
|
||||
};
|
||||
}
|
208
system/home/zathura/emacs-keys-for-zathura.txt
Normal file
|
@ -0,0 +1,208 @@
|
|||
# Being an Emacs user, it is natural for me to use emacs-like and info-like keybindings for zathura.
|
||||
#
|
||||
# Zathura configuration documentation is available at
|
||||
# https://git.pwmt.org/pwmt/zathura/-/blob/e5d2ca487147e79d0bb7acbf5174cd9dcc92a86c/doc/man/zathurarc.5.rst
|
||||
# A full list of available functions and default keybindings is available at
|
||||
# https://git.pwmt.org/pwmt/zathura/-/blob/e5d2ca487147e79d0bb7acbf5174cd9dcc92a86c/zathura/config.c#L301
|
||||
#
|
||||
# If you want to integrate Zathura with Emacs AUCTeX mode, see
|
||||
# [emacs wiki](https://www.emacswiki.org/emacs/AUCTeX).
|
||||
#
|
||||
# Put the following inside `$XDG_CONFIG_HOME/zathura/zathurarc
|
||||
|
||||
## niceties
|
||||
# when selecting text with mouse,
|
||||
# copy to clipboard
|
||||
set selection-clipboard clipboard
|
||||
|
||||
# keep several lines of text when
|
||||
# scrolling a screenful
|
||||
set scroll-full-overlap 0.2
|
||||
|
||||
# see documentation for details
|
||||
set scroll-page-aware true
|
||||
set window-title-basename true
|
||||
set adjust-open width
|
||||
set statusbar-home-tilde true
|
||||
set vertical-center true
|
||||
set synctex true
|
||||
# large bold font easier on the eyes in index mode
|
||||
# status bar can be disabled with A-s
|
||||
set font "FreeSans bold 16"
|
||||
set zoom-step 3
|
||||
|
||||
map [normal] <C-b> scroll left
|
||||
map [normal] <C-n> scroll down
|
||||
map [normal] <C-p> scroll up
|
||||
map [normal] <C-f> scroll right
|
||||
map [normal] <C-g> abort
|
||||
map [insert] <C-g> abort
|
||||
map [normal] <C-[> abort
|
||||
map [normal] <A-\<> goto top
|
||||
map [normal] <A-\>> goto bottom
|
||||
map [normal] a adjust_window best-fit
|
||||
map [normal] s adjust_window width
|
||||
map [normal] F display_link
|
||||
map [normal] <C-c> copy_link
|
||||
map [normal] f follow
|
||||
map [normal] m mark_add
|
||||
map [normal] \' mark_evaluate
|
||||
map [normal] \, navigate next
|
||||
map [normal] \. navigate previous
|
||||
map [normal] <A-Right> navigate next
|
||||
map [normal] <A-Left> navigate previous
|
||||
map [normal] <PageDown> scroll full-down
|
||||
map [normal] <PageUp> scroll full-up
|
||||
map [normal] <C-P> print
|
||||
map [normal] c recolor
|
||||
map [normal] R reload
|
||||
map [normal] v rotate rotate_cw
|
||||
map [normal] V rotate rotate_ccw
|
||||
map [normal] <Left> scroll left
|
||||
map [normal] <Up> scroll up
|
||||
map [normal] <Down> scroll down
|
||||
map [normal] <Right> scroll right
|
||||
map [normal] <A-a> scroll half-left
|
||||
map [normal] <C-V> scroll half-down
|
||||
map [normal] <A-V> scroll half-up
|
||||
map [normal] <A-e> scroll half-right
|
||||
map [normal] <C-a> scroll full-left
|
||||
map [normal] <C-v> scroll full-down
|
||||
map [normal] <Return> scroll full-down
|
||||
map [normal] <A-v> scroll full-up
|
||||
map [normal] <C-e> scroll full-right
|
||||
map [normal] <Space> scroll full-down
|
||||
map [normal] <C-h> scroll full-up
|
||||
map [normal] <BackSpace> scroll full-up
|
||||
map [normal] <S-Space> scroll full-up
|
||||
map [normal] l jumplist backward
|
||||
map [normal] r jumplist forward
|
||||
map [normal] <A-r> bisect forward
|
||||
map [normal] <A-l> bisect backward
|
||||
# still need to use '/' to trigger search
|
||||
map [normal] <C-s> search forward
|
||||
map [normal] <C-r> search backward
|
||||
map [normal] p snap_to_page
|
||||
map [normal] <C-i> toggle_index
|
||||
map [normal] i toggle_index
|
||||
map [normal] <Tab> toggle_index
|
||||
map [normal] <A-s> toggle_statusbar
|
||||
map [normal] <A-i> focus_inputbar
|
||||
map [normal] d toggle_page_mode
|
||||
map [normal] q quit
|
||||
map [normal] + zoom in
|
||||
map [normal] - zoom out
|
||||
map [normal] = zoom in
|
||||
map [normal] <A-P> toggle_presentation
|
||||
map [normal] <A-F> toggle_fullscreen
|
||||
map [normal] j toggle_fullscreen
|
||||
map [fullscreen] j toggle_fullscreen
|
||||
map [fullscreen] q toggle_fullscreen
|
||||
map [fullscreen] <C-b> scroll left
|
||||
map [fullscreen] <C-n> scroll down
|
||||
map [fullscreen] <C-p> scroll up
|
||||
map [fullscreen] <C-f> scroll right
|
||||
map [fullscreen] <C-g> abort
|
||||
map [fullscreen] <C-[> abort
|
||||
map [fullscreen] <A-\<> goto top
|
||||
map [fullscreen] <A-\>> goto bottom
|
||||
map [fullscreen] a adjust_window best-fit
|
||||
map [fullscreen] s adjust_window width
|
||||
map [fullscreen] F display_link
|
||||
map [fullscreen] <C-c> copy_link
|
||||
map [fullscreen] f follow
|
||||
map [fullscreen] m mark_add
|
||||
map [fullscreen] \' mark_evaluate
|
||||
map [fullscreen] \, navigate next
|
||||
map [fullscreen] \. navigate previous
|
||||
map [fullscreen] <A-Right> navigate next
|
||||
map [fullscreen] <A-Left> navigate previous
|
||||
map [fullscreen] <PageDown> scroll full-down
|
||||
map [fullscreen] <PageUp> scroll full-up
|
||||
map [fullscreen] <C-P> print
|
||||
map [fullscreen] c recolor
|
||||
map [fullscreen] R reload
|
||||
map [fullscreen] v rotate rotate_cw
|
||||
map [fullscreen] V rotate rotate_ccw
|
||||
map [fullscreen] <Left> scroll left
|
||||
map [fullscreen] <Up> scroll up
|
||||
map [fullscreen] <Down> scroll down
|
||||
map [fullscreen] <Right> scroll right
|
||||
map [fullscreen] <A-a> scroll half-left
|
||||
map [fullscreen] <C-V> scroll half-down
|
||||
map [fullscreen] <A-V> scroll half-up
|
||||
map [fullscreen] <A-e> scroll half-right
|
||||
map [fullscreen] <C-a> scroll full-left
|
||||
map [fullscreen] <C-v> scroll full-down
|
||||
map [fullscreen] <Return> scroll full-down
|
||||
map [fullscreen] <A-v> scroll full-up
|
||||
map [fullscreen] <C-e> scroll full-right
|
||||
map [fullscreen] <Space> scroll full-down
|
||||
map [fullscreen] <C-h> scroll full-up
|
||||
map [fullscreen] <BackSpace> scroll full-up
|
||||
map [fullscreen] <S-Space> scroll full-up
|
||||
map [fullscreen] l jumplist backward
|
||||
map [fullscreen] r jumplist forward
|
||||
map [fullscreen] <A-r> bisect forward
|
||||
map [fullscreen] <A-l> bisect backward
|
||||
map [fullscreen] <C-s> search forward
|
||||
map [fullscreen] <C-r> search backward
|
||||
map [fullscreen] p snap_to_page
|
||||
map [fullscreen] i toggle_index
|
||||
map [fullscreen] <C-i> toggle_index
|
||||
map [fullscreen] <Tab> toggle_index
|
||||
map [fullscreen] <A-s> toggle_statusbar
|
||||
map [fullscreen] <A-i> focus_inputbar
|
||||
map [fullscreen] d toggle_page_mode
|
||||
map [fullscreen] + zoom in
|
||||
map [fullscreen] - zoom out
|
||||
map [fullscreen] = zoom in
|
||||
# status bar will obscure last item in index mode
|
||||
map [index] <A-s> toggle_statusbar
|
||||
map [index] q toggle_index
|
||||
map [index] i toggle_index
|
||||
map [index] <C-p> navigate_index up
|
||||
map [index] <C-h> navigate_index up
|
||||
map [index] <BackSpace> navigate_index up
|
||||
map [index] <C-n> navigate_index down
|
||||
map [index] <A-v> navigate_index up
|
||||
map [index] <C-v> navigate_index down
|
||||
map [index] \< navigate_index top
|
||||
map [index] \> navigate_index bottom
|
||||
map [index] <A-\<> navigate_index top
|
||||
map [index] <A-\>> navigate_index bottom
|
||||
map [index] <C-b> navigate_index collapse
|
||||
map [index] <C-f> navigate_index expand
|
||||
map [index] <C-i> navigate_index expand-all
|
||||
map [index] <A-i> navigate_index collapse-all
|
||||
map [index] <Up> navigate_index up
|
||||
map [index] <Down> navigate_index down
|
||||
map [index] <Left> navigate_index collapse
|
||||
map [index] <Right> navigate_index expand
|
||||
map [index] <C-m> navigate_index select
|
||||
map [index] <Space> navigate_index select
|
||||
map [index] <Return> navigate_index select
|
||||
map [index] <C-j> navigate_index select
|
||||
map [index] <Esc> toggle_index
|
||||
map [index] <C-[> toggle_index
|
||||
map [index] <C-g> toggle_index
|
||||
map [index] <C-c> toggle_index
|
||||
map [presentation] i toggle_index
|
||||
map [presentation] r navigate next
|
||||
map [presentation] <Down> navigate next
|
||||
map [presentation] <Right> navigate next
|
||||
map [presentation] <PageDown> navigate next
|
||||
map [presentation] <Space> navigate next
|
||||
map [presentation] l navigate previous
|
||||
map [presentation] <Left> navigate previous
|
||||
map [presentation] <Up> navigate previous
|
||||
map [presentation] <PageUp> navigate previous
|
||||
map [presentation] <S-Space> navigate previous
|
||||
map [presentation] <BackSpace> navigate previous
|
||||
map [presentation] <F5> toggle_presentation
|
||||
map [presentation] q toggle_presentation
|
||||
map [presentation] <C-h> navigate previous
|
||||
map [presentation] <M-v> navigate previous
|
||||
map [presentation] <C-v> navigate next
|
||||
map [presentation] <A-\<> goto top
|
||||
map [presentation] <A-\>> goto bottom
|
|
@ -7,14 +7,14 @@
|
|||
)
|
||||
|
||||
(defalias
|
||||
capsctrl (tap-hold $tap-time $hold-time esc lctl)
|
||||
capsctrl (tap-hold $tap-time $hold-time caps lctl)
|
||||
a (tap-hold $tap-time $hold-time a lmet)
|
||||
s (tap-hold $tap-time $hold-time s lsft)
|
||||
d (tap-hold $tap-time $hold-time d lalt)
|
||||
f (tap-hold $tap-time $hold-time f lctl)
|
||||
j (tap-hold $tap-time $hold-time j lctl)
|
||||
k (tap-hold $tap-time $hold-time k lalt)
|
||||
l (tap-hold $tap-time $hold-time l lsft)
|
||||
s (tap-hold $tap-time $hold-time s lalt)
|
||||
d (tap-hold $tap-time $hold-time d lctl)
|
||||
f (tap-hold $tap-time $hold-time f lsft)
|
||||
j (tap-hold $tap-time $hold-time j lsft)
|
||||
k (tap-hold $tap-time $hold-time k lctl)
|
||||
l (tap-hold $tap-time $hold-time l lalt)
|
||||
; (tap-hold $tap-time $hold-time ; lmet)
|
||||
)
|
||||
|
||||
|
|
|
@ -1,14 +1,10 @@
|
|||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [ ./desktop.nix ];
|
||||
environment.systemPackages = [ pkgs.acpi ];
|
||||
powerManagement.enable = true;
|
||||
networking.networkmanager.wifi.powersave = true;
|
||||
services.auto-cpufreq = {
|
||||
enable = false; # TEMP, conflict with power-profiles-daemon
|
||||
enable = true;
|
||||
settings = {
|
||||
battery = {
|
||||
governor = "powersave";
|
||||
|
|
|
@ -1,15 +1,14 @@
|
|||
let
|
||||
emacs = [ "emacs.desktop" ];
|
||||
emacs = [ "emacsclient.desktop" ];
|
||||
browser = [ "firefox.desktop" ];
|
||||
in
|
||||
{
|
||||
"inode/directory" = [ "org.xfce.thunar.desktop" ];
|
||||
"inode/symlink" = [ "org.xfce.thunar.desktop" ];
|
||||
"inode/directory" = [ "org.gnome.Nautilus.desktop" ];
|
||||
"inode/symlink" = [ "org.gnome.Nautilus.desktop" ];
|
||||
|
||||
"image/jpeg" = [ "com.xfce.ristretto.desktop" ];
|
||||
"image/png" = [ "com.xfce.ristretto.desktop" ];
|
||||
"audio/mpeg" = [ "com.github.neithern.g4music.desktop" ];
|
||||
"video/mp4" = [ "mpv.desktop" ];
|
||||
"image/jpeg" = [ "com.github.weclaw1.ImageRoll.desktop" ];
|
||||
"image/png" = [ "com.github.weclaw1.ImageRoll.desktop" ];
|
||||
"video/mp4" = [ "com.github.rafostar.Clapper.desktop" ];
|
||||
|
||||
"text/plain" = emacs;
|
||||
"text/richtext" = emacs;
|
||||
|
@ -64,7 +63,7 @@ in
|
|||
"x-scheme-handler/chrome" = browser;
|
||||
"x-scheme-handler/webcal" = browser;
|
||||
"x-scheme-handler/geo" = [ "openstreetmap-geo-handler.desktop" ];
|
||||
"x-scheme-handler/mailto" = [ "emacs-mail.desktop" ];
|
||||
"x-scheme-handler/mailto" = [ "emacsclient-mail.desktop" ];
|
||||
"x-scheme-handler/unknown" = emacs;
|
||||
|
||||
"x-scheme-handler/prusaslicer" = [ "PrusaSlicerURLProtocol.desktop" ];
|
||||
|
@ -72,4 +71,7 @@ in
|
|||
"x-scheme-handler/ms-word" = [ "writer.desktop" ];
|
||||
"x-scheme-handler/ms-powerpoint" = [ "impress.desktop" ];
|
||||
"x-scheme-handler/ms-excel" = [ "calc.desktop" ];
|
||||
"x-scheme-handler/msteams" = [ "teams-for-linux.desktop" ] ++ browser;
|
||||
"x-scheme-handler/zoomus" = browser;
|
||||
"x-scheme-handler/zoommtg" = browser;
|
||||
}
|
||||
|
|
29
system/one-light.yaml
Normal file
|
@ -0,0 +1,29 @@
|
|||
system: "base24"
|
||||
name: "One Light"
|
||||
author: "Pixelfiytica, modified from FredHappyface (https://github.com/fredHappyface)"
|
||||
variant: "light"
|
||||
palette:
|
||||
base00: "fafafa"
|
||||
base01: "f0f0f1"
|
||||
base02: "cacace"
|
||||
base03: "a0a1a7"
|
||||
base04: "696c77"
|
||||
base05: "383a42"
|
||||
base06: "202227"
|
||||
base07: "090a0b"
|
||||
base08: "ca1243"
|
||||
base09: "c18401"
|
||||
base0A: "febb2a"
|
||||
base0B: "50a14f"
|
||||
base0C: "0184bc"
|
||||
base0D: "4078f2"
|
||||
base0E: "a626a4"
|
||||
base0F: "986801"
|
||||
base10: "f0f0f1"
|
||||
base11: "fafafa"
|
||||
base12: "ec2258"
|
||||
base13: "f4a701"
|
||||
base14: "6db76c"
|
||||
base15: "01a7ef"
|
||||
base16: "709af5"
|
||||
base17: "d02fcd"
|
|
@ -2,14 +2,13 @@
|
|||
{
|
||||
services.adguardhome = {
|
||||
enable = true;
|
||||
port = 3200;
|
||||
mutableSettings = false;
|
||||
openFirewall = true;
|
||||
settings = rec {
|
||||
http.address = "0.0.0.0:3200";
|
||||
dns = {
|
||||
bind_hosts = [
|
||||
"127.0.0.1"
|
||||
"192.168.0.31"
|
||||
"192.168.1.230"
|
||||
];
|
||||
bootstrap_dns = [
|
||||
"9.9.9.9"
|
||||
|
@ -17,20 +16,16 @@
|
|||
];
|
||||
ratelimit = 0;
|
||||
safe_search.enabled = true;
|
||||
rewrites =
|
||||
let
|
||||
local = "192.168.0.31";
|
||||
in
|
||||
[
|
||||
{
|
||||
domain = "xenia.me.uk";
|
||||
answer = local;
|
||||
}
|
||||
{
|
||||
domain = "*.xenia.me.uk";
|
||||
answer = local;
|
||||
}
|
||||
];
|
||||
rewrites = [
|
||||
{
|
||||
domain = "xenia.me.uk";
|
||||
answer = "192.168.1.230";
|
||||
}
|
||||
{
|
||||
domain = "*.xenia.me.uk";
|
||||
answer = "192.168.1.230";
|
||||
}
|
||||
];
|
||||
blocked_services.ids = [ ];
|
||||
};
|
||||
filtering = {
|
||||
|
@ -44,6 +39,7 @@
|
|||
inherit (querylog) ignored;
|
||||
};
|
||||
};
|
||||
openFirewall = true;
|
||||
};
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [ 53 ];
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ config, ... }:
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
imports = [ ./caddy.nix ];
|
||||
services = {
|
||||
|
@ -23,10 +23,16 @@
|
|||
};
|
||||
};
|
||||
};
|
||||
caddy.virtualHosts."git.xenia.me.uk".extraConfig =
|
||||
let
|
||||
port = config.services.forgejo.settings.server.HTTP_PORT;
|
||||
in
|
||||
"reverse_proxy http://localhost:${toString port}";
|
||||
# gitea-actions-runner = {
|
||||
# package = pkgs.forgejo-runner;
|
||||
# instances.default = {
|
||||
# enable = true;
|
||||
# name = "monolith";
|
||||
# url = config.services.forgejo.settings.server.ROOT_URL;
|
||||
# tokenFile = /var/lib/forgejo/runner_registration_token;
|
||||
# labels = ["native:host"];
|
||||
# };
|
||||
# };
|
||||
caddy.virtualHosts."git.xenia.me.uk".extraConfig = "reverse_proxy http://localhost:3100";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -32,6 +32,5 @@
|
|||
# }
|
||||
];
|
||||
};
|
||||
services.caddy.virtualHosts."grafana.xenia.me.uk".extraConfig =
|
||||
"reverse_proxy http://localhost:3000";
|
||||
services.caddy.virtualHosts."grafana.xenia.me.uk".extraConfig = "reverse_proxy http://localhost:3000";
|
||||
}
|
||||
|
|
|
@ -4,26 +4,13 @@
|
|||
backend = "podman";
|
||||
containers.homeassistant = {
|
||||
volumes = [
|
||||
"/var/lib/home-assistant:/config"
|
||||
"home-assistant:/config"
|
||||
"/run/dbus:/run/dbus:ro"
|
||||
"/var/lib/syncthing/Music:/music"
|
||||
"/tmp:/.dockerenv" # TEMP FIX FOR CONTAINER CHECKS
|
||||
];
|
||||
environment.TZ = config.time.timeZone;
|
||||
image = "ghcr.io/home-assistant/home-assistant@sha256:db0f344d5126bfedd7bf18e0bfb8249a9a5e6785e2f6cb3728edbd393fff1981"; # 2024-12-20T10:54:13.805911135Z
|
||||
image = "ghcr.io/home-assistant/home-assistant:2024.8.0.dev202407210221";
|
||||
extraOptions = [ "--network=host" ];
|
||||
};
|
||||
};
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [
|
||||
1400
|
||||
1443
|
||||
];
|
||||
allowedUDPPorts = [
|
||||
1400
|
||||
1443
|
||||
5353
|
||||
];
|
||||
};
|
||||
services.caddy.virtualHosts."home.xenia.me.uk".extraConfig = "reverse_proxy http://localhost:8123";
|
||||
}
|
||||
|
|
|
@ -6,6 +6,5 @@
|
|||
openFirewall = true;
|
||||
secretKeyFile = "/root/nix-serve.key";
|
||||
};
|
||||
services.caddy.virtualHosts."nix.xenia.me.uk".extraConfig =
|
||||
"reverse_proxy http://localhost:${toString config.services.nix-serve.port}";
|
||||
services.caddy.virtualHosts."nix.xenia.me.uk".extraConfig = "reverse_proxy http://localhost:${toString config.services.nix-serve.port}";
|
||||
}
|
||||
|
|
|
@ -6,6 +6,5 @@
|
|||
port = 9090;
|
||||
openFirewall = true;
|
||||
};
|
||||
services.caddy.virtualHosts."stream.xenia.me.uk".extraConfig =
|
||||
"reverse_proxy http://localhost:${config.services.owncast.port}";
|
||||
services.caddy.virtualHosts."stream.xenia.me.uk".extraConfig = "reverse_proxy http://localhost:${config.services.owncast.port}";
|
||||
}
|
||||
|
|
|
@ -1,28 +0,0 @@
|
|||
{ config, ... }:
|
||||
{
|
||||
imports = [ ./caddy.nix ];
|
||||
services = {
|
||||
webdav = {
|
||||
enable = true;
|
||||
settings = {
|
||||
address = "0.0.0.0";
|
||||
port = 6065;
|
||||
debug = true;
|
||||
behindProxy = true;
|
||||
directory = "/srv/webdav";
|
||||
users = [
|
||||
{
|
||||
username = "pixelifytica";
|
||||
password = "{bcrypt}$2b$12$ulThbG9JGJP/FYI4RyX8sufMOE/vfw928gJMFedajiINbqx585wY.";
|
||||
permissions = "CRUD";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
caddy.virtualHosts."files.xenia.me.uk".extraConfig =
|
||||
let
|
||||
inherit (config.services.webdav.settings) port;
|
||||
in
|
||||
"reverse_proxy http://localhost:${toString port}";
|
||||
};
|
||||
}
|
|
@ -1,5 +1,9 @@
|
|||
{ username, ... }:
|
||||
{ pkgs, username, ... }:
|
||||
{
|
||||
environment = {
|
||||
sessionVariables.MANGOHUD = 1;
|
||||
systemPackages = [ pkgs.mangohud ];
|
||||
};
|
||||
hardware.steam-hardware.enable = true;
|
||||
programs = {
|
||||
gamemode.enable = true;
|
||||
|
@ -15,6 +19,7 @@
|
|||
};
|
||||
home-manager.users.${username}.programs.mangohud = {
|
||||
enable = true;
|
||||
settings.preset = 1;
|
||||
enableSessionWide = true;
|
||||
settings.preset = 2;
|
||||
};
|
||||
}
|
||||
|
|
BIN
system/wallpapers/Clearday.jpg
Normal file
After Width: | Height: | Size: 747 KiB |
BIN
system/wallpapers/Clearnight.jpg
Normal file
After Width: | Height: | Size: 7 MiB |
BIN
system/wallpapers/Cloudsday.jpg
Normal file
After Width: | Height: | Size: 5.3 MiB |
BIN
system/wallpapers/Cloudsnight.jpg
Normal file
After Width: | Height: | Size: 7.8 MiB |
BIN
system/wallpapers/Rainnight.jpg
Normal file
After Width: | Height: | Size: 3.6 MiB |
BIN
system/wallpapers/blake.png
Normal file
After Width: | Height: | Size: 562 KiB |
Before Width: | Height: | Size: 642 KiB After Width: | Height: | Size: 642 KiB |
Before Width: | Height: | Size: 4.1 MiB |
BIN
system/wallpapers/evening-sky.png
Normal file
After Width: | Height: | Size: 4.3 MiB |
BIN
system/wallpapers/forrest.png
Normal file
After Width: | Height: | Size: 3.7 MiB |
BIN
system/wallpapers/salty_mountains.png
Normal file
After Width: | Height: | Size: 1,000 KiB |
BIN
system/wallpapers/science/2422830.jpg
Normal file
After Width: | Height: | Size: 1.2 MiB |