Compare commits

..

1 Commits

Author SHA1 Message Date
bdd8519557 fix(home): neovim config reverted 2024-08-15 00:46:50 +03:00
23 changed files with 478 additions and 887 deletions

4
.gitignore vendored
View File

@@ -1,4 +0,0 @@
/result
*.qcow2
.directory

252
flake.lock generated
View File

@@ -1,5 +1,40 @@
{ {
"nodes": { "nodes": {
"devshell": {
"inputs": {
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1722113426,
"narHash": "sha256-Yo/3loq572A8Su6aY5GP56knpuKYRvM2a1meP9oJZCw=",
"owner": "numtide",
"repo": "devshell",
"rev": "67cce7359e4cd3c45296fb4aaf6a19e2a9c757ae",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "devshell",
"type": "github"
}
},
"flake-compat": {
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"revCount": 57,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
}
},
"flake-parts": { "flake-parts": {
"inputs": { "inputs": {
"nixpkgs-lib": [ "nixpkgs-lib": [
@@ -8,32 +43,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749398372, "lastModified": 1722555600,
"narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=", "narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569", "rev": "8471fe90ad337a8074e957b69ca4d0089218391d",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": [
"nur",
"nixpkgs"
]
},
"locked": {
"lastModified": 1733312601,
"narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -47,11 +61,11 @@
"systems": "systems" "systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1731533236, "lastModified": 1710146030,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -60,6 +74,58 @@
"type": "github" "type": "github"
} }
}, },
"git-hooks": {
"inputs": {
"flake-compat": [
"nixvim",
"flake-compat"
],
"gitignore": "gitignore",
"nixpkgs": [
"nixvim",
"nixpkgs"
],
"nixpkgs-stable": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1723202784,
"narHash": "sha256-qbhjc/NEGaDbyy0ucycubq4N3//gDFFH3DOmp1D3u1Q=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "c7012d0c18567c889b948781bc74a501e92275d1",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"nixvim",
"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"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -67,11 +133,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749935160, "lastModified": 1723015306,
"narHash": "sha256-lTLR7AyrrIS/b4frHKb5pw/gcPM0GgoGCURqeiOX9k8=", "narHash": "sha256-jQnFEtH20/OsDPpx71ntZzGdRlpXhUENSQCGTjn//NA=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "8fabeb9c142a303e02270c3a3a0d8e00af9d0dfe", "rev": "b3d5ea65d88d67d4ec578ed11d4d2d51e3de525e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -83,16 +149,16 @@
"home-manager_2": { "home-manager_2": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"plasma-manager", "nixvim",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1740494361, "lastModified": 1723015306,
"narHash": "sha256-Dd/GhJ9qKmUwuhgt/PAROG8J6YdU2ZjtJI9SQX5sVQI=", "narHash": "sha256-jQnFEtH20/OsDPpx71ntZzGdRlpXhUENSQCGTjn//NA=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "74f0a8546e3f2458c870cf90fc4b38ac1f498b17", "rev": "b3d5ea65d88d67d4ec578ed11d4d2d51e3de525e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -101,31 +167,24 @@
"type": "github" "type": "github"
} }
}, },
"ixx": { "home-manager_3": {
"inputs": { "inputs": {
"flake-utils": [
"nixvim",
"nuschtosSearch",
"flake-utils"
],
"nixpkgs": [ "nixpkgs": [
"nixvim", "plasma-manager",
"nuschtosSearch",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1748294338, "lastModified": 1714377222,
"narHash": "sha256-FVO01jdmUNArzBS7NmaktLdGA5qA3lUMJ4B7a05Iynw=", "narHash": "sha256-UsDsjWCKlWn8vbXi8Zza9Hkq3xyk8fpvFNo2VM5S74E=",
"owner": "NuschtOS", "owner": "nix-community",
"repo": "ixx", "repo": "home-manager",
"rev": "cc5f390f7caf265461d4aab37e98d2292ebbdb85", "rev": "2af7c78b7bb9cf18406a193eba13ef9f99388f49",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NuschtOS", "owner": "nix-community",
"ref": "v0.0.8", "repo": "home-manager",
"repo": "ixx",
"type": "github" "type": "github"
} }
}, },
@@ -145,29 +204,34 @@
"url": "https://git.psf.lt/xezo360hye/nethack" "url": "https://git.psf.lt/xezo360hye/nethack"
} }
}, },
"nixpkgs": { "nix-darwin": {
"inputs": {
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1749794982, "lastModified": 1722924007,
"narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=", "narHash": "sha256-+CQDamNwqO33REJLft8c26NbUi2Td083hq6SvAm2xkU=",
"owner": "nixos", "owner": "lnl7",
"repo": "nixpkgs", "repo": "nix-darwin",
"rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81", "rev": "91010a5613ffd7ee23ee9263213157a1c422b705",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "lnl7",
"ref": "nixos-unstable", "repo": "nix-darwin",
"repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nixpkgs_2": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1749794982, "lastModified": 1723175592,
"narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=", "narHash": "sha256-M0xJ3FbDUc4fRZ84dPGx5VvgFsOzds77KiBMW/mMTnI=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81", "rev": "5e0ca22929f3342b19569b21b2f3462f053e497b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -179,19 +243,24 @@
}, },
"nixvim": { "nixvim": {
"inputs": { "inputs": {
"devshell": "devshell",
"flake-compat": "flake-compat",
"flake-parts": "flake-parts", "flake-parts": "flake-parts",
"git-hooks": "git-hooks",
"home-manager": "home-manager_2",
"nix-darwin": "nix-darwin",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
"nuschtosSearch": "nuschtosSearch", "nuschtosSearch": "nuschtosSearch",
"systems": "systems_2" "treefmt-nix": "treefmt-nix"
}, },
"locked": { "locked": {
"lastModified": 1749924512, "lastModified": 1723323133,
"narHash": "sha256-IYv0yEFh86c+UnkcjrUAV0UeIE+9vMEeXDIF+YRlooc=", "narHash": "sha256-g3wit604jFhBvjDBziJgulDUXDl/ApafMXq7o7ioMxo=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixvim", "repo": "nixvim",
"rev": "e114d442b14f3a299307ca9b0f0eab20e821f419", "rev": "f13bdef0bc697261c51eab686c28c7e2e7b7db3c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -201,17 +270,12 @@
} }
}, },
"nur": { "nur": {
"inputs": {
"flake-parts": "flake-parts_2",
"nixpkgs": "nixpkgs_2",
"treefmt-nix": "treefmt-nix"
},
"locked": { "locked": {
"lastModified": 1749934169, "lastModified": 1723380405,
"narHash": "sha256-2oGEmCWq0T2qG7tUaPdUv0jOk09oWTit9NfI6gCScC4=", "narHash": "sha256-r2TX7+d1ABS3X04kmbicfpV96yXUVLIZGC6FR55VwhA=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "da2de77056b07a63601c9198708ff02ddab21fcb", "rev": "110866de6b9a3981751d3d4cf9f7b978610b30f1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -223,18 +287,17 @@
"nuschtosSearch": { "nuschtosSearch": {
"inputs": { "inputs": {
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"ixx": "ixx",
"nixpkgs": [ "nixpkgs": [
"nixvim", "nixvim",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1749730855, "lastModified": 1723134722,
"narHash": "sha256-L3x2nSlFkXkM6tQPLJP3oCBMIsRifhIDPMQQdHO5xWo=", "narHash": "sha256-wknII7R6ewALIxIKYtqeahjUk/ZrFj1ZtSpNBaHDCyg=",
"owner": "NuschtOS", "owner": "NuschtOS",
"repo": "search", "repo": "search",
"rev": "8dfe5879dd009ff4742b668d9c699bc4b9761742", "rev": "1016f4620e321c12ff1dbcd464e9de889e302d1c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -245,17 +308,17 @@
}, },
"plasma-manager": { "plasma-manager": {
"inputs": { "inputs": {
"home-manager": "home-manager_2", "home-manager": "home-manager_3",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1748196248, "lastModified": 1723232379,
"narHash": "sha256-1iHjsH6/5UOerJEoZKE+Gx1BgAoge/YcnUsOA4wQ/BU=", "narHash": "sha256-F4Y3f9305aHGWKqAd3s2GyNRONdpDBuNuK4TCSdaHz8=",
"owner": "nix-community", "owner": "nix-community",
"repo": "plasma-manager", "repo": "plasma-manager",
"rev": "b7697abe89967839b273a863a3805345ea54ab56", "rev": "22bea90404c5ff6457913a03c1a54a3caa5b1c57",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -289,34 +352,19 @@
"type": "github" "type": "github"
} }
}, },
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"treefmt-nix": { "treefmt-nix": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nur", "nixvim",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1733222881, "lastModified": 1723303070,
"narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", "narHash": "sha256-krGNVA30yptyRonohQ+i9cnK+CfCpedg6z3qzqVJcTs=",
"owner": "numtide", "owner": "numtide",
"repo": "treefmt-nix", "repo": "treefmt-nix",
"rev": "49717b5af6f80172275d47a418c9719a31a78b53", "rev": "14c092e0326de759e16b37535161b3cb9770cea3",
"type": "github" "type": "github"
}, },
"original": { "original": {

151
flake.nix
View File

@@ -2,107 +2,102 @@
description = "My homebrew NixOS configurations"; description = "My homebrew NixOS configurations";
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs.url = github:nixos/nixpkgs/nixos-unstable;
home-manager = { home-manager = {
url = "github:nix-community/home-manager"; url = github:nix-community/home-manager;
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nixvim = { nixvim = {
url = "github:nix-community/nixvim"; url = github:nix-community/nixvim;
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
plasma-manager = { plasma-manager = {
url = "github:nix-community/plasma-manager"; url = github:nix-community/plasma-manager;
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nur.url = "github:nix-community/NUR"; nur.url = github:nix-community/NUR;
nethack.url = "git+https://git.psf.lt/xezo360hye/nethack?shallow=1"; nethack.url = git+https://git.psf.lt/xezo360hye/nethack?shallow=1;
}; };
outputs = outputs = {
{ self,
self, nixpkgs,
nixpkgs, home-manager,
home-manager, nixvim,
nixvim, nethack,
nethack, plasma-manager,
plasma-manager, nur,
nur, ...
... } @ inputs:
}@inputs: let
let inherit (nixpkgs) lib;
inherit (nixpkgs) lib;
username = "andrey"; username = "andrey";
hostnames = [ hostnames = [ "tokishiko" "maidena" ];
"tokishiko" stateVersion = "24.05";
"maidena"
"noma"
"tuxedo"
];
stateVersion = "24.05";
makeSystem = hostname: { makeSystem = hostname: {
"${hostname}" = nixpkgs.lib.nixosSystem { "${hostname}" = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; }; specialArgs = { inherit inputs; };
modules = [ modules = [
home-manager.nixosModules.home-manager nur.nixosModules.nur
nur.modules.nixos.default
./system/common.nix ./system/common.nix
./system/${hostname}.nix ./system/${hostname}.nix
./hardware/${hostname}.nix ./hardware/${hostname}.nix
{ {
system.stateVersion = stateVersion; system.stateVersion = stateVersion;
networking.hostName = hostname; networking.hostName = hostname;
}
home-manager.useGlobalPkgs = true; ];
home-manager.useUserPackages = true;
home-manager.users.${username} = {
imports =
[
./home/${hostname}.nix
./home/common.nix
]
++ (map
(
module:
let
hm = module.homeManagerModules;
in
hm.${lib.head (lib.attrNames hm)}
)
[
nixvim
nethack
plasma-manager
]
);
home = {
username = username;
homeDirectory = "/home/${username}";
stateVersion = stateVersion;
};
news.display = "show";
};
}
];
};
}; };
};
forEachHost = fn: lib.mergeAttrsList (map fn hostnames);
makeHome = hostname:
let
extractModules = map
(module:
let hm = module.homeManagerModules;
in hm.${lib.head (lib.attrNames hm)});
in in
{ {
nixosConfigurations = forEachHost makeSystem; "${username}@${hostname}" = home-manager.lib.homeManagerConfiguration
{
extraSpecialArgs = { inherit inputs; };
pkgs = import nixpkgs {
system = "x86_64-linux";
overlays = [ nur.overlay ];
};
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-tree; modules = (extractModules [
nixvim
nethack
plasma-manager
]) ++ [
nur.hmModules.nur
./home/${hostname}.nix
./home/common.nix
{
news.display = "show";
home.username = username;
home.homeDirectory = "/home/${username}";
home.stateVersion = stateVersion;
}
];
};
}; };
forEachHost = fn: lib.fold lib.mergeAttrs {} (map fn hostnames);
in {
nixosConfigurations = forEachHost makeSystem;
homeConfigurations = forEachHost makeHome;
};
} }

View File

@@ -1,39 +0,0 @@
# 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" "sd_mod" "sr_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/522d5c82-5a7b-4aa2-8b69-7c7a8b225924";
fsType = "xfs";
};
fileSystems."/boot/efi" =
{ device = "/dev/disk/by-uuid/D219-B08E";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
swapDevices = [ ];
# 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.eno1.useDHCP = lib.mkDefault true;
# networking.interfaces.wlo1.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -10,11 +10,11 @@
boot.initrd.availableKernelModules = [ "ehci_pci" "ahci" "xhci_pci" "firewire_ohci" "usb_storage" "sd_mod" "sr_mod" "sdhci_pci" ]; boot.initrd.availableKernelModules = [ "ehci_pci" "ahci" "xhci_pci" "firewire_ohci" "usb_storage" "sd_mod" "sr_mod" "sdhci_pci" ];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ]; boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
fileSystems."/" = fileSystems."/" =
{ device = "/dev/disk/by-uuid/68a22707-e30a-469b-b24b-13fccd128929"; { device = "/dev/disk/by-uuid/98ff21ae-1adf-469e-8cea-3bd04cc564ab";
fsType = "xfs"; fsType = "xfs";
}; };

View File

@@ -1,42 +0,0 @@
# 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" "nvme" "rtsx_pci_sdmmc" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/67e3bb85-4f70-4b8f-8b88-ad0e0f96e336";
fsType = "ext4";
};
fileSystems."/boot/efi" =
{ device = "/dev/disk/by-uuid/8834-14B3";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
swapDevices =
[ { device = "/dev/disk/by-uuid/f198a128-2b2f-48b9-a804-cce6ab9803de"; }
];
# 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.enp58s0f1.useDHCP = lib.mkDefault true;
# networking.interfaces.tailscale0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp59s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -1,97 +1,61 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
imports = [ imports = [
./modules/thunderbird ./modules/nethack/default.nix
./modules/nethack ./modules/firefox/default.nix
./modules/firefox ./modules/neovim/default.nix
]; ];
programs = { programs = {
home-manager.enable = true; home-manager.enable = true;
fastfetch.enable = true; fastfetch.enable = true;
btop.enable = true; htop.enable = true;
bash = { bash = {
enable = true; enable = true;
historyControl = [ "ignoreboth" ]; historyControl = [ "ignoreboth" ];
}; };
git = { git = {
enable = true; enable = true;
userName = "xezo360hye"; userName = "xezo360hye";
userEmail = "xezo360hye@gmail.com"; userEmail = "xezo360hye@gmail.com";
delta.enable = true;
extraConfig = { extraConfig = {
credential.helper = "store";
init.defaultBranch = "master"; init.defaultBranch = "master";
url."https://github.com/".insteadOf = [ url."https://github.com/".insteadOf = [ "gh:" "github:" ];
"gh:" url."https://git.psf.lt/".insteadOf = [ "psf:" "gitea:" ];
"github:"
];
url."https://git.psf.lt/".insteadOf = [
"psf:"
"gitea:"
];
}; };
}; };
mpv = { mpv = {
enable = true; enable = true;
config.hwdec = "auto";
scripts = with pkgs.mpvScripts; [
mpris
];
}; };
}; };
gtk = {
enable = true; nixpkgs.config.allowUnfree = true;
iconTheme = {
package = pkgs.adwaita-icon-theme;
name = "Adwaita";
};
};
home = { home = {
packages = packages = with pkgs; [
with pkgs; telegram-desktop
let libqalculate
sent' = sent.overrideAttrs (oldAttrs: { arduino-cli
buildInputs = oldAttrs.buildInputs ++ [ cairo ];
patches = [
./resources/patches/sent-pdf.diff
];
});
in
[
texlive.combined.scheme-full
telegram-desktop
libreoffice-qt6
libqalculate
arduino-cli
gimp ani-cli
krita ytfzf
inkscape
ani-cli cpufrequtils
ytfzf steam-run
];
cpufrequtils
steam-run
sent'
gcc
python3
nodejs
lua
wl-clipboard
];
sessionVariables = { sessionVariables = {
ANI_CLI_PLAYER = "mpv"; ANI_CLI_PLAYER = "mpv";
}; };
file = {
".config/nixpkgs/config.nix".text = "{ allowUnfree = true; }";
};
}; };
} }

View File

@@ -1,6 +1,6 @@
{ {
imports = [ imports = [
./modules/hyprland ./modules/hyprland/default.nix
./modules/plasma ./modules/plasma/default.nix
]; ];
} }

View File

@@ -1,18 +0,0 @@
{ pkgs, ... }:
{
programs.emacs = {
enable = true;
package = pkgs.emacs-gtk;
extraPackages =
epkgs: with epkgs; [
doom
magit
minimap
rainbow-delimiters
company
company-tabnine
];
};
}

View File

@@ -4,10 +4,10 @@
enable = true; enable = true;
profiles.default = { profiles.default = {
extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [ extensions = with pkgs.nur.repos.rycee.firefox-addons; [
ublock-origin ublock-origin
private-relay private-relay
yomitan libredirect
reddit-enhancement-suite reddit-enhancement-suite
enhancer-for-youtube enhancer-for-youtube
@@ -46,9 +46,6 @@
"browser.translations.automaticallyPopup" = false; "browser.translations.automaticallyPopup" = false;
"browser.tabs.inTitlebar" = 0; "browser.tabs.inTitlebar" = 0;
"devtools.accessibility.enabled" = false;
"browser.eme.ui.enabled" = false;
"services.sync.engine.addons" = false; "services.sync.engine.addons" = false;
"toolkit.legacyUserProfileCustomizations.stylesheets" = true; "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
@@ -57,99 +54,61 @@
search = { search = {
force = true; force = true;
default = "ddg"; default = "DuckDuckGo";
engines = engines = let
let makeShortcuts = let
makeShortcuts = prefix = "@";
let in map (shortcut: prefix + shortcut);
prefix = "@";
in
map (shortcut: prefix + shortcut);
hideEngines = hideEngines = let
let hideEngine = engine: {
hideEngine = engine: { name = engine;
name = engine; value = {
value = { metaData.hidden = true;
metaData.hidden = true; };
};
};
in
engines: lib.listToAttrs (map hideEngine engines);
in
(hideEngines [
"google"
"bing"
"amazondotcom-us"
"ebay"
])
// {
"Arch Wiki" = {
urls = [ { template = "https://wiki.archlinux.org/index.php?search={searchTerms}"; } ];
icon = "https://wiki.archlinux.org/favicon.ico";
definedAliases = makeShortcuts [
"archlinux"
"aw"
];
};
"Nix Packages" = {
urls = [
{
template = "https://search.nixos.org/packages";
params = [
{
name = "type";
value = "packages";
}
{
name = "channel";
value = "unstable";
}
{
name = "query";
value = "{searchTerms}";
}
];
}
];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = makeShortcuts [
"nixpkgs"
"packages"
"np"
];
};
"NixOS Wiki" = {
urls = [ { template = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; } ];
icon = "https://wiki.nixos.org/favicon.png";
definedAliases = makeShortcuts [
"nixos"
"nw"
];
};
"MyNixOS" = {
urls = [ { template = "https://mynixos.com/search?q={searchTerms}"; } ];
icon = "https://mynixos.com/favicon-light.svg";
definedAliases = makeShortcuts [
"mynixos"
"mw"
];
};
"RuTracker" = {
urls = [ { template = "https://rutracker.org/forum/tracker.php?nm={searchTerms}"; } ];
icon = "https://rutracker.org/favicon.ico";
definedAliases = makeShortcuts [
"rutracker"
"rt"
];
}; };
in engines: lib.listToAttrs (map hideEngine engines);
in (hideEngines [ "Google" "Bing" "Amazon.com" "eBay" ]) //
{
"Arch Wiki" = {
urls = [{ template = "https://wiki.archlinux.org/index.php?search={searchTerms}"; }];
iconUpdateURL = "https://wiki.archlinux.org/favicon.ico";
definedAliases = makeShortcuts [ "archlinux" "aw" ];
}; };
"Nix Packages" = {
urls = [{
template = "https://search.nixos.org/packages";
params = [
{ name = "type"; value = "packages"; }
{ name = "channel"; value = "unstable"; }
{ name = "query"; value = "{searchTerms}"; }
];
}];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = makeShortcuts [ "nixpkgs" "packages" "np" ];
};
"NixOS Wiki" = {
urls = [{ template = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; }];
iconUpdateURL = "https://wiki.nixos.org/favicon.png";
definedAliases = makeShortcuts [ "nixos" "nw" ];
};
"MyNixOS" = {
urls = [{ template = "https://mynixos.com/search?q={searchTerms}"; }];
iconUpdateURL = "https://mynixos.com/favicon-light.svg";
definedAliases = makeShortcuts [ "mynixos" "mw" ];
};
"RuTracker" = {
urls = [{ template = "https://rutracker.org/forum/tracker.php?nm={searchTerms}"; }];
iconUpdateURL = "https://rutracker.org/favicon.ico";
definedAliases = makeShortcuts [ "rutracker" "rt" ];
};
};
}; };
}; };
@@ -167,7 +126,7 @@
EmailTracking = true; EmailTracking = true;
Fingerprinting = true; Fingerprinting = true;
Exceptions = [ ]; Exceptions = [];
}; };
FirefoxHome = { FirefoxHome = {

View File

@@ -5,8 +5,7 @@
lib, lib,
... ...
}: }:
let let genFlatList = f: n: builtins.concatLists (builtins.genList f n);
genFlatList = f: n: builtins.concatLists (builtins.genList f n);
in in
{ {
programs.kitty = { programs.kitty = {
@@ -51,28 +50,26 @@ in
}; };
}; };
bind = bind = [
[ "SUPER, Return, exec, kitty"
"SUPER, Return, exec, kitty" "SUPER SHIFT, Q, exit"
"SUPER SHIFT, Q, exit"
"SUPER, V, togglefloating" "SUPER, V, togglefloating"
"SUPER, J, togglesplit" "SUPER, J, togglesplit"
"SUPER, P, pseudo" "SUPER, P, pseudo"
"ALT CTRL, left, workspace, -1" "ALT CTRL, left, workspace, -1"
"ALT CTRL, right, workspace, +1" "ALT CTRL, right, workspace, +1"
] ] ++ (
++ (genFlatList ( genFlatList
x: ( x: let n = toString (x + 1);
let
n = toString (x + 1);
in in
[ [ "SUPER, ${n}, workspace, ${n}"
"SUPER, ${n}, workspace, ${n}"
"SUPER SHIFT, ${n}, movetoworkspace, ${n}" "SUPER SHIFT, ${n}, movetoworkspace, ${n}"
] ]
) 9); )
9
);
}; };
}; };
} }

View File

@@ -1,7 +1,5 @@
{ {
programs.nixvim = { config = {
enable = true;
colorschemes.nightfox = { colorschemes.nightfox = {
enable = true; enable = true;
flavor = "nordfox"; flavor = "nordfox";
@@ -14,31 +12,29 @@
copilot-lua = { copilot-lua = {
enable = true; enable = true;
settings = { suggestion.autoTrigger = true;
suggestion.autoTrigger = true; suggestion.keymap = {
suggestion.keymap = { accept = "<M-a>";
accept = "<M-a>"; acceptLine = "<M-l>";
acceptLine = "<M-l>"; acceptWord = "<M-w>";
acceptWord = "<M-w>";
};
}; };
}; };
}; };
keymaps = [ keymaps = [
{ {
mode = "n"; mode = "n";
key = ";"; key = ";";
action = ":"; action = ":";
} }
{ {
mode = "n"; mode = "n";
key = "<Esc>"; key = "<Esc>";
action = "<Cmd>nohlsearch<CR>"; action = "<Cmd>nohlsearch<CR>";
options = { options = {
silent = true; silent = true;
}; };
} }
]; ];
}; };
} }

View File

@@ -3,7 +3,7 @@
enable = true; enable = true;
nethack_options = { nethack_options = {
windowtype = "curses"; windowtype = "curses";
align_message = "top"; align_message = "bottom";
msg_window = "reverse"; msg_window = "reverse";
msghistory = 1000; msghistory = 1000;
statuslines = 3; statuslines = 3;
@@ -24,30 +24,48 @@
autopickup = true; autopickup = true;
pickup_burden = "B"; pickup_burden = "B";
disclose = "+iagcvo"; disclose = "+iagcvo";
sortloot = "none"; sortloot = "full";
runmode = "walk"; runmode = "crawl";
boulder = "0"; boulder = "0";
gender = "male"; gender = "male";
pickup_types = ''$!=/?''; };
choose_options = {
wizard.nethack_options = {
race = "elf";
role = "wizard";
pickup_types = ''$!="+?'';
};
tourist.nethack_options = {
role = "tourist";
pickup_types = ''$!="+?'';
};
caveman.nethack_options = {
race = "dwarf";
role = "caveman";
pickup_types = ''$!=%"?()'';
};
}; };
hilite_status = { hilite_status = {
hitpoints = { hitpoints = {
"100%" = "grey"; "100%" = "grey";
"<100%" = "green"; "<100%" = "green";
"<66%" = "yellow"; "<66%" = "yellow";
"<50%" = "orange"; "<50%" = "orange";
"<33%" = "red&bold"; "<33%" = "red&bold";
"<15%" = "red&inverse"; "<15%" = "red&inverse";
}; };
power = { power = {
"100%" = "grey"; "100%" = "grey";
"<100%" = "green"; "<100%" = "green";
"<66%" = "yellow"; "<66%" = "yellow";
"<50%" = "orange"; "<50%" = "orange";
"<33%" = "red&bold"; "<33%" = "red&bold";
}; };
cap = { cap = {
@@ -89,40 +107,40 @@
msg_types = { msg_types = {
stop = [ stop = [
"The .* (grabs|swings itself around) you!" "The .* (grabs|swings itself around) you!"
"You don't feel very well." "You don't feel very well."
"You are turning a little green." "You are turning a little green."
"Your limbs are getting oozy." "Your limbs are getting oozy."
"Your skin begins to peel away." "Your skin begins to peel away."
"You are turning into a green slime." "You are turning into a green slime."
"You are slowing down." "You are slowing down."
"Your limbs are stiffening." "Your limbs are stiffening."
"It constricts your throat!" "It constricts your throat!"
"You find it hard to breathe." "You find it hard to breathe."
"You're gasping for air." "You're gasping for air."
"Your blood is having trouble reaching your brain." "Your blood is having trouble reaching your brain."
"You can no longer breathe." "You can no longer breathe."
"You're turning blue." "You're turning blue."
"You faint from lack of food" "You faint from lack of food"
"Your consciousness is fading." "Your consciousness is fading."
"You regain consciousness" "You regain consciousness"
"You feel weak" "You feel weak"
"You feel weak now" "You feel weak now"
"You are beginning to feel weak" "You are beginning to feel weak"
"You feel deathly sick" "You feel deathly sick"
"You feel (much|even) worse" "You feel (much|even) worse"
"You feel more confident " "You feel more confident "
"You only feel hungry now" "You only feel hungry now"
" needs food, badly!" " needs food, badly!"
"You feel hungry" "You feel hungry"
"You are beginning to feel hungry" "You are beginning to feel hungry"
"You are getting the munchies" "You are getting the munchies"
"You still have the munchies" "You still have the munchies"
"The munchies are interfering with your motor capabilities" "The munchies are interfering with your motor capabilities"
"You now have a lesser case of the munchies" "You now have a lesser case of the munchies"
]; ];
hide = [ hide = [
"You swap places with .*" "You swap places with .*"
@@ -199,21 +217,17 @@
"(mud|buckled|riding|snow|hiking|combat|jungle) boots" = "magenta"; "(mud|buckled|riding|snow|hiking|combat|jungle) boots" = "magenta";
" (Dragonbane|Fire Brand|Frost Brand|Ogresmasher|Trollsbane|Werebane)" = "lightgreen"; " (Dragonbane|Fire Brand|Frost Brand|Ogresmasher|Trollsbane|Werebane)" = "lightgreen";
" (Demonbane|Excalibur|Grayswandir|Snickersnee|Sunsword)" = "lightgreen"; " (Demonbane|Excalibur|Grayswandir|Snickersnee|Sunsword)" = "lightgreen";
" (Orb of Detection|Sceptre of Might|Magic Mirror of Merlin|Mitre of Holiness|Tsurugi of Muramasa)" = " (Orb of Detection|Sceptre of Might|Magic Mirror of Merlin|Mitre of Holiness|Tsurugi of Muramasa)" = "lightgreen";
"lightgreen";
" (Cleaver|Giantslayer|Magicbane|Mjollnir|Vorpal Blade)" = "lightgreen"; " (Cleaver|Giantslayer|Magicbane|Mjollnir|Vorpal Blade)" = "lightgreen";
" (Heart of Ahriman|Staff of Aesculapius|Eyes of the Overworld|Platinum Yendorian Express Card|Orb of Fate|Eye of the Aethiopica)" = " (Heart of Ahriman|Staff of Aesculapius|Eyes of the Overworld|Platinum Yendorian Express Card|Orb of Fate|Eye of the Aethiopica)" = "lightgreen";
"lightgreen";
" (Grimtooth|Orcrist|Sting|Stormbringer)" = "lightgreen"; " (Grimtooth|Orcrist|Sting|Stormbringer)" = "lightgreen";
" (Longbow of Diana|Master Key of Thievery)" = "lightgreen"; " (Longbow of Diana|Master Key of Thievery)" = "lightgreen";
" (Bell of Opening|silver bell|Candelabrum of Invocation|candelabrum|Book of the Dead|papyrus spellbook)" = " (Bell of Opening|silver bell|Candelabrum of Invocation|candelabrum|Book of the Dead|papyrus spellbook)" = "magenta&bold";
"magenta&bold";
" Amulet of Yendor named" = "magenta&bold"; " Amulet of Yendor named" = "magenta&bold";
" cursed.* bag .* holding" = "red&bold"; " cursed.* bag .* holding" = "red&bold";
" cursed.* luck(stone)?($| )" = "red&bold"; " cursed.* luck(stone)?($| )" = "red&bold";
" cursed.* unicorn horn" = "red&bold"; " cursed.* unicorn horn" = "red&bold";
" cursed.* (Bell of Opening|silver bell|Candelabrum of Invocation|candelabrum|Book of the Dead|papyrus spellbook)" = " cursed.* (Bell of Opening|silver bell|Candelabrum of Invocation|candelabrum|Book of the Dead|papyrus spellbook)" = "red&bold";
"red&bold";
"cursed tins? .* spinach|tins? .* spinach .* (cursed|C($| ))" = "red"; "cursed tins? .* spinach|tins? .* spinach .* (cursed|C($| ))" = "red";
" load(stone)?($| )" = "red&underline"; " load(stone)?($| )" = "red&underline";
" bag .* tricks" = "blue&underline"; " bag .* tricks" = "blue&underline";
@@ -222,10 +236,8 @@
" gold piece" = "yellow"; " gold piece" = "yellow";
" valuable" = "brown"; " valuable" = "brown";
" gems? .* hard" = "yellow"; " gems? .* hard" = "yellow";
" ([0-9]+|an?|gems? .*) (uncursed |cursed |blessed )?(dilithium|opal|garnet|jasper|agate|jet|obsidian|jade|citrine|chrysoberyl|amber|amethyst|fluorite|turquoise)(e?s)?( stones?| gems?| crystals?)?( named .*)?$" = " ([0-9]+|an?|gems? .*) (uncursed |cursed |blessed )?(dilithium|opal|garnet|jasper|agate|jet|obsidian|jade|citrine|chrysoberyl|amber|amethyst|fluorite|turquoise)(e?s)?( stones?| gems?| crystals?)?( named .*)?$" = "brown";
"brown"; " ([0-9]+|an?|gems?.*) (uncursed |cursed |blessed )?(diamond|rub(y|ies)|jacinth|sapphire|black opal|emerald|topaz|aquamarine)(e?s)?( stones?| gems?)?( named .*)?$" = "yellow";
" ([0-9]+|an?|gems?.*) (uncursed |cursed |blessed )?(diamond|rub(y|ies)|jacinth|sapphire|black opal|emerald|topaz|aquamarine)(e?s)?( stones?| gems?)?( named .*)?$" =
"yellow";
" 0%" = "white"; " 0%" = "white";
" [1-9]%" = "cyan"; " [1-9]%" = "cyan";
" [12][0-9]%" = "cyan"; " [12][0-9]%" = "cyan";

View File

@@ -1,10 +1,10 @@
{ lib, pkgs, ... }: { pkgs, ... }:
{ {
programs.firefox = { programs.firefox = {
nativeMessagingHosts = [ pkgs.kdePackages.plasma-browser-integration ]; nativeMessagingHosts = [ pkgs.plasma-browser-integration ];
profiles.default = { profiles.default = {
extensions.packages = [ pkgs.nur.repos.rycee.firefox-addons.plasma-integration ]; extensions = [ pkgs.nur.repos.rycee.firefox-addons.plasma-integration ];
settings = { settings = {
"widget.use-xdg-desktop-portal.file-picker" = 1; "widget.use-xdg-desktop-portal.file-picker" = 1;
@@ -13,21 +13,18 @@
}; };
}; };
services.kdeconnect.enable = true;
programs.plasma = { programs.plasma = {
enable = true; enable = true;
overrideConfig = true;
input.touchpads = [ input.touchpads = [{
{ enable = true;
enable = true; name = "SynPS/2 Synaptics TouchPad";
name = "SynPS/2 Synaptics TouchPad"; vendorId = "0002";
vendorId = "0002"; productId = "0007";
productId = "0007"; disableWhileTyping = false;
disableWhileTyping = false; naturalScroll = true;
naturalScroll = true; }];
}
];
kwin.edgeBarrier = 0; kwin.edgeBarrier = 0;
workspace = { workspace = {
@@ -41,57 +38,39 @@
panels = [ panels = [
{ {
screen = "all"; screen = "all";
floating = false; location = "bottom";
height = 44; hiding = "dodgewindows";
widgets = [
widgets = {
let kickoff.icon = "nix-snowflake-white";
kickoff = { }
kickoff.icon = "nix-snowflake-white"; "org.kde.plasma.pager"
{
iconTasks.launchers = [
"applications:systemsettings.desktop"
"applications:org.kde.dolphin.desktop"
"applications:firefox.desktop"
"applications:org.kde.konsole.desktop"
];
}
"org.kde.plasma.marginseparator"
{
systemTray = {};
}
{
digitalClock = {
date.format = "isoDate";
time.format = "24h";
time.showSeconds = "always";
calendar.firstDayOfWeek = "monday";
}; };
}
taskmanager = { "org.kde.plasma.showdesktop"
iconTasks.launchers = [ ];
"applications:systemsettings.desktop"
"applications:org.kde.dolphin.desktop"
"applications:firefox.desktop"
"applications:org.kde.konsole.desktop"
];
};
systray = {
systemTray.items.shown = [
"org.kde.plasma.battery"
];
};
digital-clock = {
digitalClock = {
date.format = "isoDate";
time.format = "24h";
date.position = "belowTime";
calendar.firstDayOfWeek = "monday";
};
};
workspaces = "org.kde.plasma.pager";
separator = "org.kde.plasma.panelspacer";
in
[
kickoff
workspaces
taskmanager
separator
digital-clock
separator
systray
];
} }
]; ];
window-rules = [ window-rules = [
{ {
description = "Konsole"; description = "Konsole";
@@ -146,12 +125,10 @@
kxkbrc.Layout = { kxkbrc.Layout = {
LayoutList = "us,ru"; LayoutList = "us,ru";
DisplayNames = ","; DisplayNames = ",";
VariantList = "symbolic,"; VariantList = ",";
Options = "caps:escape_shifted_capslock,grp:win_space_toggle"; Options = "caps:escape_shifted_capslock,grp:win_space_toggle";
ResetOldOptions = true; ResetOldOptions = true;
}; };
}; };
}; };
gtk.gtk2.force = true;
} }

View File

@@ -1,12 +0,0 @@
{
programs.thunderbird = {
enable = true;
settings = {
"privacy.donottrackheader.enabled" = true;
};
profiles.default = {
isDefault = true;
};
};
}

View File

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

View File

@@ -1,117 +0,0 @@
From 78a5f5d263c5209d685abbe657bbc5bd3f756994 Mon Sep 17 00:00:00 2001
From: tuckerrrrrrrrrr <tucker1014@hotmail.com>
Date: Sat, 14 Nov 2020 12:54:53 +0100
Subject: [PATCH] Conversion to PDF
Add the ability to convert presentations to PDF. Adds an additional
dependency: cairo.
---
config.def.h | 1 +
config.mk | 7 +++++--
sent.c | 42 ++++++++++++++++++++++++++++++++++++++----
3 files changed, 44 insertions(+), 6 deletions(-)
diff --git a/config.def.h b/config.def.h
index 60eb376..e68a099 100644
--- a/config.def.h
+++ b/config.def.h
@@ -47,6 +47,7 @@ static Shortcut shortcuts[] = {
{ XK_n, advance, {.i = +1} },
{ XK_p, advance, {.i = -1} },
{ XK_r, reload, {0} },
+ { XK_g, pdf, {0} },
};
static Filter filters[] = {
diff --git a/config.mk b/config.mk
index d61c554..9174687 100644
--- a/config.mk
+++ b/config.mk
@@ -7,14 +7,17 @@ VERSION = 1
PREFIX = /usr/local
MANPREFIX = ${PREFIX}/share/man
+PKG_CONFIG = pkg-config
+
X11INC = /usr/X11R6/include
X11LIB = /usr/X11R6/lib
# includes and libs
INCS = -I. -I/usr/include -I/usr/include/freetype2 -I${X11INC}
-LIBS = -L/usr/lib -lc -lm -L${X11LIB} -lXft -lfontconfig -lX11
+LIBS = -L/usr/lib -lc -lm -L${X11LIB} -lXft -lfontconfig -lX11 -lcairo
# OpenBSD (uncomment)
-#INCS = -I. -I${X11INC} -I${X11INC}/freetype2
+INCS = -I. -I${X11INC} -I${X11INC}/freetype2 `${PKG_CONFIG} --cflags cairo`
+LIBS += -L/usr/local/lib
# FreeBSD (uncomment)
#INCS = -I. -I/usr/local/include -I/usr/local/include/freetype2 -I${X11INC}
#LIBS = -L/usr/local/lib -lc -lm -L${X11LIB} -lXft -lfontconfig -lX11
diff --git a/sent.c b/sent.c
index 9534fca..dc5cf89 100644
--- a/sent.c
+++ b/sent.c
@@ -19,6 +19,10 @@
#include <X11/Xutil.h>
#include <X11/Xft/Xft.h>
+#include <cairo/cairo.h>
+#include <cairo/cairo-xlib.h>
+#include <cairo/cairo-pdf.h>
+
#include "arg.h"
#include "util.h"
#include "drw.h"
@@ -97,6 +101,7 @@ static void cleanup(int slidesonly);
static void reload(const Arg *arg);
static void load(FILE *fp);
static void advance(const Arg *arg);
+static void pdf();
static void quit(const Arg *arg);
static void resize(int width, int height);
static void run();
@@ -479,6 +480,42 @@ advance(const Arg *arg)
}
}
+void
+pdf()
+{
+ const Arg next = { .i = 1 };
+ Arg first;
+ cairo_surface_t *cs;
+
+ if (!fname)
+ fname = "slides";
+
+ char filename[strlen(fname) + 5];
+ sprintf(filename, "%s.pdf", fname);
+ cairo_surface_t *pdf = cairo_pdf_surface_create(filename, xw.w, xw.h);
+
+ cairo_t *cr = cairo_create(pdf);
+
+ first.i = -idx;
+ advance(&first);
+
+ cs = cairo_xlib_surface_create(xw.dpy, xw.win, xw.vis, xw.w, xw.h);
+ cairo_set_source_surface(cr, cs, 0.0, 0.0);
+ for (int i = 0; i < slidecount; ++i) {
+ cairo_paint(cr);
+ cairo_show_page(cr);
+ cairo_surface_flush(cs);
+ advance(&next);
+ cairo_surface_mark_dirty(cs);
+ }
+ cairo_surface_destroy(cs);
+
+ cairo_destroy(cr);
+ cairo_surface_destroy(pdf);
+ first.i = -(slidecount-1);
+ advance(&first);
+}
+
void
quit(const Arg *arg)
{
--
2.29.2

View File

@@ -1,13 +0,0 @@
{ lib, pkgs, ... }:
{
imports = [
./modules/plasma
];
home = {
packages = lib.mkAfter [ pkgs.discord ];
file = {
".config/discord/settings.json".text = ''{ "SKIP_HOST_UPDATE": true }'';
};
};
}

View File

@@ -1,37 +1,36 @@
{ { inputs, config, pkgs, lib, ... }:
inputs, let flakeInputs = lib.filterAttrs (_: lib.isType "flake") inputs;
config,
pkgs,
lib,
...
}:
let
flakeInputs = lib.filterAttrs (_: lib.isType "flake") inputs;
in in
{ {
# Bootloader # Bootloader
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
boot.loader.grub.device = lib.mkDefault "/dev/sda"; boot.loader.grub.device = "/dev/sda";
# Networking # Networking
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
networking.firewall = rec {
allowedTCPPortRanges = [
{
from = 1714;
to = 1764;
}
];
allowedUDPPortRanges = allowedTCPPortRanges;
};
services.openssh.enable = true; services.openssh.enable = true;
services.tailscale.enable = true;
# Router shared filesystem
fileSystems."/home/andrey/Public" = {
device = "root@192.168.2.1:/mnt/sda1";
fsType = "sshfs";
options = [
"nodev"
"noatime"
"allow_other"
"reconnect"
"IdentityFile=/home/andrey/.ssh/id_ed25519"
];
};
# l10n and i8n # l10n and i8n
time.timeZone = "Europe/Riga"; time.timeZone = "Europe/Riga";
i18n.defaultLocale = "en_US.UTF-8"; i18n.defaultLocale = "en_US.UTF-8";
# Editor # Editor
programs.neovim = { programs.neovim = {
enable = true; enable = true;
@@ -40,15 +39,12 @@ in
defaultEditor = true; defaultEditor = true;
}; };
# Nix # Nix
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
nix = { nix = {
settings = { settings = {
trusted-users = [ "andrey" ]; experimental-features = [ "nix-command" "flakes" ];
experimental-features = [
"nix-command"
"flakes"
];
flake-registry = ""; flake-registry = "";
nix-path = config.nix.nixPath; nix-path = config.nix.nixPath;
}; };
@@ -58,76 +54,43 @@ in
nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs; nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;
}; };
# Users # Users
users.mutableUsers = false; users.mutableUsers = false;
users.users.andrey = { users.users.andrey = {
isNormalUser = true; isNormalUser = true;
initialHashedPassword = "$y$j9T$mGZT4otEkrc94e.Ile.P20$BoxfgxCiacs.tYoEp7S5AjcP.aMUBrsaCJYJkBot635"; initialHashedPassword = "$y$j9T$mGZT4otEkrc94e.Ile.P20$BoxfgxCiacs.tYoEp7S5AjcP.aMUBrsaCJYJkBot635";
extraGroups = [ extraGroups = [ "wheel" "cdrom" "networkmanager" "audio" "dialout" "scanner" "lp" ];
"wheel"
"cdrom"
"networkmanager"
"audio"
"dialout"
"scanner"
"lp"
"adbusers"
];
}; };
security.sudo.execWheelOnly = true; security.sudo.execWheelOnly = true;
security.sudo.wheelNeedsPassword = false; security.sudo.wheelNeedsPassword = false;
# Printers and scanners # Printers and scanners
hardware.sane.enable = true; hardware.sane.enable = true;
services.printing.enable = true; services.printing.enable = true;
services.printing.drivers = [ pkgs.cnijfilter2 ];
programs.system-config-printer.enable = true; programs.system-config-printer.enable = true;
services.avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
};
# Distcc
services.distccd = {
enable = true;
allowedClients = [ "192.168.0.0/24" ];
stats.enable = true;
};
# Programs # Programs
programs = { programs = {
git = { git = {
enable = true; enable = true;
config = { config = {
init.defaultBranch = "master"; init.defaultBranch = "master";
url."https://github.com/".insteadOf = [ url."https://github.com/".insteadOf = [ "gh:" "github:" ];
"gh:" url."https://git.psf.lt/".insteadOf = [ "psf:" "gitea:" ];
"github:"
];
url."https://git.psf.lt/".insteadOf = [
"psf:"
"gitea:"
];
}; };
}; };
}; };
# Packages # Packages
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
alsa-utils alsa-utils
libextractor
file
unzip
]; ];
hardware.bluetooth = {
enable = true;
settings.General.Enable = "Source,Sink,Media,Socket";
};
# Xorg # Xorg
security.rtkit.enable = true; security.rtkit.enable = true;
@@ -147,11 +110,4 @@ in
tappingDragLock = false; tappingDragLock = false;
}; };
}; };
fonts.packages = with pkgs; [
noto-fonts-cjk-sans
noto-fonts-cjk-serif
nerd-fonts.fira-code
];
} }

View File

@@ -1,6 +1,4 @@
{ {
services.distccd.maxJobs = 4;
services = { services = {
desktopManager.plasma6.enable = true; desktopManager.plasma6.enable = true;
displayManager.sddm = { displayManager.sddm = {

View File

@@ -1,22 +0,0 @@
{
services.distccd.maxJobs = 4;
boot.loader = {
efi = {
canTouchEfiVariables = true;
efiSysMountPoint = "/boot/efi";
};
grub = {
efiSupport = true;
device = "nodev";
};
};
services = {
desktopManager.plasma6.enable = true;
displayManager.sddm = {
enable = true;
wayland.enable = true;
};
};
}

View File

@@ -1,5 +1,4 @@
{ {
services.distccd.maxJobs = 8;
console.keyMap = "no"; console.keyMap = "no";
services = { services = {

View File

@@ -1,38 +0,0 @@
{ lib, pkgs, ... }:
{
boot.loader = {
efi = {
canTouchEfiVariables = true;
efiSysMountPoint = "/boot/efi";
};
grub = {
efiSupport = true;
device = "nodev";
};
};
hardware.graphics.extraPackages = with pkgs; [
intel-media-driver
intel-compute-runtime
intel-media-sdk
];
virtualisation.docker.enable = true;
users.users.andrey.extraGroups = lib.mkAfter [ "docker" ];
services = {
desktopManager.plasma6.enable = true;
displayManager.sddm = {
enable = true;
wayland.enable = true;
};
};
fonts.packages = lib.mkAfter (
with pkgs;
[
vistafonts
corefonts
]
);
}